From b095624c0497ede28d61b238cb196b7abc0e1149 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Sun, 21 Aug 2022 19:02:11 +0800 Subject: [PATCH 1/5] Refactor the app, fix bugs and add tests. ## Updated - Added a `Sequence Number` setting: `Displayed` or `NOT Displayed`, default to `NOT Displayed`. - Optimized the display of amount. (ex. `10000000 XLM` -> `10,000,000 XLM`) - Optimized the display of offer price. - Optimize the display of `Memo Text` and `Manage Data Value`, if they are printable ASCII characters, they will be printed directly, otherwise display the base64 encoded summary. - In some common operations, the prompt for the operation type was removed. - Other UX improvements. - Other bugfixes. - Refactored this app based on [app-boilerplate](https://github.com/ledgerhq/app-boilerplate). - Refactored unit tests and added full e2e tests. - Added APDU documentation. ## Breaking changes - Removed keypair validation in `GET_PUBLIC_KEY` command. If necessary, we recommend that you ask the user to confirm the address on the device. - Removed support for the `KEEP_ALIVE` command at the app layer. --- .clang-format | 1 - .clusterfuzzlite/build.sh | 8 +- .devcontainer/Dockerfile | 7 + .devcontainer/devcontainer.json | 66 + .github/workflows/cflite_batch.yml | 1 - .github/workflows/cflite_pr.yml | 1 - .github/workflows/ci-workflow.yml | 200 +- .github/workflows/lint-workflow.yml | 19 +- .github/workflows/swap-ci-workflow.yml | 162 + .gitignore | 27 +- .vscode/c_cpp_properties.json | 20 +- .vscode/settings.json | 5 +- .vscode/tasks.json | 26 +- LICENSE | 16 +- Makefile | 50 +- README.md | 81 +- blue_app_stellar.gif | Bin 1662 -> 0 bytes build_elfs.sh | 44 + docs/APDU.md | 28 + docs/COMMANDS.md | 90 + docs/TRANSACTION.md | 9 + fuzz/CMakeLists.txt | 65 + fuzz/README.md | 21 + fuzz/build.sh | 13 - fuzz/fuzz_tx.c | 32 + fuzz/run.sh | 11 - glyphs/icon_warning.gif | Bin 85 -> 1130 bytes .../nanos_app_stellar.gif | Bin .../nanox_app_stellar.gif | Bin release-notes.md | 19 + src/apdu/apdu_parser.c | 63 + src/apdu/apdu_parser.h | 22 + src/apdu/dispatcher.c | 82 + src/apdu/dispatcher.h | 31 + src/common/base32.c | 94 + src/common/base32.h | 33 + src/common/base58.c | 155 + src/common/base58.h | 52 + src/common/bip32.c | 87 + src/common/bip32.h | 47 + src/common/buffer.c | 165 + src/common/buffer.h | 192 + src/common/format.c | 157 + src/common/format.h | 69 + src/common/macros.h | 6 + src/common/read.c | 64 + src/common/read.h | 82 + src/common/varint.c | 101 + src/common/varint.h | 52 + src/common/write.c | 64 + src/common/write.h | 82 + src/crypto.c | 119 + src/crypto.h | 58 + src/globals.c | 18 + src/globals.h | 58 + src/handler/get_app_configuration.c | 49 + src/handler/get_public_key.c | 60 + src/handler/handler.h | 57 + src/handler/sign_transaction.c | 103 + src/handler/sign_transaction_hash.c | 57 + src/io.c | 144 + src/io.h | 57 + src/main.c | 346 +- src/send_reponse.c | 33 + src/send_response.h | 21 + src/settings.h | 30 + src/stellar.c | 368 - src/stellar_api.h | 171 - src/stellar_format.c | 1619 --- src/stellar_format.h | 43 - src/stellar_nvram.c | 20 - src/stellar_parser.c | 1026 -- src/stellar_ram.c | 32 - src/stellar_types.h | 669 -- src/stellar_utils.c | 495 - src/stellar_ux.h | 46 - src/stellar_ux_common.c | 55 - src/stellar_ux_nanox.c | 344 - src/stellar_vars.h | 38 - src/sw.h | 96 + src/swap/handle_check_address.c | 33 +- src/swap/handle_get_printable_amount.c | 8 +- src/swap/handle_swap_sign_transaction.c | 29 +- src/swap/swap_check.c | 69 +- src/swap/swap_lib_calls.c | 2 +- src/swap/swap_lib_calls.h | 20 +- src/transaction/transaction_formatter.c | 1769 ++++ src/transaction/transaction_formatter.h | 27 + src/transaction/transaction_parser.c | 1036 ++ src/transaction/transaction_parser.h | 4 + src/transaction/transaction_types.h | 549 + src/types.h | 137 + src/ui/action/validate.c | 53 + src/ui/action/validate.h | 21 + src/ui/ui.h | 39 + src/ui/ui_address.c | 80 + src/ui/ui_menu.c | 126 + src/ui/ui_transaction.c | 169 + src/ui/ui_transaction_hash.c | 201 + src/utils.c | 519 + src/utils.h | 74 + stellar.png | Bin 1997 -> 0 bytes tests/CMakeLists.txt | 63 - tests/README.md | 37 - tests/automation.json | 113 - tests/conftest.py | 16 - tests/functional_test.py | 116 - tests/include/bolos_target.h | 5 - tests/include/os.h | 27 - tests/include/os_io_seproxyhal.h | 7 - tests/requirements.txt | 4 - tests/src/fuzz_tx.c | 35 - tests/src/test_printers.c | 264 - tests/src/test_swap.c | 70 - tests/src/test_tx.c | 199 - .../feeBumpTxFeeSourceEqualSigner.raw | Bin 308 -> 0 bytes .../feeBumpTxFeeSourceEqualSigner.txt | 12 - ...BumpTxFeeSourceMuxedAccountEqualSigner.raw | Bin 316 -> 0 bytes ...BumpTxFeeSourceMuxedAccountEqualSigner.txt | 12 - .../feeBumpTxInnerSourceEqualSigner.raw | Bin 308 -> 0 bytes .../feeBumpTxInnerSourceEqualSigner.txt | 12 - tests/testcases/feeBumpTxSimple.raw | Bin 308 -> 0 bytes tests/testcases/feeBumpTxSimple.txt | 12 - .../feeBumpTxSimpleMuxedFeeSource.raw | Bin 320 -> 0 bytes .../feeBumpTxSimpleMuxedFeeSource.txt | 12 - tests/testcases/txAccountMerge.raw | Bin 164 -> 0 bytes tests/testcases/txAccountMerge.txt | 8 - .../txAccountMergeMuxedDestination.raw | Bin 172 -> 0 bytes .../txAccountMergeMuxedDestination.txt | 8 - tests/testcases/txAllowTrustAuthorized.raw | Bin 172 -> 0 bytes tests/testcases/txAllowTrustAuthorized.txt | 9 - ...owTrustAuthorizedToMaintainLiabilities.raw | Bin 180 -> 0 bytes ...owTrustAuthorizedToMaintainLiabilities.txt | 9 - tests/testcases/txAllowTrustUnauthorized.raw | Bin 172 -> 0 bytes tests/testcases/txAllowTrustUnauthorized.txt | 9 - .../txBeginSponsoringFutureReserves.raw | Bin 144 -> 0 bytes .../txBeginSponsoringFutureReserves.txt | 6 - tests/testcases/txBumpSequence.raw | Bin 112 -> 0 bytes tests/testcases/txBumpSequence.txt | 6 - tests/testcases/txChangeOffer.raw | Bin 180 -> 0 bytes tests/testcases/txChangeOffer.txt | 9 - tests/testcases/txChangeTrust.raw | Bin 160 -> 0 bytes tests/testcases/txChangeTrust.txt | 6 - .../txChangeTrustLiquidityPoolAsset.raw | Bin 184 -> 0 bytes .../txChangeTrustLiquidityPoolAsset.txt | 10 - tests/testcases/txClaimClaimableBalance.raw | Bin 144 -> 0 bytes tests/testcases/txClaimClaimableBalance.txt | 6 - tests/testcases/txClawback.raw | Bin 204 -> 0 bytes tests/testcases/txClawback.txt | 7 - .../testcases/txClawbackClaimableBalance.raw | Bin 144 -> 0 bytes .../testcases/txClawbackClaimableBalance.txt | 6 - tests/testcases/txClawbackMuxedFrom.raw | Bin 212 -> 0 bytes tests/testcases/txClawbackMuxedFrom.txt | 7 - tests/testcases/txCondExtraSigners.raw | Bin 288 -> 0 bytes tests/testcases/txCondExtraSigners.txt | 7 - tests/testcases/txCondFull.raw | Bin 364 -> 0 bytes tests/testcases/txCondFull.txt | 14 - tests/testcases/txCondLedgerBounds.raw | Bin 192 -> 0 bytes tests/testcases/txCondLedgerBounds.txt | 9 - .../testcases/txCondLedgerBoundsMaxIsZero.raw | Bin 192 -> 0 bytes .../testcases/txCondLedgerBoundsMaxIsZero.txt | 8 - .../testcases/txCondLedgerBoundsMinIsZero.raw | Bin 192 -> 0 bytes .../testcases/txCondLedgerBoundsMinIsZero.txt | 8 - tests/testcases/txCondMinSeqAge.raw | Bin 184 -> 0 bytes tests/testcases/txCondMinSeqAge.txt | 8 - tests/testcases/txCondMinSeqLedgerGap.raw | Bin 184 -> 0 bytes tests/testcases/txCondMinSeqLedgerGap.txt | 8 - tests/testcases/txCondMinSeqNum.raw | Bin 192 -> 0 bytes tests/testcases/txCondMinSeqNum.txt | 8 - tests/testcases/txCondTimeBounds.raw | Bin 172 -> 0 bytes tests/testcases/txCondTimeBounds.txt | 9 - tests/testcases/txCondTimeBoundsMaxIsZero.raw | Bin 172 -> 0 bytes tests/testcases/txCondTimeBoundsMaxIsZero.txt | 8 - tests/testcases/txCondTimeBoundsMinIsZero.raw | Bin 172 -> 0 bytes tests/testcases/txCondTimeBoundsMinIsZero.txt | 8 - tests/testcases/txCondWithoutLedgerBounds.raw | Bin 356 -> 0 bytes tests/testcases/txCondWithoutLedgerBounds.txt | 12 - tests/testcases/txCreateAccount.raw | Bin 152 -> 0 bytes tests/testcases/txCreateAccount.txt | 7 - .../txCreateClaimableBalancePredicateAnd.raw | Bin 204 -> 0 bytes .../txCreateClaimableBalancePredicateAnd.txt | 7 - ...eateClaimableBalancePredicateBeforeAbs.raw | Bin 216 -> 0 bytes ...eateClaimableBalancePredicateBeforeAbs.txt | 7 - ...eateClaimableBalancePredicateBeforeRel.raw | Bin 176 -> 0 bytes ...eateClaimableBalancePredicateBeforeRel.txt | 7 - ...ClaimableBalancePredicateMultiClaimant.raw | Bin 212 -> 0 bytes ...ClaimableBalancePredicateMultiClaimant.txt | 7 - .../txCreateClaimableBalancePredicateNot.raw | Bin 184 -> 0 bytes .../txCreateClaimableBalancePredicateNot.txt | 7 - .../txCreateClaimableBalancePredicateOr.raw | Bin 196 -> 0 bytes .../txCreateClaimableBalancePredicateOr.txt | 7 - ...ClaimableBalancePredicateUnconditional.raw | Bin 168 -> 0 bytes ...ClaimableBalancePredicateUnconditional.txt | 7 - tests/testcases/txCreateOffer.raw | Bin 180 -> 0 bytes tests/testcases/txCreateOffer.txt | 9 - tests/testcases/txCreateOffer2.raw | Bin 180 -> 0 bytes tests/testcases/txCreateOffer2.txt | 9 - tests/testcases/txCustomAsset12.raw | Bin 204 -> 0 bytes tests/testcases/txCustomAsset12.txt | 6 - tests/testcases/txCustomAsset4.raw | Bin 196 -> 0 bytes tests/testcases/txCustomAsset4.txt | 6 - .../txEndSponsoringFutureReserves.raw | Bin 108 -> 0 bytes .../txEndSponsoringFutureReserves.txt | 5 - tests/testcases/txInflation.raw | Bin 140 -> 0 bytes tests/testcases/txInflation.txt | 6 - tests/testcases/txLiquidityPoolDeposit.raw | Bin 172 -> 0 bytes tests/testcases/txLiquidityPoolDeposit.txt | 10 - tests/testcases/txLiquidityPoolWithdraw.raw | Bin 164 -> 0 bytes tests/testcases/txLiquidityPoolWithdraw.txt | 9 - tests/testcases/txManageBuyOffer.raw | Bin 200 -> 0 bytes tests/testcases/txManageBuyOffer.txt | 9 - tests/testcases/txMemoHash.raw | Bin 188 -> 0 bytes tests/testcases/txMemoHash.txt | 7 - tests/testcases/txMemoId.raw | Bin 164 -> 0 bytes tests/testcases/txMemoId.txt | 7 - tests/testcases/txMemoText.raw | Bin 172 -> 0 bytes tests/testcases/txMemoText.txt | 7 - tests/testcases/txMultiOp.raw | Bin 212 -> 0 bytes tests/testcases/txMultiOp.txt | 14 - tests/testcases/txMultiOpWithSource.raw | Bin 296 -> 0 bytes tests/testcases/txMultiOpWithSource.txt | 16 - tests/testcases/txOpSource.raw | Bin 200 -> 0 bytes tests/testcases/txOpSource.txt | 8 - .../testcases/txOpSourceMuxedDestination.raw | Bin 200 -> 0 bytes .../testcases/txOpSourceMuxedDestination.txt | 7 - tests/testcases/txPassiveOffer.raw | Bin 188 -> 0 bytes tests/testcases/txPassiveOffer.txt | 9 - .../testcases/txPathPaymentStrictReceive.raw | Bin 360 -> 0 bytes .../testcases/txPathPaymentStrictReceive.txt | 10 - .../txPathPaymentStrictReceiveEmptyPath.raw | Bin 272 -> 0 bytes .../txPathPaymentStrictReceiveEmptyPath.txt | 9 - ...thPaymentStrictReceiveMuxedDestination.raw | Bin 368 -> 0 bytes ...thPaymentStrictReceiveMuxedDestination.txt | 10 - tests/testcases/txPathPaymentStrictSend.raw | Bin 360 -> 0 bytes tests/testcases/txPathPaymentStrictSend.txt | 9 - .../txPathPaymentStrictSendEmptyPath.raw | Bin 272 -> 0 bytes .../txPathPaymentStrictSendEmptyPath.txt | 8 - ...xPathPaymentStrictSendMuxedDestination.raw | Bin 368 -> 0 bytes ...xPathPaymentStrictSendMuxedDestination.txt | 9 - tests/testcases/txPaymentMuxedDestination.raw | Bin 204 -> 0 bytes tests/testcases/txPaymentMuxedDestination.txt | 6 - tests/testcases/txRemoveData.raw | Bin 148 -> 0 bytes tests/testcases/txRemoveData.txt | 7 - tests/testcases/txRemoveOffer.raw | Bin 180 -> 0 bytes tests/testcases/txRemoveOffer.txt | 6 - tests/testcases/txRemoveTrust.raw | Bin 160 -> 0 bytes tests/testcases/txRemoveTrust.txt | 6 - .../txRemoveTrustLiquidityPoolAsset.raw | Bin 184 -> 0 bytes .../txRemoveTrustLiquidityPoolAsset.txt | 10 - .../testcases/txRevokeSponsorshipAccount.raw | Bin 152 -> 0 bytes .../testcases/txRevokeSponsorshipAccount.txt | 6 - .../txRevokeSponsorshipClaimableBalance.raw | Bin 152 -> 0 bytes .../txRevokeSponsorshipClaimableBalance.txt | 6 - tests/testcases/txRevokeSponsorshipData.raw | Bin 172 -> 0 bytes tests/testcases/txRevokeSponsorshipData.txt | 7 - .../txRevokeSponsorshipLiquidityPool.raw | Bin 148 -> 0 bytes .../txRevokeSponsorshipLiquidityPool.txt | 6 - tests/testcases/txRevokeSponsorshipOffer.raw | Bin 160 -> 0 bytes tests/testcases/txRevokeSponsorshipOffer.txt | 7 - ...evokeSponsorshipSignerEd25519PublicKey.raw | Bin 184 -> 0 bytes ...evokeSponsorshipSignerEd25519PublicKey.txt | 8 - .../txRevokeSponsorshipSignerHashX.raw | Bin 184 -> 0 bytes .../txRevokeSponsorshipSignerHashX.txt | 8 - .../txRevokeSponsorshipSignerPreAuth.raw | Bin 184 -> 0 bytes .../txRevokeSponsorshipSignerPreAuth.txt | 8 - .../txRevokeSponsorshipTrustLine.raw | Bin 204 -> 0 bytes .../txRevokeSponsorshipTrustLine.txt | 7 - ...okeSponsorshipTrustLineLiquidityPoolID.raw | Bin 188 -> 0 bytes ...okeSponsorshipTrustLineLiquidityPoolID.txt | 7 - tests/testcases/txSetAllOptions.raw | Bin 264 -> 0 bytes tests/testcases/txSetAllOptions.txt | 16 - tests/testcases/txSetData.raw | Bin 148 -> 0 bytes tests/testcases/txSetData.txt | 8 - tests/testcases/txSetOptionsEmptyBody.raw | Bin 144 -> 0 bytes tests/testcases/txSetOptionsEmptyBody.txt | 6 - tests/testcases/txSetOptionsNoSigner.raw | Bin 160 -> 0 bytes tests/testcases/txSetOptionsNoSigner.txt | 6 - .../txSetOptionsRemoveHomeDomain.raw | Bin 148 -> 0 bytes .../txSetOptionsRemoveHomeDomain.txt | 6 - tests/testcases/txSetSomeOptions.raw | Bin 252 -> 0 bytes tests/testcases/txSetSomeOptions.txt | 13 - tests/testcases/txSetTrustLineFlags.raw | Bin 204 -> 0 bytes tests/testcases/txSetTrustLineFlags.txt | 9 - tests/testcases/txSimple.raw | Bin 156 -> 0 bytes tests/testcases/txSimple.txt | 6 - tests/testcases/txSimpleMuxedSource.raw | Bin 164 -> 0 bytes tests/testcases/txSimpleMuxedSource.txt | 6 - .../txSourceEqualOpSourceEqualSigner.raw | Bin 192 -> 0 bytes .../txSourceEqualOpSourceEqualSigner.txt | 8 - tests/testcases/txSourceEqualSigner.raw | Bin 156 -> 0 bytes tests/testcases/txSourceEqualSigner.txt | 7 - .../txSourceMuxedAccountEqualSigner.raw | Bin 164 -> 0 bytes .../txSourceMuxedAccountEqualSigner.txt | 7 - tests_common_js/package-lock.json | 293 + tests_common_js/package.json | 34 + tests_common_js/src/index.ts | 2129 ++++ tests_common_js/tsconfig.json | 11 + tests_generate_binary/index.js | 47 + tests_generate_binary/package-lock.json | 43 + tests_generate_binary/package.json | 22 + tests_unit/CMakeLists.txt | 65 + tests_unit/README.md | 36 + tests_unit/gen_coverage.sh | 15 + tests_unit/mock_includes/bolos_target.h | 3 + .../include => tests_unit/mock_includes}/cx.h | 0 tests_unit/mock_includes/os.h | 8 + tests_unit/mock_includes/ux.h | 12 + tests_unit/test_swap.c | 73 + tests_unit/test_tx_formatter.c | 209 + tests_unit/test_tx_parser.c | 140 + tests_unit/test_utils.c | 384 + tests_unit/testcases/feeBumpTx.txt | 17 + .../feeBumpTxOmitFeeSourceEqualSigner.txt | 12 + .../feeBumpTxOmitFeeSourceNotEqualSigner.txt | 12 + ...feeBumpTxOmitMuxedFeeSourceEqualSigner.txt | 12 + .../testcases/feeBumpTxWithMuxedFeeSource.txt | 17 + tests_unit/testcases/opAccountMerge.txt | 9 + .../opAccountMergeWithMuxedDestination.txt | 9 + .../testcases/opAllowTrustAuthorize.txt | 10 + ...lowTrustAuthorizeToMaintainLiabilities.txt | 10 + .../testcases/opAllowTrustDeauthorize.txt | 10 + .../opBeginSponsoringFutureReserves.txt | 8 + tests_unit/testcases/opBumpSequence.txt | 8 + .../testcases/opChangeTrustAddTrustLine.txt | 8 + .../opChangeTrustRemoveTrustLine.txt | 7 + ...rustWithLiquidityPoolAssetAddTrustLine.txt | 11 + ...tWithLiquidityPoolAssetRemoveTrustLine.txt | 10 + .../testcases/opClaimClaimableBalance.txt | 8 + tests_unit/testcases/opClawback.txt | 9 + .../testcases/opClawbackClaimableBalance.txt | 8 + .../testcases/opClawbackWithMuxedFrom.txt | 9 + tests_unit/testcases/opCreateAccount.txt | 9 + .../testcases/opCreateClaimableBalance.txt | 9 + .../testcases/opCreatePassiveSellOffer.txt | 10 + .../opEndSponsoringFutureReserves.txt | 7 + tests_unit/testcases/opInflation.txt | 7 + .../testcases/opLiquidityPoolDeposit.txt | 12 + .../testcases/opLiquidityPoolWithdraw.txt | 11 + .../testcases/opManageBuyOfferCreate.txt | 10 + .../testcases/opManageBuyOfferDelete.txt | 7 + .../testcases/opManageBuyOfferUpdate.txt | 10 + tests_unit/testcases/opManageDataAdd.txt | 8 + .../opManageDataAddWithUnprintableData.txt | 8 + tests_unit/testcases/opManageDataRemove.txt | 7 + .../testcases/opManageSellOfferCreate.txt | 10 + .../testcases/opManageSellOfferDelete.txt | 7 + .../testcases/opManageSellOfferUpdate.txt | 10 + .../testcases/opPathPaymentStrictReceive.txt | 9 + ...pPathPaymentStrictReceiveWithEmptyPath.txt | 9 + ...ymentStrictReceiveWithMuxedDestination.txt | 9 + .../testcases/opPathPaymentStrictSend.txt | 9 + .../opPathPaymentStrictSendWithEmptyPath.txt | 9 + ...hPaymentStrictSendWithMuxedDestination.txt | 9 + .../testcases/opPaymentAssetAlphanum12.txt | 8 + .../testcases/opPaymentAssetAlphanum4.txt | 8 + tests_unit/testcases/opPaymentAssetNative.txt | 8 + .../opPaymentWithMuxedDestination.txt | 8 + .../testcases/opRevokeSponsorshipAccount.txt | 8 + .../opRevokeSponsorshipClaimableBalance.txt | 8 + .../testcases/opRevokeSponsorshipData.txt | 9 + ...evokeSponsorshipEd25519PublicKeySigner.txt | 10 + .../opRevokeSponsorshipHashXSigner.txt | 10 + .../opRevokeSponsorshipLiquidityPool.txt | 8 + .../testcases/opRevokeSponsorshipOffer.txt | 9 + .../opRevokeSponsorshipPreAuthTxSigner.txt | 10 + .../opRevokeSponsorshipTrustLineWithAsset.txt | 9 + ...ponsorshipTrustLineWithLiquidityPoolId.txt | 9 + tests_unit/testcases/opSetOptions.txt | 18 + .../testcases/opSetOptionsAddHashXSigner.txt | 10 + .../opSetOptionsAddPreAuthTxSigner.txt | 10 + .../opSetOptionsAddPublicKeySigner.txt | 10 + .../testcases/opSetOptionsWithEmptyBody.txt | 8 + .../opSetTrustLineFlagsAuthorized.txt | 11 + ...tLineFlagsAuthorizedAndClawbackEnabled.txt | 11 + ...neFlagsAuthorizedToMaintainLiabilities.txt | 11 + .../opSetTrustLineFlagsUnauthorized.txt | 11 + ...mitOpSourceEqualSignerNotEqualTxSource.txt | 8 + ...xedSourceEqualOpMuxedSourceEqualSigner.txt | 8 + ...tTxMuxedSourceEqualOpSourceEqualSigner.txt | 8 + ...tTxSourceEqualOpMuxedSourceEqualSigner.txt | 8 + ...ceOmitTxSourceEqualOpSourceEqualSigner.txt | 8 + ...mitTxSourceEqualOpSourceNotEqualSigner.txt | 8 + ...mitTxSourceEqualSignerNotEqualOpSource.txt | 8 + tests_unit/testcases/opWithEmptySource.txt | 7 + tests_unit/testcases/opWithMuxedSource.txt | 8 + .../txCondExtraSignersWithOneSigner.txt | 7 + .../txCondExtraSignersWithTwoSigners.txt | 7 + tests_unit/testcases/txCondIsNone.txt | 7 + tests_unit/testcases/txCondLedgerBounds.txt | 9 + .../testcases/txCondLedgerBoundsAreZero.txt | 7 + .../testcases/txCondLedgerBoundsMaxIsZero.txt | 8 + .../testcases/txCondLedgerBoundsMinIsZero.txt | 8 + .../testcases/txCondMinAccountSequence.txt | 8 + .../testcases/txCondMinAccountSequenceAge.txt | 8 + .../txCondMinAccountSequenceLedgerGap.txt | 8 + tests_unit/testcases/txCondTimeBounds.txt | 9 + .../testcases/txCondTimeBoundsAreZero.txt | 7 + .../testcases/txCondTimeBoundsIsNone.txt | 9 + .../testcases/txCondTimeBoundsMaxIsZero.txt | 8 + .../testcases/txCondTimeBoundsMinIsZero.txt | 8 + tests_unit/testcases/txCondWithAllItems.txt | 14 + tests_unit/testcases/txCustomBaseFee.txt | 13 + tests_unit/testcases/txMemoHash.txt | 8 + tests_unit/testcases/txMemoId.txt | 8 + tests_unit/testcases/txMemoNone.txt | 7 + tests_unit/testcases/txMemoReturnHash.txt | 8 + tests_unit/testcases/txMemoText.txt | 8 + .../testcases/txMemoTextUnprintable.txt | 8 + tests_unit/testcases/txMultiOperations.txt | 16 + tests_unit/testcases/txNetworkCustom.txt | 9 + tests_unit/testcases/txNetworkPublic.txt | 8 + tests_unit/testcases/txNetworkTestnet.txt | 9 + .../txSourceOmitMuxedSourceEqualSigner.txt | 8 + .../txSourceOmitSourceEqualSigner.txt | 8 + .../txSourceOmitSourceNotEqualSigner.txt | 8 + tests_unit/testcases/txWithMuxedSource.txt | 8 + tests_zemu/elfs/.gitkeep | 0 tests_zemu/jest.config.js | 11 + tests_zemu/jest.js | 0 tests_zemu/package-lock.json | 9056 +++++++++++++++++ tests_zemu/package.json | 23 + .../s-fee-bump-tx-hide-sequence/00000.png | Bin 0 -> 379 bytes .../s-fee-bump-tx-hide-sequence/00001.png | Bin 0 -> 403 bytes .../s-fee-bump-tx-hide-sequence/00002.png | Bin 0 -> 411 bytes .../s-fee-bump-tx-hide-sequence/00003.png | Bin 0 -> 360 bytes .../s-fee-bump-tx-hide-sequence/00004.png | Bin 0 -> 322 bytes .../s-fee-bump-tx-hide-sequence/00005.png | Bin 0 -> 341 bytes .../s-fee-bump-tx-hide-sequence/00006.png | Bin 0 -> 337 bytes .../s-fee-bump-tx-hide-sequence/00007.png | Bin 0 -> 463 bytes .../s-fee-bump-tx-hide-sequence/00008.png | Bin 0 -> 490 bytes .../s-fee-bump-tx-hide-sequence/00009.png | Bin 0 -> 495 bytes .../s-fee-bump-tx-hide-sequence/00010.png | Bin 0 -> 479 bytes .../s-fee-bump-tx-hide-sequence/00011.png | Bin 0 -> 424 bytes .../s-fee-bump-tx-hide-sequence/00012.png | Bin 0 -> 298 bytes .../s-fee-bump-tx-hide-sequence/00013.png | Bin 0 -> 296 bytes .../s-fee-bump-tx-hide-sequence/00014.png | Bin 0 -> 500 bytes .../s-fee-bump-tx-hide-sequence/00015.png | Bin 0 -> 487 bytes .../s-fee-bump-tx-hide-sequence/00016.png | Bin 0 -> 494 bytes .../s-fee-bump-tx-hide-sequence/00017.png | Bin 0 -> 429 bytes .../s-fee-bump-tx-hide-sequence/00018.png | Bin 0 -> 493 bytes .../s-fee-bump-tx-hide-sequence/00019.png | Bin 0 -> 495 bytes .../s-fee-bump-tx-hide-sequence/00020.png | Bin 0 -> 477 bytes .../s-fee-bump-tx-hide-sequence/00021.png | Bin 0 -> 428 bytes .../s-fee-bump-tx-hide-sequence/00022.png | Bin 0 -> 295 bytes .../s-fee-bump-tx-hide-sequence/00023.png | Bin 0 -> 296 bytes .../s-fee-bump-tx-hide-sequence/00024.png | Bin 0 -> 506 bytes .../s-fee-bump-tx-hide-sequence/00025.png | Bin 0 -> 488 bytes .../s-fee-bump-tx-hide-sequence/00026.png | Bin 0 -> 495 bytes .../s-fee-bump-tx-hide-sequence/00027.png | Bin 0 -> 431 bytes .../s-fee-bump-tx-hide-sequence/00028.png | Bin 0 -> 493 bytes .../s-fee-bump-tx-hide-sequence/00029.png | Bin 0 -> 495 bytes .../s-fee-bump-tx-hide-sequence/00030.png | Bin 0 -> 477 bytes .../s-fee-bump-tx-hide-sequence/00031.png | Bin 0 -> 428 bytes .../s-fee-bump-tx-hide-sequence/00032.png | Bin 0 -> 389 bytes .../s-fee-bump-tx-hide-sequence/00033.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 403 bytes .../00002.png | Bin 0 -> 411 bytes .../00003.png | Bin 0 -> 350 bytes .../00004.png | Bin 0 -> 322 bytes .../00005.png | Bin 0 -> 341 bytes .../00006.png | Bin 0 -> 343 bytes .../00007.png | Bin 0 -> 444 bytes .../00008.png | Bin 0 -> 463 bytes .../00009.png | Bin 0 -> 490 bytes .../00010.png | Bin 0 -> 495 bytes .../00011.png | Bin 0 -> 479 bytes .../00012.png | Bin 0 -> 424 bytes .../00013.png | Bin 0 -> 428 bytes .../00014.png | Bin 0 -> 377 bytes .../00015.png | Bin 0 -> 493 bytes .../00016.png | Bin 0 -> 495 bytes .../00017.png | Bin 0 -> 477 bytes .../00018.png | Bin 0 -> 428 bytes .../00019.png | Bin 0 -> 389 bytes .../00020.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 403 bytes .../00002.png | Bin 0 -> 507 bytes .../00003.png | Bin 0 -> 495 bytes .../00004.png | Bin 0 -> 492 bytes .../00005.png | Bin 0 -> 421 bytes .../00006.png | Bin 0 -> 350 bytes .../00007.png | Bin 0 -> 322 bytes .../00008.png | Bin 0 -> 341 bytes .../00009.png | Bin 0 -> 343 bytes .../00010.png | Bin 0 -> 444 bytes .../00011.png | Bin 0 -> 463 bytes .../00012.png | Bin 0 -> 490 bytes .../00013.png | Bin 0 -> 495 bytes .../00014.png | Bin 0 -> 479 bytes .../00015.png | Bin 0 -> 424 bytes .../00016.png | Bin 0 -> 428 bytes .../00017.png | Bin 0 -> 377 bytes .../00018.png | Bin 0 -> 493 bytes .../00019.png | Bin 0 -> 495 bytes .../00020.png | Bin 0 -> 477 bytes .../00021.png | Bin 0 -> 428 bytes .../00022.png | Bin 0 -> 389 bytes .../00023.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 403 bytes .../00002.png | Bin 0 -> 474 bytes .../00003.png | Bin 0 -> 497 bytes .../00004.png | Bin 0 -> 474 bytes .../00005.png | Bin 0 -> 453 bytes .../00006.png | Bin 0 -> 390 bytes .../00007.png | Bin 0 -> 350 bytes .../00008.png | Bin 0 -> 322 bytes .../00009.png | Bin 0 -> 341 bytes .../00010.png | Bin 0 -> 343 bytes .../00011.png | Bin 0 -> 444 bytes .../00012.png | Bin 0 -> 463 bytes .../00013.png | Bin 0 -> 490 bytes .../00014.png | Bin 0 -> 495 bytes .../00015.png | Bin 0 -> 479 bytes .../00016.png | Bin 0 -> 424 bytes .../00017.png | Bin 0 -> 428 bytes .../00018.png | Bin 0 -> 377 bytes .../00019.png | Bin 0 -> 493 bytes .../00020.png | Bin 0 -> 495 bytes .../00021.png | Bin 0 -> 477 bytes .../00022.png | Bin 0 -> 428 bytes .../00023.png | Bin 0 -> 389 bytes .../00024.png | Bin 0 -> 428 bytes .../snapshots/s-fee-bump-tx-reject/00000.png | Bin 0 -> 379 bytes .../snapshots/s-fee-bump-tx-reject/00001.png | Bin 0 -> 403 bytes .../snapshots/s-fee-bump-tx-reject/00002.png | Bin 0 -> 411 bytes .../snapshots/s-fee-bump-tx-reject/00003.png | Bin 0 -> 360 bytes .../snapshots/s-fee-bump-tx-reject/00004.png | Bin 0 -> 322 bytes .../snapshots/s-fee-bump-tx-reject/00005.png | Bin 0 -> 341 bytes .../snapshots/s-fee-bump-tx-reject/00006.png | Bin 0 -> 337 bytes .../snapshots/s-fee-bump-tx-reject/00007.png | Bin 0 -> 444 bytes .../snapshots/s-fee-bump-tx-reject/00008.png | Bin 0 -> 463 bytes .../snapshots/s-fee-bump-tx-reject/00009.png | Bin 0 -> 490 bytes .../snapshots/s-fee-bump-tx-reject/00010.png | Bin 0 -> 495 bytes .../snapshots/s-fee-bump-tx-reject/00011.png | Bin 0 -> 479 bytes .../snapshots/s-fee-bump-tx-reject/00012.png | Bin 0 -> 424 bytes .../snapshots/s-fee-bump-tx-reject/00013.png | Bin 0 -> 298 bytes .../snapshots/s-fee-bump-tx-reject/00014.png | Bin 0 -> 296 bytes .../snapshots/s-fee-bump-tx-reject/00015.png | Bin 0 -> 500 bytes .../snapshots/s-fee-bump-tx-reject/00016.png | Bin 0 -> 487 bytes .../snapshots/s-fee-bump-tx-reject/00017.png | Bin 0 -> 494 bytes .../snapshots/s-fee-bump-tx-reject/00018.png | Bin 0 -> 429 bytes .../snapshots/s-fee-bump-tx-reject/00019.png | Bin 0 -> 493 bytes .../snapshots/s-fee-bump-tx-reject/00020.png | Bin 0 -> 495 bytes .../snapshots/s-fee-bump-tx-reject/00021.png | Bin 0 -> 477 bytes .../snapshots/s-fee-bump-tx-reject/00022.png | Bin 0 -> 428 bytes .../snapshots/s-fee-bump-tx-reject/00023.png | Bin 0 -> 295 bytes .../snapshots/s-fee-bump-tx-reject/00024.png | Bin 0 -> 296 bytes .../snapshots/s-fee-bump-tx-reject/00025.png | Bin 0 -> 506 bytes .../snapshots/s-fee-bump-tx-reject/00026.png | Bin 0 -> 488 bytes .../snapshots/s-fee-bump-tx-reject/00027.png | Bin 0 -> 495 bytes .../snapshots/s-fee-bump-tx-reject/00028.png | Bin 0 -> 431 bytes .../snapshots/s-fee-bump-tx-reject/00029.png | Bin 0 -> 493 bytes .../snapshots/s-fee-bump-tx-reject/00030.png | Bin 0 -> 495 bytes .../snapshots/s-fee-bump-tx-reject/00031.png | Bin 0 -> 477 bytes .../snapshots/s-fee-bump-tx-reject/00032.png | Bin 0 -> 428 bytes .../snapshots/s-fee-bump-tx-reject/00033.png | Bin 0 -> 389 bytes .../snapshots/s-fee-bump-tx-reject/00034.png | Bin 0 -> 325 bytes .../snapshots/s-fee-bump-tx-reject/00035.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 403 bytes .../00002.png | Bin 0 -> 474 bytes .../00003.png | Bin 0 -> 497 bytes .../00004.png | Bin 0 -> 474 bytes .../00005.png | Bin 0 -> 453 bytes .../00006.png | Bin 0 -> 390 bytes .../00007.png | Bin 0 -> 360 bytes .../00008.png | Bin 0 -> 322 bytes .../00009.png | Bin 0 -> 341 bytes .../00010.png | Bin 0 -> 337 bytes .../00011.png | Bin 0 -> 444 bytes .../00012.png | Bin 0 -> 463 bytes .../00013.png | Bin 0 -> 490 bytes .../00014.png | Bin 0 -> 495 bytes .../00015.png | Bin 0 -> 479 bytes .../00016.png | Bin 0 -> 424 bytes .../00017.png | Bin 0 -> 298 bytes .../00018.png | Bin 0 -> 296 bytes .../00019.png | Bin 0 -> 500 bytes .../00020.png | Bin 0 -> 487 bytes .../00021.png | Bin 0 -> 494 bytes .../00022.png | Bin 0 -> 429 bytes .../00023.png | Bin 0 -> 493 bytes .../00024.png | Bin 0 -> 495 bytes .../00025.png | Bin 0 -> 477 bytes .../00026.png | Bin 0 -> 428 bytes .../00027.png | Bin 0 -> 295 bytes .../00028.png | Bin 0 -> 296 bytes .../00029.png | Bin 0 -> 506 bytes .../00030.png | Bin 0 -> 488 bytes .../00031.png | Bin 0 -> 495 bytes .../00032.png | Bin 0 -> 431 bytes .../00033.png | Bin 0 -> 493 bytes .../00034.png | Bin 0 -> 495 bytes .../00035.png | Bin 0 -> 477 bytes .../00036.png | Bin 0 -> 428 bytes .../00037.png | Bin 0 -> 389 bytes .../00038.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-fee-bump-tx/00000.png | Bin 0 -> 379 bytes tests_zemu/snapshots/s-fee-bump-tx/00001.png | Bin 0 -> 403 bytes tests_zemu/snapshots/s-fee-bump-tx/00002.png | Bin 0 -> 411 bytes tests_zemu/snapshots/s-fee-bump-tx/00003.png | Bin 0 -> 360 bytes tests_zemu/snapshots/s-fee-bump-tx/00004.png | Bin 0 -> 322 bytes tests_zemu/snapshots/s-fee-bump-tx/00005.png | Bin 0 -> 341 bytes tests_zemu/snapshots/s-fee-bump-tx/00006.png | Bin 0 -> 337 bytes tests_zemu/snapshots/s-fee-bump-tx/00007.png | Bin 0 -> 444 bytes tests_zemu/snapshots/s-fee-bump-tx/00008.png | Bin 0 -> 463 bytes tests_zemu/snapshots/s-fee-bump-tx/00009.png | Bin 0 -> 490 bytes tests_zemu/snapshots/s-fee-bump-tx/00010.png | Bin 0 -> 495 bytes tests_zemu/snapshots/s-fee-bump-tx/00011.png | Bin 0 -> 479 bytes tests_zemu/snapshots/s-fee-bump-tx/00012.png | Bin 0 -> 424 bytes tests_zemu/snapshots/s-fee-bump-tx/00013.png | Bin 0 -> 298 bytes tests_zemu/snapshots/s-fee-bump-tx/00014.png | Bin 0 -> 296 bytes tests_zemu/snapshots/s-fee-bump-tx/00015.png | Bin 0 -> 500 bytes tests_zemu/snapshots/s-fee-bump-tx/00016.png | Bin 0 -> 487 bytes tests_zemu/snapshots/s-fee-bump-tx/00017.png | Bin 0 -> 494 bytes tests_zemu/snapshots/s-fee-bump-tx/00018.png | Bin 0 -> 429 bytes tests_zemu/snapshots/s-fee-bump-tx/00019.png | Bin 0 -> 493 bytes tests_zemu/snapshots/s-fee-bump-tx/00020.png | Bin 0 -> 495 bytes tests_zemu/snapshots/s-fee-bump-tx/00021.png | Bin 0 -> 477 bytes tests_zemu/snapshots/s-fee-bump-tx/00022.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-fee-bump-tx/00023.png | Bin 0 -> 295 bytes tests_zemu/snapshots/s-fee-bump-tx/00024.png | Bin 0 -> 296 bytes tests_zemu/snapshots/s-fee-bump-tx/00025.png | Bin 0 -> 506 bytes tests_zemu/snapshots/s-fee-bump-tx/00026.png | Bin 0 -> 488 bytes tests_zemu/snapshots/s-fee-bump-tx/00027.png | Bin 0 -> 495 bytes tests_zemu/snapshots/s-fee-bump-tx/00028.png | Bin 0 -> 431 bytes tests_zemu/snapshots/s-fee-bump-tx/00029.png | Bin 0 -> 493 bytes tests_zemu/snapshots/s-fee-bump-tx/00030.png | Bin 0 -> 495 bytes tests_zemu/snapshots/s-fee-bump-tx/00031.png | Bin 0 -> 477 bytes tests_zemu/snapshots/s-fee-bump-tx/00032.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-fee-bump-tx/00033.png | Bin 0 -> 389 bytes tests_zemu/snapshots/s-fee-bump-tx/00034.png | Bin 0 -> 428 bytes .../s-hash-signing-approve/00000.png | Bin 0 -> 379 bytes .../s-hash-signing-approve/00001.png | Bin 0 -> 402 bytes .../s-hash-signing-approve/00002.png | Bin 0 -> 487 bytes .../s-hash-signing-approve/00003.png | Bin 0 -> 483 bytes .../s-hash-signing-approve/00004.png | Bin 0 -> 478 bytes .../s-hash-signing-approve/00005.png | Bin 0 -> 421 bytes .../s-hash-signing-approve/00006.png | Bin 0 -> 459 bytes .../s-hash-signing-approve/00007.png | Bin 0 -> 494 bytes .../s-hash-signing-approve/00008.png | Bin 0 -> 471 bytes .../s-hash-signing-approve/00009.png | Bin 0 -> 391 bytes .../s-hash-signing-approve/00010.png | Bin 0 -> 341 bytes .../s-hash-signing-approve/00011.png | Bin 0 -> 428 bytes .../snapshots/s-hash-signing-reject/00000.png | Bin 0 -> 379 bytes .../snapshots/s-hash-signing-reject/00001.png | Bin 0 -> 402 bytes .../snapshots/s-hash-signing-reject/00002.png | Bin 0 -> 487 bytes .../snapshots/s-hash-signing-reject/00003.png | Bin 0 -> 483 bytes .../snapshots/s-hash-signing-reject/00004.png | Bin 0 -> 478 bytes .../snapshots/s-hash-signing-reject/00005.png | Bin 0 -> 421 bytes .../snapshots/s-hash-signing-reject/00006.png | Bin 0 -> 459 bytes .../snapshots/s-hash-signing-reject/00007.png | Bin 0 -> 494 bytes .../snapshots/s-hash-signing-reject/00008.png | Bin 0 -> 471 bytes .../snapshots/s-hash-signing-reject/00009.png | Bin 0 -> 391 bytes .../snapshots/s-hash-signing-reject/00010.png | Bin 0 -> 341 bytes .../snapshots/s-hash-signing-reject/00011.png | Bin 0 -> 340 bytes .../snapshots/s-hash-signing-reject/00012.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 442 bytes .../00007.png | Bin 0 -> 516 bytes .../00008.png | Bin 0 -> 525 bytes .../00009.png | Bin 0 -> 520 bytes .../00010.png | Bin 0 -> 453 bytes .../00011.png | Bin 0 -> 488 bytes .../00012.png | Bin 0 -> 493 bytes .../00013.png | Bin 0 -> 491 bytes .../00014.png | Bin 0 -> 416 bytes .../00015.png | Bin 0 -> 409 bytes .../00016.png | Bin 0 -> 408 bytes .../00017.png | Bin 0 -> 389 bytes .../00018.png | Bin 0 -> 428 bytes .../snapshots/s-op-account-merge/00000.png | Bin 0 -> 379 bytes .../snapshots/s-op-account-merge/00001.png | Bin 0 -> 341 bytes .../snapshots/s-op-account-merge/00002.png | Bin 0 -> 337 bytes .../snapshots/s-op-account-merge/00003.png | Bin 0 -> 444 bytes .../snapshots/s-op-account-merge/00004.png | Bin 0 -> 463 bytes .../snapshots/s-op-account-merge/00005.png | Bin 0 -> 403 bytes .../snapshots/s-op-account-merge/00006.png | Bin 0 -> 442 bytes .../snapshots/s-op-account-merge/00007.png | Bin 0 -> 516 bytes .../snapshots/s-op-account-merge/00008.png | Bin 0 -> 525 bytes .../snapshots/s-op-account-merge/00009.png | Bin 0 -> 520 bytes .../snapshots/s-op-account-merge/00010.png | Bin 0 -> 453 bytes .../snapshots/s-op-account-merge/00011.png | Bin 0 -> 500 bytes .../snapshots/s-op-account-merge/00012.png | Bin 0 -> 487 bytes .../snapshots/s-op-account-merge/00013.png | Bin 0 -> 494 bytes .../snapshots/s-op-account-merge/00014.png | Bin 0 -> 429 bytes .../snapshots/s-op-account-merge/00015.png | Bin 0 -> 408 bytes .../snapshots/s-op-account-merge/00016.png | Bin 0 -> 389 bytes .../snapshots/s-op-account-merge/00017.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 404 bytes .../00007.png | Bin 0 -> 473 bytes .../00008.png | Bin 0 -> 454 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 396 bytes .../00011.png | Bin 0 -> 344 bytes .../00012.png | Bin 0 -> 468 bytes .../00013.png | Bin 0 -> 451 bytes .../00014.png | Bin 0 -> 443 bytes .../00015.png | Bin 0 -> 408 bytes .../00016.png | Bin 0 -> 389 bytes .../00017.png | Bin 0 -> 428 bytes .../s-op-allow-trust-authorize/00000.png | Bin 0 -> 379 bytes .../s-op-allow-trust-authorize/00001.png | Bin 0 -> 341 bytes .../s-op-allow-trust-authorize/00002.png | Bin 0 -> 337 bytes .../s-op-allow-trust-authorize/00003.png | Bin 0 -> 444 bytes .../s-op-allow-trust-authorize/00004.png | Bin 0 -> 463 bytes .../s-op-allow-trust-authorize/00005.png | Bin 0 -> 403 bytes .../s-op-allow-trust-authorize/00006.png | Bin 0 -> 404 bytes .../s-op-allow-trust-authorize/00007.png | Bin 0 -> 473 bytes .../s-op-allow-trust-authorize/00008.png | Bin 0 -> 454 bytes .../s-op-allow-trust-authorize/00009.png | Bin 0 -> 467 bytes .../s-op-allow-trust-authorize/00010.png | Bin 0 -> 396 bytes .../s-op-allow-trust-authorize/00011.png | Bin 0 -> 344 bytes .../s-op-allow-trust-authorize/00012.png | Bin 0 -> 419 bytes .../s-op-allow-trust-authorize/00013.png | Bin 0 -> 408 bytes .../s-op-allow-trust-authorize/00014.png | Bin 0 -> 389 bytes .../s-op-allow-trust-authorize/00015.png | Bin 0 -> 428 bytes .../s-op-allow-trust-deauthorize/00000.png | Bin 0 -> 379 bytes .../s-op-allow-trust-deauthorize/00001.png | Bin 0 -> 341 bytes .../s-op-allow-trust-deauthorize/00002.png | Bin 0 -> 337 bytes .../s-op-allow-trust-deauthorize/00003.png | Bin 0 -> 444 bytes .../s-op-allow-trust-deauthorize/00004.png | Bin 0 -> 463 bytes .../s-op-allow-trust-deauthorize/00005.png | Bin 0 -> 403 bytes .../s-op-allow-trust-deauthorize/00006.png | Bin 0 -> 404 bytes .../s-op-allow-trust-deauthorize/00007.png | Bin 0 -> 473 bytes .../s-op-allow-trust-deauthorize/00008.png | Bin 0 -> 454 bytes .../s-op-allow-trust-deauthorize/00009.png | Bin 0 -> 467 bytes .../s-op-allow-trust-deauthorize/00010.png | Bin 0 -> 396 bytes .../s-op-allow-trust-deauthorize/00011.png | Bin 0 -> 344 bytes .../s-op-allow-trust-deauthorize/00012.png | Bin 0 -> 435 bytes .../s-op-allow-trust-deauthorize/00013.png | Bin 0 -> 408 bytes .../s-op-allow-trust-deauthorize/00014.png | Bin 0 -> 389 bytes .../s-op-allow-trust-deauthorize/00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 505 bytes .../00007.png | Bin 0 -> 475 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 496 bytes .../00010.png | Bin 0 -> 508 bytes .../00011.png | Bin 0 -> 447 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../snapshots/s-op-bump-sequence/00000.png | Bin 0 -> 379 bytes .../snapshots/s-op-bump-sequence/00001.png | Bin 0 -> 341 bytes .../snapshots/s-op-bump-sequence/00002.png | Bin 0 -> 337 bytes .../snapshots/s-op-bump-sequence/00003.png | Bin 0 -> 444 bytes .../snapshots/s-op-bump-sequence/00004.png | Bin 0 -> 463 bytes .../snapshots/s-op-bump-sequence/00005.png | Bin 0 -> 403 bytes .../snapshots/s-op-bump-sequence/00006.png | Bin 0 -> 428 bytes .../snapshots/s-op-bump-sequence/00007.png | Bin 0 -> 443 bytes .../snapshots/s-op-bump-sequence/00008.png | Bin 0 -> 313 bytes .../snapshots/s-op-bump-sequence/00009.png | Bin 0 -> 408 bytes .../snapshots/s-op-bump-sequence/00010.png | Bin 0 -> 389 bytes .../snapshots/s-op-bump-sequence/00011.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 481 bytes .../00007.png | Bin 0 -> 462 bytes .../00008.png | Bin 0 -> 344 bytes .../00009.png | Bin 0 -> 408 bytes .../00010.png | Bin 0 -> 389 bytes .../00011.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 451 bytes .../00007.png | Bin 0 -> 408 bytes .../00008.png | Bin 0 -> 389 bytes .../00009.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 475 bytes .../00007.png | Bin 0 -> 412 bytes .../00008.png | Bin 0 -> 456 bytes .../00009.png | Bin 0 -> 351 bytes .../00010.png | Bin 0 -> 462 bytes .../00011.png | Bin 0 -> 344 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 454 bytes .../00007.png | Bin 0 -> 412 bytes .../00008.png | Bin 0 -> 456 bytes .../00009.png | Bin 0 -> 351 bytes .../00010.png | Bin 0 -> 408 bytes .../00011.png | Bin 0 -> 389 bytes .../00012.png | Bin 0 -> 428 bytes .../s-op-claim-claimable-balance/00000.png | Bin 0 -> 379 bytes .../s-op-claim-claimable-balance/00001.png | Bin 0 -> 341 bytes .../s-op-claim-claimable-balance/00002.png | Bin 0 -> 337 bytes .../s-op-claim-claimable-balance/00003.png | Bin 0 -> 444 bytes .../s-op-claim-claimable-balance/00004.png | Bin 0 -> 463 bytes .../s-op-claim-claimable-balance/00005.png | Bin 0 -> 403 bytes .../s-op-claim-claimable-balance/00006.png | Bin 0 -> 458 bytes .../s-op-claim-claimable-balance/00007.png | Bin 0 -> 419 bytes .../s-op-claim-claimable-balance/00008.png | Bin 0 -> 437 bytes .../s-op-claim-claimable-balance/00009.png | Bin 0 -> 399 bytes .../s-op-claim-claimable-balance/00010.png | Bin 0 -> 408 bytes .../s-op-claim-claimable-balance/00011.png | Bin 0 -> 389 bytes .../s-op-claim-claimable-balance/00012.png | Bin 0 -> 428 bytes .../s-op-clawback-claimable-balance/00000.png | Bin 0 -> 379 bytes .../s-op-clawback-claimable-balance/00001.png | Bin 0 -> 341 bytes .../s-op-clawback-claimable-balance/00002.png | Bin 0 -> 337 bytes .../s-op-clawback-claimable-balance/00003.png | Bin 0 -> 444 bytes .../s-op-clawback-claimable-balance/00004.png | Bin 0 -> 463 bytes .../s-op-clawback-claimable-balance/00005.png | Bin 0 -> 403 bytes .../s-op-clawback-claimable-balance/00006.png | Bin 0 -> 504 bytes .../s-op-clawback-claimable-balance/00007.png | Bin 0 -> 419 bytes .../s-op-clawback-claimable-balance/00008.png | Bin 0 -> 418 bytes .../s-op-clawback-claimable-balance/00009.png | Bin 0 -> 492 bytes .../s-op-clawback-claimable-balance/00010.png | Bin 0 -> 491 bytes .../s-op-clawback-claimable-balance/00011.png | Bin 0 -> 475 bytes .../s-op-clawback-claimable-balance/00012.png | Bin 0 -> 323 bytes .../s-op-clawback-claimable-balance/00013.png | Bin 0 -> 408 bytes .../s-op-clawback-claimable-balance/00014.png | Bin 0 -> 389 bytes .../s-op-clawback-claimable-balance/00015.png | Bin 0 -> 428 bytes .../s-op-clawback-with-muxed-from/00000.png | Bin 0 -> 379 bytes .../s-op-clawback-with-muxed-from/00001.png | Bin 0 -> 341 bytes .../s-op-clawback-with-muxed-from/00002.png | Bin 0 -> 337 bytes .../s-op-clawback-with-muxed-from/00003.png | Bin 0 -> 444 bytes .../s-op-clawback-with-muxed-from/00004.png | Bin 0 -> 463 bytes .../s-op-clawback-with-muxed-from/00005.png | Bin 0 -> 403 bytes .../s-op-clawback-with-muxed-from/00006.png | Bin 0 -> 409 bytes .../s-op-clawback-with-muxed-from/00007.png | Bin 0 -> 440 bytes .../s-op-clawback-with-muxed-from/00008.png | Bin 0 -> 543 bytes .../s-op-clawback-with-muxed-from/00009.png | Bin 0 -> 454 bytes .../s-op-clawback-with-muxed-from/00010.png | Bin 0 -> 442 bytes .../s-op-clawback-with-muxed-from/00011.png | Bin 0 -> 447 bytes .../s-op-clawback-with-muxed-from/00012.png | Bin 0 -> 380 bytes .../s-op-clawback-with-muxed-from/00013.png | Bin 0 -> 359 bytes .../s-op-clawback-with-muxed-from/00014.png | Bin 0 -> 408 bytes .../s-op-clawback-with-muxed-from/00015.png | Bin 0 -> 389 bytes .../s-op-clawback-with-muxed-from/00016.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-op-clawback/00000.png | Bin 0 -> 379 bytes tests_zemu/snapshots/s-op-clawback/00001.png | Bin 0 -> 341 bytes tests_zemu/snapshots/s-op-clawback/00002.png | Bin 0 -> 337 bytes tests_zemu/snapshots/s-op-clawback/00003.png | Bin 0 -> 444 bytes tests_zemu/snapshots/s-op-clawback/00004.png | Bin 0 -> 463 bytes tests_zemu/snapshots/s-op-clawback/00005.png | Bin 0 -> 403 bytes tests_zemu/snapshots/s-op-clawback/00006.png | Bin 0 -> 409 bytes tests_zemu/snapshots/s-op-clawback/00007.png | Bin 0 -> 440 bytes tests_zemu/snapshots/s-op-clawback/00008.png | Bin 0 -> 543 bytes tests_zemu/snapshots/s-op-clawback/00009.png | Bin 0 -> 460 bytes tests_zemu/snapshots/s-op-clawback/00010.png | Bin 0 -> 440 bytes tests_zemu/snapshots/s-op-clawback/00011.png | Bin 0 -> 448 bytes tests_zemu/snapshots/s-op-clawback/00012.png | Bin 0 -> 383 bytes tests_zemu/snapshots/s-op-clawback/00013.png | Bin 0 -> 408 bytes tests_zemu/snapshots/s-op-clawback/00014.png | Bin 0 -> 389 bytes tests_zemu/snapshots/s-op-clawback/00015.png | Bin 0 -> 428 bytes .../snapshots/s-op-create-account/00000.png | Bin 0 -> 379 bytes .../snapshots/s-op-create-account/00001.png | Bin 0 -> 341 bytes .../snapshots/s-op-create-account/00002.png | Bin 0 -> 337 bytes .../snapshots/s-op-create-account/00003.png | Bin 0 -> 444 bytes .../snapshots/s-op-create-account/00004.png | Bin 0 -> 463 bytes .../snapshots/s-op-create-account/00005.png | Bin 0 -> 403 bytes .../snapshots/s-op-create-account/00006.png | Bin 0 -> 429 bytes .../snapshots/s-op-create-account/00007.png | Bin 0 -> 500 bytes .../snapshots/s-op-create-account/00008.png | Bin 0 -> 487 bytes .../snapshots/s-op-create-account/00009.png | Bin 0 -> 494 bytes .../snapshots/s-op-create-account/00010.png | Bin 0 -> 429 bytes .../snapshots/s-op-create-account/00011.png | Bin 0 -> 395 bytes .../snapshots/s-op-create-account/00012.png | Bin 0 -> 408 bytes .../snapshots/s-op-create-account/00013.png | Bin 0 -> 389 bytes .../snapshots/s-op-create-account/00014.png | Bin 0 -> 428 bytes .../s-op-create-claimable-balance/00000.png | Bin 0 -> 379 bytes .../s-op-create-claimable-balance/00001.png | Bin 0 -> 341 bytes .../s-op-create-claimable-balance/00002.png | Bin 0 -> 337 bytes .../s-op-create-claimable-balance/00003.png | Bin 0 -> 444 bytes .../s-op-create-claimable-balance/00004.png | Bin 0 -> 463 bytes .../s-op-create-claimable-balance/00005.png | Bin 0 -> 403 bytes .../s-op-create-claimable-balance/00006.png | Bin 0 -> 482 bytes .../s-op-create-claimable-balance/00007.png | Bin 0 -> 419 bytes .../s-op-create-claimable-balance/00008.png | Bin 0 -> 318 bytes .../s-op-create-claimable-balance/00009.png | Bin 0 -> 471 bytes .../s-op-create-claimable-balance/00010.png | Bin 0 -> 459 bytes .../s-op-create-claimable-balance/00011.png | Bin 0 -> 470 bytes .../s-op-create-claimable-balance/00012.png | Bin 0 -> 436 bytes .../s-op-create-claimable-balance/00013.png | Bin 0 -> 408 bytes .../s-op-create-claimable-balance/00014.png | Bin 0 -> 389 bytes .../s-op-create-claimable-balance/00015.png | Bin 0 -> 428 bytes .../s-op-create-passive-sell-offer/00000.png | Bin 0 -> 379 bytes .../s-op-create-passive-sell-offer/00001.png | Bin 0 -> 341 bytes .../s-op-create-passive-sell-offer/00002.png | Bin 0 -> 337 bytes .../s-op-create-passive-sell-offer/00003.png | Bin 0 -> 444 bytes .../s-op-create-passive-sell-offer/00004.png | Bin 0 -> 463 bytes .../s-op-create-passive-sell-offer/00005.png | Bin 0 -> 403 bytes .../s-op-create-passive-sell-offer/00006.png | Bin 0 -> 516 bytes .../s-op-create-passive-sell-offer/00007.png | Bin 0 -> 408 bytes .../s-op-create-passive-sell-offer/00008.png | Bin 0 -> 288 bytes .../s-op-create-passive-sell-offer/00009.png | Bin 0 -> 433 bytes .../s-op-create-passive-sell-offer/00010.png | Bin 0 -> 429 bytes .../s-op-create-passive-sell-offer/00011.png | Bin 0 -> 387 bytes .../s-op-create-passive-sell-offer/00012.png | Bin 0 -> 408 bytes .../s-op-create-passive-sell-offer/00013.png | Bin 0 -> 389 bytes .../s-op-create-passive-sell-offer/00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 478 bytes .../00007.png | Bin 0 -> 475 bytes .../00008.png | Bin 0 -> 408 bytes .../00009.png | Bin 0 -> 389 bytes .../00010.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-op-inflation/00000.png | Bin 0 -> 379 bytes tests_zemu/snapshots/s-op-inflation/00001.png | Bin 0 -> 341 bytes tests_zemu/snapshots/s-op-inflation/00002.png | Bin 0 -> 337 bytes tests_zemu/snapshots/s-op-inflation/00003.png | Bin 0 -> 444 bytes tests_zemu/snapshots/s-op-inflation/00004.png | Bin 0 -> 463 bytes tests_zemu/snapshots/s-op-inflation/00005.png | Bin 0 -> 403 bytes tests_zemu/snapshots/s-op-inflation/00006.png | Bin 0 -> 366 bytes tests_zemu/snapshots/s-op-inflation/00007.png | Bin 0 -> 408 bytes tests_zemu/snapshots/s-op-inflation/00008.png | Bin 0 -> 389 bytes tests_zemu/snapshots/s-op-inflation/00009.png | Bin 0 -> 428 bytes .../s-op-liquidity-pool-deposit/00000.png | Bin 0 -> 379 bytes .../s-op-liquidity-pool-deposit/00001.png | Bin 0 -> 341 bytes .../s-op-liquidity-pool-deposit/00002.png | Bin 0 -> 337 bytes .../s-op-liquidity-pool-deposit/00003.png | Bin 0 -> 444 bytes .../s-op-liquidity-pool-deposit/00004.png | Bin 0 -> 463 bytes .../s-op-liquidity-pool-deposit/00005.png | Bin 0 -> 403 bytes .../s-op-liquidity-pool-deposit/00006.png | Bin 0 -> 470 bytes .../s-op-liquidity-pool-deposit/00007.png | Bin 0 -> 429 bytes .../s-op-liquidity-pool-deposit/00008.png | Bin 0 -> 509 bytes .../s-op-liquidity-pool-deposit/00009.png | Bin 0 -> 511 bytes .../s-op-liquidity-pool-deposit/00010.png | Bin 0 -> 516 bytes .../s-op-liquidity-pool-deposit/00011.png | Bin 0 -> 443 bytes .../s-op-liquidity-pool-deposit/00012.png | Bin 0 -> 330 bytes .../s-op-liquidity-pool-deposit/00013.png | Bin 0 -> 368 bytes .../s-op-liquidity-pool-deposit/00014.png | Bin 0 -> 389 bytes .../s-op-liquidity-pool-deposit/00015.png | Bin 0 -> 318 bytes .../s-op-liquidity-pool-deposit/00016.png | Bin 0 -> 408 bytes .../s-op-liquidity-pool-deposit/00017.png | Bin 0 -> 389 bytes .../s-op-liquidity-pool-deposit/00018.png | Bin 0 -> 428 bytes .../s-op-liquidity-pool-withdraw/00000.png | Bin 0 -> 379 bytes .../s-op-liquidity-pool-withdraw/00001.png | Bin 0 -> 341 bytes .../s-op-liquidity-pool-withdraw/00002.png | Bin 0 -> 337 bytes .../s-op-liquidity-pool-withdraw/00003.png | Bin 0 -> 444 bytes .../s-op-liquidity-pool-withdraw/00004.png | Bin 0 -> 463 bytes .../s-op-liquidity-pool-withdraw/00005.png | Bin 0 -> 403 bytes .../s-op-liquidity-pool-withdraw/00006.png | Bin 0 -> 470 bytes .../s-op-liquidity-pool-withdraw/00007.png | Bin 0 -> 436 bytes .../s-op-liquidity-pool-withdraw/00008.png | Bin 0 -> 509 bytes .../s-op-liquidity-pool-withdraw/00009.png | Bin 0 -> 511 bytes .../s-op-liquidity-pool-withdraw/00010.png | Bin 0 -> 516 bytes .../s-op-liquidity-pool-withdraw/00011.png | Bin 0 -> 443 bytes .../s-op-liquidity-pool-withdraw/00012.png | Bin 0 -> 280 bytes .../s-op-liquidity-pool-withdraw/00013.png | Bin 0 -> 327 bytes .../s-op-liquidity-pool-withdraw/00014.png | Bin 0 -> 355 bytes .../s-op-liquidity-pool-withdraw/00015.png | Bin 0 -> 408 bytes .../s-op-liquidity-pool-withdraw/00016.png | Bin 0 -> 389 bytes .../s-op-liquidity-pool-withdraw/00017.png | Bin 0 -> 428 bytes .../s-op-manage-buy-offer-create/00000.png | Bin 0 -> 379 bytes .../s-op-manage-buy-offer-create/00001.png | Bin 0 -> 341 bytes .../s-op-manage-buy-offer-create/00002.png | Bin 0 -> 337 bytes .../s-op-manage-buy-offer-create/00003.png | Bin 0 -> 444 bytes .../s-op-manage-buy-offer-create/00004.png | Bin 0 -> 463 bytes .../s-op-manage-buy-offer-create/00005.png | Bin 0 -> 403 bytes .../s-op-manage-buy-offer-create/00006.png | Bin 0 -> 408 bytes .../s-op-manage-buy-offer-create/00007.png | Bin 0 -> 385 bytes .../s-op-manage-buy-offer-create/00008.png | Bin 0 -> 421 bytes .../s-op-manage-buy-offer-create/00009.png | Bin 0 -> 341 bytes .../s-op-manage-buy-offer-create/00010.png | Bin 0 -> 365 bytes .../s-op-manage-buy-offer-create/00011.png | Bin 0 -> 408 bytes .../s-op-manage-buy-offer-create/00012.png | Bin 0 -> 389 bytes .../s-op-manage-buy-offer-create/00013.png | Bin 0 -> 428 bytes .../s-op-manage-buy-offer-delete/00000.png | Bin 0 -> 379 bytes .../s-op-manage-buy-offer-delete/00001.png | Bin 0 -> 341 bytes .../s-op-manage-buy-offer-delete/00002.png | Bin 0 -> 337 bytes .../s-op-manage-buy-offer-delete/00003.png | Bin 0 -> 444 bytes .../s-op-manage-buy-offer-delete/00004.png | Bin 0 -> 463 bytes .../s-op-manage-buy-offer-delete/00005.png | Bin 0 -> 403 bytes .../s-op-manage-buy-offer-delete/00006.png | Bin 0 -> 387 bytes .../s-op-manage-buy-offer-delete/00007.png | Bin 0 -> 408 bytes .../s-op-manage-buy-offer-delete/00008.png | Bin 0 -> 389 bytes .../s-op-manage-buy-offer-delete/00009.png | Bin 0 -> 428 bytes .../s-op-manage-buy-offer-update/00000.png | Bin 0 -> 379 bytes .../s-op-manage-buy-offer-update/00001.png | Bin 0 -> 341 bytes .../s-op-manage-buy-offer-update/00002.png | Bin 0 -> 337 bytes .../s-op-manage-buy-offer-update/00003.png | Bin 0 -> 444 bytes .../s-op-manage-buy-offer-update/00004.png | Bin 0 -> 463 bytes .../s-op-manage-buy-offer-update/00005.png | Bin 0 -> 403 bytes .../s-op-manage-buy-offer-update/00006.png | Bin 0 -> 406 bytes .../s-op-manage-buy-offer-update/00007.png | Bin 0 -> 385 bytes .../s-op-manage-buy-offer-update/00008.png | Bin 0 -> 421 bytes .../s-op-manage-buy-offer-update/00009.png | Bin 0 -> 341 bytes .../s-op-manage-buy-offer-update/00010.png | Bin 0 -> 365 bytes .../s-op-manage-buy-offer-update/00011.png | Bin 0 -> 408 bytes .../s-op-manage-buy-offer-update/00012.png | Bin 0 -> 389 bytes .../s-op-manage-buy-offer-update/00013.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 481 bytes .../00007.png | Bin 0 -> 390 bytes .../00008.png | Bin 0 -> 387 bytes .../00009.png | Bin 0 -> 388 bytes .../00010.png | Bin 0 -> 489 bytes .../00011.png | Bin 0 -> 408 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../snapshots/s-op-manage-data-add/00000.png | Bin 0 -> 379 bytes .../snapshots/s-op-manage-data-add/00001.png | Bin 0 -> 341 bytes .../snapshots/s-op-manage-data-add/00002.png | Bin 0 -> 337 bytes .../snapshots/s-op-manage-data-add/00003.png | Bin 0 -> 444 bytes .../snapshots/s-op-manage-data-add/00004.png | Bin 0 -> 463 bytes .../snapshots/s-op-manage-data-add/00005.png | Bin 0 -> 403 bytes .../snapshots/s-op-manage-data-add/00006.png | Bin 0 -> 481 bytes .../snapshots/s-op-manage-data-add/00007.png | Bin 0 -> 390 bytes .../snapshots/s-op-manage-data-add/00008.png | Bin 0 -> 387 bytes .../snapshots/s-op-manage-data-add/00009.png | Bin 0 -> 388 bytes .../snapshots/s-op-manage-data-add/00010.png | Bin 0 -> 433 bytes .../snapshots/s-op-manage-data-add/00011.png | Bin 0 -> 390 bytes .../snapshots/s-op-manage-data-add/00012.png | Bin 0 -> 384 bytes .../snapshots/s-op-manage-data-add/00013.png | Bin 0 -> 388 bytes .../snapshots/s-op-manage-data-add/00014.png | Bin 0 -> 408 bytes .../snapshots/s-op-manage-data-add/00015.png | Bin 0 -> 389 bytes .../snapshots/s-op-manage-data-add/00016.png | Bin 0 -> 428 bytes .../s-op-manage-data-remove/00000.png | Bin 0 -> 379 bytes .../s-op-manage-data-remove/00001.png | Bin 0 -> 341 bytes .../s-op-manage-data-remove/00002.png | Bin 0 -> 337 bytes .../s-op-manage-data-remove/00003.png | Bin 0 -> 444 bytes .../s-op-manage-data-remove/00004.png | Bin 0 -> 463 bytes .../s-op-manage-data-remove/00005.png | Bin 0 -> 403 bytes .../s-op-manage-data-remove/00006.png | Bin 0 -> 503 bytes .../s-op-manage-data-remove/00007.png | Bin 0 -> 407 bytes .../s-op-manage-data-remove/00008.png | Bin 0 -> 405 bytes .../s-op-manage-data-remove/00009.png | Bin 0 -> 404 bytes .../s-op-manage-data-remove/00010.png | Bin 0 -> 408 bytes .../s-op-manage-data-remove/00011.png | Bin 0 -> 389 bytes .../s-op-manage-data-remove/00012.png | Bin 0 -> 428 bytes .../s-op-manage-sell-offer-create/00000.png | Bin 0 -> 379 bytes .../s-op-manage-sell-offer-create/00001.png | Bin 0 -> 341 bytes .../s-op-manage-sell-offer-create/00002.png | Bin 0 -> 337 bytes .../s-op-manage-sell-offer-create/00003.png | Bin 0 -> 444 bytes .../s-op-manage-sell-offer-create/00004.png | Bin 0 -> 463 bytes .../s-op-manage-sell-offer-create/00005.png | Bin 0 -> 403 bytes .../s-op-manage-sell-offer-create/00006.png | Bin 0 -> 408 bytes .../s-op-manage-sell-offer-create/00007.png | Bin 0 -> 288 bytes .../s-op-manage-sell-offer-create/00008.png | Bin 0 -> 433 bytes .../s-op-manage-sell-offer-create/00009.png | Bin 0 -> 429 bytes .../s-op-manage-sell-offer-create/00010.png | Bin 0 -> 387 bytes .../s-op-manage-sell-offer-create/00011.png | Bin 0 -> 408 bytes .../s-op-manage-sell-offer-create/00012.png | Bin 0 -> 389 bytes .../s-op-manage-sell-offer-create/00013.png | Bin 0 -> 428 bytes .../s-op-manage-sell-offer-delete/00000.png | Bin 0 -> 379 bytes .../s-op-manage-sell-offer-delete/00001.png | Bin 0 -> 341 bytes .../s-op-manage-sell-offer-delete/00002.png | Bin 0 -> 337 bytes .../s-op-manage-sell-offer-delete/00003.png | Bin 0 -> 444 bytes .../s-op-manage-sell-offer-delete/00004.png | Bin 0 -> 463 bytes .../s-op-manage-sell-offer-delete/00005.png | Bin 0 -> 403 bytes .../s-op-manage-sell-offer-delete/00006.png | Bin 0 -> 382 bytes .../s-op-manage-sell-offer-delete/00007.png | Bin 0 -> 408 bytes .../s-op-manage-sell-offer-delete/00008.png | Bin 0 -> 389 bytes .../s-op-manage-sell-offer-delete/00009.png | Bin 0 -> 428 bytes .../s-op-manage-sell-offer-update/00000.png | Bin 0 -> 379 bytes .../s-op-manage-sell-offer-update/00001.png | Bin 0 -> 341 bytes .../s-op-manage-sell-offer-update/00002.png | Bin 0 -> 337 bytes .../s-op-manage-sell-offer-update/00003.png | Bin 0 -> 444 bytes .../s-op-manage-sell-offer-update/00004.png | Bin 0 -> 463 bytes .../s-op-manage-sell-offer-update/00005.png | Bin 0 -> 403 bytes .../s-op-manage-sell-offer-update/00006.png | Bin 0 -> 408 bytes .../s-op-manage-sell-offer-update/00007.png | Bin 0 -> 288 bytes .../s-op-manage-sell-offer-update/00008.png | Bin 0 -> 433 bytes .../s-op-manage-sell-offer-update/00009.png | Bin 0 -> 429 bytes .../s-op-manage-sell-offer-update/00010.png | Bin 0 -> 387 bytes .../s-op-manage-sell-offer-update/00011.png | Bin 0 -> 408 bytes .../s-op-manage-sell-offer-update/00012.png | Bin 0 -> 389 bytes .../s-op-manage-sell-offer-update/00013.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 425 bytes .../00007.png | Bin 0 -> 500 bytes .../00008.png | Bin 0 -> 487 bytes .../00009.png | Bin 0 -> 494 bytes .../00010.png | Bin 0 -> 429 bytes .../00011.png | Bin 0 -> 446 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 425 bytes .../00007.png | Bin 0 -> 488 bytes .../00008.png | Bin 0 -> 493 bytes .../00009.png | Bin 0 -> 491 bytes .../00010.png | Bin 0 -> 416 bytes .../00011.png | Bin 0 -> 409 bytes .../00012.png | Bin 0 -> 446 bytes .../00013.png | Bin 0 -> 408 bytes .../00014.png | Bin 0 -> 389 bytes .../00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 425 bytes .../00007.png | Bin 0 -> 500 bytes .../00008.png | Bin 0 -> 487 bytes .../00009.png | Bin 0 -> 494 bytes .../00010.png | Bin 0 -> 429 bytes .../00011.png | Bin 0 -> 446 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 345 bytes .../00007.png | Bin 0 -> 433 bytes .../00008.png | Bin 0 -> 500 bytes .../00009.png | Bin 0 -> 487 bytes .../00010.png | Bin 0 -> 494 bytes .../00011.png | Bin 0 -> 429 bytes .../00012.png | Bin 0 -> 454 bytes .../00013.png | Bin 0 -> 408 bytes .../00014.png | Bin 0 -> 389 bytes .../00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 345 bytes .../00007.png | Bin 0 -> 433 bytes .../00008.png | Bin 0 -> 488 bytes .../00009.png | Bin 0 -> 493 bytes .../00010.png | Bin 0 -> 491 bytes .../00011.png | Bin 0 -> 416 bytes .../00012.png | Bin 0 -> 409 bytes .../00013.png | Bin 0 -> 454 bytes .../00014.png | Bin 0 -> 408 bytes .../00015.png | Bin 0 -> 389 bytes .../00016.png | Bin 0 -> 428 bytes .../s-op-path-payment-strict-send/00000.png | Bin 0 -> 379 bytes .../s-op-path-payment-strict-send/00001.png | Bin 0 -> 341 bytes .../s-op-path-payment-strict-send/00002.png | Bin 0 -> 337 bytes .../s-op-path-payment-strict-send/00003.png | Bin 0 -> 444 bytes .../s-op-path-payment-strict-send/00004.png | Bin 0 -> 463 bytes .../s-op-path-payment-strict-send/00005.png | Bin 0 -> 403 bytes .../s-op-path-payment-strict-send/00006.png | Bin 0 -> 345 bytes .../s-op-path-payment-strict-send/00007.png | Bin 0 -> 433 bytes .../s-op-path-payment-strict-send/00008.png | Bin 0 -> 500 bytes .../s-op-path-payment-strict-send/00009.png | Bin 0 -> 487 bytes .../s-op-path-payment-strict-send/00010.png | Bin 0 -> 494 bytes .../s-op-path-payment-strict-send/00011.png | Bin 0 -> 429 bytes .../s-op-path-payment-strict-send/00012.png | Bin 0 -> 454 bytes .../s-op-path-payment-strict-send/00013.png | Bin 0 -> 408 bytes .../s-op-path-payment-strict-send/00014.png | Bin 0 -> 389 bytes .../s-op-path-payment-strict-send/00015.png | Bin 0 -> 428 bytes .../s-op-payment-asset-alphanum12/00000.png | Bin 0 -> 379 bytes .../s-op-payment-asset-alphanum12/00001.png | Bin 0 -> 341 bytes .../s-op-payment-asset-alphanum12/00002.png | Bin 0 -> 337 bytes .../s-op-payment-asset-alphanum12/00003.png | Bin 0 -> 444 bytes .../s-op-payment-asset-alphanum12/00004.png | Bin 0 -> 463 bytes .../s-op-payment-asset-alphanum12/00005.png | Bin 0 -> 403 bytes .../s-op-payment-asset-alphanum12/00006.png | Bin 0 -> 444 bytes .../s-op-payment-asset-alphanum12/00007.png | Bin 0 -> 332 bytes .../s-op-payment-asset-alphanum12/00008.png | Bin 0 -> 381 bytes .../s-op-payment-asset-alphanum12/00009.png | Bin 0 -> 377 bytes .../s-op-payment-asset-alphanum12/00010.png | Bin 0 -> 500 bytes .../s-op-payment-asset-alphanum12/00011.png | Bin 0 -> 487 bytes .../s-op-payment-asset-alphanum12/00012.png | Bin 0 -> 494 bytes .../s-op-payment-asset-alphanum12/00013.png | Bin 0 -> 429 bytes .../s-op-payment-asset-alphanum12/00014.png | Bin 0 -> 408 bytes .../s-op-payment-asset-alphanum12/00015.png | Bin 0 -> 389 bytes .../s-op-payment-asset-alphanum12/00016.png | Bin 0 -> 428 bytes .../s-op-payment-asset-alphanum4/00000.png | Bin 0 -> 379 bytes .../s-op-payment-asset-alphanum4/00001.png | Bin 0 -> 341 bytes .../s-op-payment-asset-alphanum4/00002.png | Bin 0 -> 337 bytes .../s-op-payment-asset-alphanum4/00003.png | Bin 0 -> 444 bytes .../s-op-payment-asset-alphanum4/00004.png | Bin 0 -> 463 bytes .../s-op-payment-asset-alphanum4/00005.png | Bin 0 -> 403 bytes .../s-op-payment-asset-alphanum4/00006.png | Bin 0 -> 444 bytes .../s-op-payment-asset-alphanum4/00007.png | Bin 0 -> 451 bytes .../s-op-payment-asset-alphanum4/00008.png | Bin 0 -> 500 bytes .../s-op-payment-asset-alphanum4/00009.png | Bin 0 -> 487 bytes .../s-op-payment-asset-alphanum4/00010.png | Bin 0 -> 494 bytes .../s-op-payment-asset-alphanum4/00011.png | Bin 0 -> 429 bytes .../s-op-payment-asset-alphanum4/00012.png | Bin 0 -> 408 bytes .../s-op-payment-asset-alphanum4/00013.png | Bin 0 -> 389 bytes .../s-op-payment-asset-alphanum4/00014.png | Bin 0 -> 428 bytes .../s-op-payment-asset-native/00000.png | Bin 0 -> 379 bytes .../s-op-payment-asset-native/00001.png | Bin 0 -> 341 bytes .../s-op-payment-asset-native/00002.png | Bin 0 -> 337 bytes .../s-op-payment-asset-native/00003.png | Bin 0 -> 444 bytes .../s-op-payment-asset-native/00004.png | Bin 0 -> 463 bytes .../s-op-payment-asset-native/00005.png | Bin 0 -> 403 bytes .../s-op-payment-asset-native/00006.png | Bin 0 -> 444 bytes .../s-op-payment-asset-native/00007.png | Bin 0 -> 363 bytes .../s-op-payment-asset-native/00008.png | Bin 0 -> 500 bytes .../s-op-payment-asset-native/00009.png | Bin 0 -> 487 bytes .../s-op-payment-asset-native/00010.png | Bin 0 -> 494 bytes .../s-op-payment-asset-native/00011.png | Bin 0 -> 429 bytes .../s-op-payment-asset-native/00012.png | Bin 0 -> 408 bytes .../s-op-payment-asset-native/00013.png | Bin 0 -> 389 bytes .../s-op-payment-asset-native/00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 444 bytes .../00007.png | Bin 0 -> 363 bytes .../00008.png | Bin 0 -> 488 bytes .../00009.png | Bin 0 -> 493 bytes .../00010.png | Bin 0 -> 491 bytes .../00011.png | Bin 0 -> 416 bytes .../00012.png | Bin 0 -> 409 bytes .../00013.png | Bin 0 -> 408 bytes .../00014.png | Bin 0 -> 389 bytes .../00015.png | Bin 0 -> 428 bytes .../s-op-revoke-sponsorship-account/00000.png | Bin 0 -> 379 bytes .../s-op-revoke-sponsorship-account/00001.png | Bin 0 -> 341 bytes .../s-op-revoke-sponsorship-account/00002.png | Bin 0 -> 337 bytes .../s-op-revoke-sponsorship-account/00003.png | Bin 0 -> 444 bytes .../s-op-revoke-sponsorship-account/00004.png | Bin 0 -> 463 bytes .../s-op-revoke-sponsorship-account/00005.png | Bin 0 -> 403 bytes .../s-op-revoke-sponsorship-account/00006.png | Bin 0 -> 516 bytes .../s-op-revoke-sponsorship-account/00007.png | Bin 0 -> 462 bytes .../s-op-revoke-sponsorship-account/00008.png | Bin 0 -> 491 bytes .../s-op-revoke-sponsorship-account/00009.png | Bin 0 -> 480 bytes .../s-op-revoke-sponsorship-account/00010.png | Bin 0 -> 483 bytes .../s-op-revoke-sponsorship-account/00011.png | Bin 0 -> 418 bytes .../s-op-revoke-sponsorship-account/00012.png | Bin 0 -> 408 bytes .../s-op-revoke-sponsorship-account/00013.png | Bin 0 -> 389 bytes .../s-op-revoke-sponsorship-account/00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 515 bytes .../00007.png | Bin 0 -> 480 bytes .../00008.png | Bin 0 -> 461 bytes .../00009.png | Bin 0 -> 418 bytes .../00010.png | Bin 0 -> 492 bytes .../00011.png | Bin 0 -> 491 bytes .../00012.png | Bin 0 -> 475 bytes .../00013.png | Bin 0 -> 323 bytes .../00014.png | Bin 0 -> 408 bytes .../00015.png | Bin 0 -> 389 bytes .../00016.png | Bin 0 -> 428 bytes .../s-op-revoke-sponsorship-data/00000.png | Bin 0 -> 379 bytes .../s-op-revoke-sponsorship-data/00001.png | Bin 0 -> 341 bytes .../s-op-revoke-sponsorship-data/00002.png | Bin 0 -> 337 bytes .../s-op-revoke-sponsorship-data/00003.png | Bin 0 -> 444 bytes .../s-op-revoke-sponsorship-data/00004.png | Bin 0 -> 463 bytes .../s-op-revoke-sponsorship-data/00005.png | Bin 0 -> 403 bytes .../s-op-revoke-sponsorship-data/00006.png | Bin 0 -> 516 bytes .../s-op-revoke-sponsorship-data/00007.png | Bin 0 -> 426 bytes .../s-op-revoke-sponsorship-data/00008.png | Bin 0 -> 491 bytes .../s-op-revoke-sponsorship-data/00009.png | Bin 0 -> 480 bytes .../s-op-revoke-sponsorship-data/00010.png | Bin 0 -> 483 bytes .../s-op-revoke-sponsorship-data/00011.png | Bin 0 -> 418 bytes .../s-op-revoke-sponsorship-data/00012.png | Bin 0 -> 488 bytes .../s-op-revoke-sponsorship-data/00013.png | Bin 0 -> 390 bytes .../s-op-revoke-sponsorship-data/00014.png | Bin 0 -> 388 bytes .../s-op-revoke-sponsorship-data/00015.png | Bin 0 -> 395 bytes .../s-op-revoke-sponsorship-data/00016.png | Bin 0 -> 408 bytes .../s-op-revoke-sponsorship-data/00017.png | Bin 0 -> 389 bytes .../s-op-revoke-sponsorship-data/00018.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 516 bytes .../00007.png | Bin 0 -> 495 bytes .../00008.png | Bin 0 -> 491 bytes .../00009.png | Bin 0 -> 480 bytes .../00010.png | Bin 0 -> 483 bytes .../00011.png | Bin 0 -> 418 bytes .../00012.png | Bin 0 -> 424 bytes .../00013.png | Bin 0 -> 529 bytes .../00014.png | Bin 0 -> 510 bytes .../00015.png | Bin 0 -> 515 bytes .../00016.png | Bin 0 -> 452 bytes .../00017.png | Bin 0 -> 408 bytes .../00018.png | Bin 0 -> 389 bytes .../00019.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 516 bytes .../00007.png | Bin 0 -> 495 bytes .../00008.png | Bin 0 -> 491 bytes .../00009.png | Bin 0 -> 480 bytes .../00010.png | Bin 0 -> 483 bytes .../00011.png | Bin 0 -> 418 bytes .../00012.png | Bin 0 -> 424 bytes .../00013.png | Bin 0 -> 534 bytes .../00014.png | Bin 0 -> 497 bytes .../00015.png | Bin 0 -> 524 bytes .../00016.png | Bin 0 -> 454 bytes .../00017.png | Bin 0 -> 408 bytes .../00018.png | Bin 0 -> 389 bytes .../00019.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 516 bytes .../00007.png | Bin 0 -> 471 bytes .../00008.png | Bin 0 -> 503 bytes .../00009.png | Bin 0 -> 523 bytes .../00010.png | Bin 0 -> 509 bytes .../00011.png | Bin 0 -> 453 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../s-op-revoke-sponsorship-offer/00000.png | Bin 0 -> 379 bytes .../s-op-revoke-sponsorship-offer/00001.png | Bin 0 -> 341 bytes .../s-op-revoke-sponsorship-offer/00002.png | Bin 0 -> 337 bytes .../s-op-revoke-sponsorship-offer/00003.png | Bin 0 -> 444 bytes .../s-op-revoke-sponsorship-offer/00004.png | Bin 0 -> 463 bytes .../s-op-revoke-sponsorship-offer/00005.png | Bin 0 -> 403 bytes .../s-op-revoke-sponsorship-offer/00006.png | Bin 0 -> 516 bytes .../s-op-revoke-sponsorship-offer/00007.png | Bin 0 -> 440 bytes .../s-op-revoke-sponsorship-offer/00008.png | Bin 0 -> 495 bytes .../s-op-revoke-sponsorship-offer/00009.png | Bin 0 -> 477 bytes .../s-op-revoke-sponsorship-offer/00010.png | Bin 0 -> 490 bytes .../s-op-revoke-sponsorship-offer/00011.png | Bin 0 -> 423 bytes .../s-op-revoke-sponsorship-offer/00012.png | Bin 0 -> 327 bytes .../s-op-revoke-sponsorship-offer/00013.png | Bin 0 -> 408 bytes .../s-op-revoke-sponsorship-offer/00014.png | Bin 0 -> 389 bytes .../s-op-revoke-sponsorship-offer/00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 516 bytes .../00007.png | Bin 0 -> 495 bytes .../00008.png | Bin 0 -> 491 bytes .../00009.png | Bin 0 -> 480 bytes .../00010.png | Bin 0 -> 483 bytes .../00011.png | Bin 0 -> 418 bytes .../00012.png | Bin 0 -> 416 bytes .../00013.png | Bin 0 -> 510 bytes .../00014.png | Bin 0 -> 500 bytes .../00015.png | Bin 0 -> 521 bytes .../00016.png | Bin 0 -> 462 bytes .../00017.png | Bin 0 -> 408 bytes .../00018.png | Bin 0 -> 389 bytes .../00019.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 516 bytes .../00007.png | Bin 0 -> 464 bytes .../00008.png | Bin 0 -> 491 bytes .../00009.png | Bin 0 -> 480 bytes .../00010.png | Bin 0 -> 483 bytes .../00011.png | Bin 0 -> 418 bytes .../00012.png | Bin 0 -> 398 bytes .../00013.png | Bin 0 -> 408 bytes .../00014.png | Bin 0 -> 389 bytes .../00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 516 bytes .../00007.png | Bin 0 -> 464 bytes .../00008.png | Bin 0 -> 491 bytes .../00009.png | Bin 0 -> 480 bytes .../00010.png | Bin 0 -> 483 bytes .../00011.png | Bin 0 -> 418 bytes .../00012.png | Bin 0 -> 509 bytes .../00013.png | Bin 0 -> 511 bytes .../00014.png | Bin 0 -> 516 bytes .../00015.png | Bin 0 -> 443 bytes .../00016.png | Bin 0 -> 408 bytes .../00017.png | Bin 0 -> 389 bytes .../00018.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 419 bytes .../00008.png | Bin 0 -> 534 bytes .../00009.png | Bin 0 -> 497 bytes .../00010.png | Bin 0 -> 524 bytes .../00011.png | Bin 0 -> 454 bytes .../00012.png | Bin 0 -> 277 bytes .../00013.png | Bin 0 -> 408 bytes .../00014.png | Bin 0 -> 389 bytes .../00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 427 bytes .../00008.png | Bin 0 -> 510 bytes .../00009.png | Bin 0 -> 500 bytes .../00010.png | Bin 0 -> 521 bytes .../00011.png | Bin 0 -> 462 bytes .../00012.png | Bin 0 -> 277 bytes .../00013.png | Bin 0 -> 408 bytes .../00014.png | Bin 0 -> 389 bytes .../00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 424 bytes .../00008.png | Bin 0 -> 529 bytes .../00009.png | Bin 0 -> 515 bytes .../00010.png | Bin 0 -> 515 bytes .../00011.png | Bin 0 -> 456 bytes .../00012.png | Bin 0 -> 277 bytes .../00013.png | Bin 0 -> 408 bytes .../00014.png | Bin 0 -> 389 bytes .../00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 399 bytes .../00008.png | Bin 0 -> 408 bytes .../00009.png | Bin 0 -> 389 bytes .../00010.png | Bin 0 -> 428 bytes .../snapshots/s-op-set-options/00000.png | Bin 0 -> 379 bytes .../snapshots/s-op-set-options/00001.png | Bin 0 -> 341 bytes .../snapshots/s-op-set-options/00002.png | Bin 0 -> 337 bytes .../snapshots/s-op-set-options/00003.png | Bin 0 -> 444 bytes .../snapshots/s-op-set-options/00004.png | Bin 0 -> 463 bytes .../snapshots/s-op-set-options/00005.png | Bin 0 -> 403 bytes .../snapshots/s-op-set-options/00006.png | Bin 0 -> 408 bytes .../snapshots/s-op-set-options/00007.png | Bin 0 -> 520 bytes .../snapshots/s-op-set-options/00008.png | Bin 0 -> 503 bytes .../snapshots/s-op-set-options/00009.png | Bin 0 -> 512 bytes .../snapshots/s-op-set-options/00010.png | Bin 0 -> 443 bytes .../snapshots/s-op-set-options/00011.png | Bin 0 -> 511 bytes .../snapshots/s-op-set-options/00012.png | Bin 0 -> 448 bytes .../snapshots/s-op-set-options/00013.png | Bin 0 -> 426 bytes .../snapshots/s-op-set-options/00014.png | Bin 0 -> 370 bytes .../snapshots/s-op-set-options/00015.png | Bin 0 -> 294 bytes .../snapshots/s-op-set-options/00016.png | Bin 0 -> 328 bytes .../snapshots/s-op-set-options/00017.png | Bin 0 -> 319 bytes .../snapshots/s-op-set-options/00018.png | Bin 0 -> 361 bytes .../snapshots/s-op-set-options/00019.png | Bin 0 -> 424 bytes .../snapshots/s-op-set-options/00020.png | Bin 0 -> 529 bytes .../snapshots/s-op-set-options/00021.png | Bin 0 -> 510 bytes .../snapshots/s-op-set-options/00022.png | Bin 0 -> 515 bytes .../snapshots/s-op-set-options/00023.png | Bin 0 -> 452 bytes .../snapshots/s-op-set-options/00024.png | Bin 0 -> 277 bytes .../snapshots/s-op-set-options/00025.png | Bin 0 -> 408 bytes .../snapshots/s-op-set-options/00026.png | Bin 0 -> 389 bytes .../snapshots/s-op-set-options/00027.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 478 bytes .../00007.png | Bin 0 -> 473 bytes .../00008.png | Bin 0 -> 454 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 396 bytes .../00011.png | Bin 0 -> 422 bytes .../00012.png | Bin 0 -> 472 bytes .../00013.png | Bin 0 -> 446 bytes .../00014.png | Bin 0 -> 442 bytes .../00015.png | Bin 0 -> 452 bytes .../00016.png | Bin 0 -> 443 bytes .../00017.png | Bin 0 -> 467 bytes .../00018.png | Bin 0 -> 439 bytes .../00019.png | Bin 0 -> 408 bytes .../00020.png | Bin 0 -> 389 bytes .../00021.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 478 bytes .../00007.png | Bin 0 -> 473 bytes .../00008.png | Bin 0 -> 454 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 396 bytes .../00011.png | Bin 0 -> 422 bytes .../00012.png | Bin 0 -> 458 bytes .../00013.png | Bin 0 -> 444 bytes .../00014.png | Bin 0 -> 474 bytes .../00015.png | Bin 0 -> 442 bytes .../00016.png | Bin 0 -> 470 bytes .../00017.png | Bin 0 -> 441 bytes .../00018.png | Bin 0 -> 432 bytes .../00019.png | Bin 0 -> 408 bytes .../00020.png | Bin 0 -> 389 bytes .../00021.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 478 bytes .../00007.png | Bin 0 -> 473 bytes .../00008.png | Bin 0 -> 454 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 396 bytes .../00011.png | Bin 0 -> 422 bytes .../00012.png | Bin 0 -> 436 bytes .../00013.png | Bin 0 -> 471 bytes .../00014.png | Bin 0 -> 441 bytes .../00015.png | Bin 0 -> 452 bytes .../00016.png | Bin 0 -> 477 bytes .../00017.png | Bin 0 -> 443 bytes .../00018.png | Bin 0 -> 438 bytes .../00019.png | Bin 0 -> 408 bytes .../00020.png | Bin 0 -> 389 bytes .../00021.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 478 bytes .../00007.png | Bin 0 -> 473 bytes .../00008.png | Bin 0 -> 454 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 396 bytes .../00011.png | Bin 0 -> 422 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 469 bytes .../00014.png | Bin 0 -> 440 bytes .../00015.png | Bin 0 -> 453 bytes .../00016.png | Bin 0 -> 433 bytes .../00017.png | Bin 0 -> 465 bytes .../00018.png | Bin 0 -> 430 bytes .../00019.png | Bin 0 -> 340 bytes .../00020.png | Bin 0 -> 408 bytes .../00021.png | Bin 0 -> 389 bytes .../00022.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 495 bytes .../00006.png | Bin 0 -> 490 bytes .../00007.png | Bin 0 -> 486 bytes .../00008.png | Bin 0 -> 419 bytes .../00009.png | Bin 0 -> 428 bytes .../00010.png | Bin 0 -> 377 bytes .../00011.png | Bin 0 -> 493 bytes .../00012.png | Bin 0 -> 495 bytes .../00013.png | Bin 0 -> 477 bytes .../00014.png | Bin 0 -> 428 bytes .../00015.png | Bin 0 -> 389 bytes .../00016.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 473 bytes .../00006.png | Bin 0 -> 495 bytes .../00007.png | Bin 0 -> 480 bytes .../00008.png | Bin 0 -> 444 bytes .../00009.png | Bin 0 -> 384 bytes .../00010.png | Bin 0 -> 428 bytes .../00011.png | Bin 0 -> 377 bytes .../00012.png | Bin 0 -> 475 bytes .../00013.png | Bin 0 -> 492 bytes .../00014.png | Bin 0 -> 473 bytes .../00015.png | Bin 0 -> 451 bytes .../00016.png | Bin 0 -> 385 bytes .../00017.png | Bin 0 -> 389 bytes .../00018.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 473 bytes .../00006.png | Bin 0 -> 495 bytes .../00007.png | Bin 0 -> 480 bytes .../00008.png | Bin 0 -> 444 bytes .../00009.png | Bin 0 -> 384 bytes .../00010.png | Bin 0 -> 428 bytes .../00011.png | Bin 0 -> 377 bytes .../00012.png | Bin 0 -> 493 bytes .../00013.png | Bin 0 -> 495 bytes .../00014.png | Bin 0 -> 477 bytes .../00015.png | Bin 0 -> 428 bytes .../00016.png | Bin 0 -> 389 bytes .../00017.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 428 bytes .../00007.png | Bin 0 -> 377 bytes .../00008.png | Bin 0 -> 475 bytes .../00009.png | Bin 0 -> 492 bytes .../00010.png | Bin 0 -> 473 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 385 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 428 bytes .../00007.png | Bin 0 -> 377 bytes .../00008.png | Bin 0 -> 408 bytes .../00009.png | Bin 0 -> 389 bytes .../00010.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 495 bytes .../00006.png | Bin 0 -> 490 bytes .../00007.png | Bin 0 -> 486 bytes .../00008.png | Bin 0 -> 419 bytes .../00009.png | Bin 0 -> 428 bytes .../00010.png | Bin 0 -> 377 bytes .../00011.png | Bin 0 -> 503 bytes .../00012.png | Bin 0 -> 487 bytes .../00013.png | Bin 0 -> 488 bytes .../00014.png | Bin 0 -> 429 bytes .../00015.png | Bin 0 -> 389 bytes .../00016.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 428 bytes .../00007.png | Bin 0 -> 377 bytes .../00008.png | Bin 0 -> 503 bytes .../00009.png | Bin 0 -> 487 bytes .../00010.png | Bin 0 -> 488 bytes .../00011.png | Bin 0 -> 429 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../s-op-with-empty-source/00000.png | Bin 0 -> 379 bytes .../s-op-with-empty-source/00001.png | Bin 0 -> 341 bytes .../s-op-with-empty-source/00002.png | Bin 0 -> 337 bytes .../s-op-with-empty-source/00003.png | Bin 0 -> 444 bytes .../s-op-with-empty-source/00004.png | Bin 0 -> 463 bytes .../s-op-with-empty-source/00005.png | Bin 0 -> 403 bytes .../s-op-with-empty-source/00006.png | Bin 0 -> 444 bytes .../s-op-with-empty-source/00007.png | Bin 0 -> 363 bytes .../s-op-with-empty-source/00008.png | Bin 0 -> 500 bytes .../s-op-with-empty-source/00009.png | Bin 0 -> 487 bytes .../s-op-with-empty-source/00010.png | Bin 0 -> 494 bytes .../s-op-with-empty-source/00011.png | Bin 0 -> 429 bytes .../s-op-with-empty-source/00012.png | Bin 0 -> 389 bytes .../s-op-with-empty-source/00013.png | Bin 0 -> 428 bytes .../s-op-with-muxed-source/00000.png | Bin 0 -> 379 bytes .../s-op-with-muxed-source/00001.png | Bin 0 -> 341 bytes .../s-op-with-muxed-source/00002.png | Bin 0 -> 337 bytes .../s-op-with-muxed-source/00003.png | Bin 0 -> 444 bytes .../s-op-with-muxed-source/00004.png | Bin 0 -> 463 bytes .../s-op-with-muxed-source/00005.png | Bin 0 -> 403 bytes .../s-op-with-muxed-source/00006.png | Bin 0 -> 444 bytes .../s-op-with-muxed-source/00007.png | Bin 0 -> 363 bytes .../s-op-with-muxed-source/00008.png | Bin 0 -> 500 bytes .../s-op-with-muxed-source/00009.png | Bin 0 -> 487 bytes .../s-op-with-muxed-source/00010.png | Bin 0 -> 494 bytes .../s-op-with-muxed-source/00011.png | Bin 0 -> 429 bytes .../s-op-with-muxed-source/00012.png | Bin 0 -> 475 bytes .../s-op-with-muxed-source/00013.png | Bin 0 -> 492 bytes .../s-op-with-muxed-source/00014.png | Bin 0 -> 473 bytes .../s-op-with-muxed-source/00015.png | Bin 0 -> 451 bytes .../s-op-with-muxed-source/00016.png | Bin 0 -> 385 bytes .../s-op-with-muxed-source/00017.png | Bin 0 -> 389 bytes .../s-op-with-muxed-source/00018.png | Bin 0 -> 428 bytes .../snapshots/s-public-key-approve/00000.png | Bin 0 -> 363 bytes .../snapshots/s-public-key-approve/00001.png | Bin 0 -> 487 bytes .../snapshots/s-public-key-approve/00002.png | Bin 0 -> 483 bytes .../snapshots/s-public-key-approve/00003.png | Bin 0 -> 478 bytes .../snapshots/s-public-key-approve/00004.png | Bin 0 -> 421 bytes .../snapshots/s-public-key-approve/00005.png | Bin 0 -> 341 bytes .../snapshots/s-public-key-approve/00006.png | Bin 0 -> 428 bytes .../snapshots/s-public-key-reject/00000.png | Bin 0 -> 363 bytes .../snapshots/s-public-key-reject/00001.png | Bin 0 -> 487 bytes .../snapshots/s-public-key-reject/00002.png | Bin 0 -> 483 bytes .../snapshots/s-public-key-reject/00003.png | Bin 0 -> 478 bytes .../snapshots/s-public-key-reject/00004.png | Bin 0 -> 421 bytes .../snapshots/s-public-key-reject/00005.png | Bin 0 -> 341 bytes .../snapshots/s-public-key-reject/00006.png | Bin 0 -> 340 bytes .../snapshots/s-public-key-reject/00007.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 403 bytes .../00005.png | Bin 0 -> 296 bytes .../00006.png | Bin 0 -> 500 bytes .../00007.png | Bin 0 -> 487 bytes .../00008.png | Bin 0 -> 494 bytes .../00009.png | Bin 0 -> 429 bytes .../00010.png | Bin 0 -> 408 bytes .../00011.png | Bin 0 -> 389 bytes .../00012.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 403 bytes .../00005.png | Bin 0 -> 296 bytes .../00006.png | Bin 0 -> 500 bytes .../00007.png | Bin 0 -> 487 bytes .../00008.png | Bin 0 -> 494 bytes .../00009.png | Bin 0 -> 429 bytes .../00010.png | Bin 0 -> 408 bytes .../00011.png | Bin 0 -> 389 bytes .../00012.png | Bin 0 -> 428 bytes .../snapshots/s-tx-cond-is-none/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-cond-is-none/00001.png | Bin 0 -> 486 bytes .../snapshots/s-tx-cond-is-none/00002.png | Bin 0 -> 507 bytes .../snapshots/s-tx-cond-is-none/00003.png | Bin 0 -> 486 bytes .../snapshots/s-tx-cond-is-none/00004.png | Bin 0 -> 441 bytes .../snapshots/s-tx-cond-is-none/00005.png | Bin 0 -> 337 bytes .../snapshots/s-tx-cond-is-none/00006.png | Bin 0 -> 444 bytes .../snapshots/s-tx-cond-is-none/00007.png | Bin 0 -> 403 bytes .../snapshots/s-tx-cond-is-none/00008.png | Bin 0 -> 296 bytes .../snapshots/s-tx-cond-is-none/00009.png | Bin 0 -> 500 bytes .../snapshots/s-tx-cond-is-none/00010.png | Bin 0 -> 487 bytes .../snapshots/s-tx-cond-is-none/00011.png | Bin 0 -> 494 bytes .../snapshots/s-tx-cond-is-none/00012.png | Bin 0 -> 429 bytes .../snapshots/s-tx-cond-is-none/00013.png | Bin 0 -> 408 bytes .../snapshots/s-tx-cond-is-none/00014.png | Bin 0 -> 389 bytes .../snapshots/s-tx-cond-is-none/00015.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 403 bytes .../00005.png | Bin 0 -> 296 bytes .../00006.png | Bin 0 -> 500 bytes .../00007.png | Bin 0 -> 487 bytes .../00008.png | Bin 0 -> 494 bytes .../00009.png | Bin 0 -> 429 bytes .../00010.png | Bin 0 -> 408 bytes .../00011.png | Bin 0 -> 389 bytes .../00012.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 399 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 296 bytes .../00007.png | Bin 0 -> 500 bytes .../00008.png | Bin 0 -> 487 bytes .../00009.png | Bin 0 -> 494 bytes .../00010.png | Bin 0 -> 429 bytes .../00011.png | Bin 0 -> 408 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 417 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 296 bytes .../00007.png | Bin 0 -> 500 bytes .../00008.png | Bin 0 -> 487 bytes .../00009.png | Bin 0 -> 494 bytes .../00010.png | Bin 0 -> 429 bytes .../00011.png | Bin 0 -> 408 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../s-tx-cond-ledger-bounds/00000.png | Bin 0 -> 379 bytes .../s-tx-cond-ledger-bounds/00001.png | Bin 0 -> 341 bytes .../s-tx-cond-ledger-bounds/00002.png | Bin 0 -> 337 bytes .../s-tx-cond-ledger-bounds/00003.png | Bin 0 -> 444 bytes .../s-tx-cond-ledger-bounds/00004.png | Bin 0 -> 399 bytes .../s-tx-cond-ledger-bounds/00005.png | Bin 0 -> 417 bytes .../s-tx-cond-ledger-bounds/00006.png | Bin 0 -> 403 bytes .../s-tx-cond-ledger-bounds/00007.png | Bin 0 -> 296 bytes .../s-tx-cond-ledger-bounds/00008.png | Bin 0 -> 500 bytes .../s-tx-cond-ledger-bounds/00009.png | Bin 0 -> 487 bytes .../s-tx-cond-ledger-bounds/00010.png | Bin 0 -> 494 bytes .../s-tx-cond-ledger-bounds/00011.png | Bin 0 -> 429 bytes .../s-tx-cond-ledger-bounds/00012.png | Bin 0 -> 408 bytes .../s-tx-cond-ledger-bounds/00013.png | Bin 0 -> 389 bytes .../s-tx-cond-ledger-bounds/00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 413 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 296 bytes .../00007.png | Bin 0 -> 500 bytes .../00008.png | Bin 0 -> 487 bytes .../00009.png | Bin 0 -> 494 bytes .../00010.png | Bin 0 -> 429 bytes .../00011.png | Bin 0 -> 408 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 378 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 296 bytes .../00007.png | Bin 0 -> 500 bytes .../00008.png | Bin 0 -> 487 bytes .../00009.png | Bin 0 -> 494 bytes .../00010.png | Bin 0 -> 429 bytes .../00011.png | Bin 0 -> 408 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../s-tx-cond-min-account-sequence/00000.png | Bin 0 -> 379 bytes .../s-tx-cond-min-account-sequence/00001.png | Bin 0 -> 341 bytes .../s-tx-cond-min-account-sequence/00002.png | Bin 0 -> 337 bytes .../s-tx-cond-min-account-sequence/00003.png | Bin 0 -> 444 bytes .../s-tx-cond-min-account-sequence/00004.png | Bin 0 -> 443 bytes .../s-tx-cond-min-account-sequence/00005.png | Bin 0 -> 403 bytes .../s-tx-cond-min-account-sequence/00006.png | Bin 0 -> 296 bytes .../s-tx-cond-min-account-sequence/00007.png | Bin 0 -> 500 bytes .../s-tx-cond-min-account-sequence/00008.png | Bin 0 -> 487 bytes .../s-tx-cond-min-account-sequence/00009.png | Bin 0 -> 494 bytes .../s-tx-cond-min-account-sequence/00010.png | Bin 0 -> 429 bytes .../s-tx-cond-min-account-sequence/00011.png | Bin 0 -> 408 bytes .../s-tx-cond-min-account-sequence/00012.png | Bin 0 -> 389 bytes .../s-tx-cond-min-account-sequence/00013.png | Bin 0 -> 428 bytes .../s-tx-cond-time-bounds-are-zero/00000.png | Bin 0 -> 379 bytes .../s-tx-cond-time-bounds-are-zero/00001.png | Bin 0 -> 341 bytes .../s-tx-cond-time-bounds-are-zero/00002.png | Bin 0 -> 337 bytes .../s-tx-cond-time-bounds-are-zero/00003.png | Bin 0 -> 444 bytes .../s-tx-cond-time-bounds-are-zero/00004.png | Bin 0 -> 403 bytes .../s-tx-cond-time-bounds-are-zero/00005.png | Bin 0 -> 296 bytes .../s-tx-cond-time-bounds-are-zero/00006.png | Bin 0 -> 500 bytes .../s-tx-cond-time-bounds-are-zero/00007.png | Bin 0 -> 487 bytes .../s-tx-cond-time-bounds-are-zero/00008.png | Bin 0 -> 494 bytes .../s-tx-cond-time-bounds-are-zero/00009.png | Bin 0 -> 429 bytes .../s-tx-cond-time-bounds-are-zero/00010.png | Bin 0 -> 408 bytes .../s-tx-cond-time-bounds-are-zero/00011.png | Bin 0 -> 389 bytes .../s-tx-cond-time-bounds-are-zero/00012.png | Bin 0 -> 428 bytes .../s-tx-cond-time-bounds-is-none/00000.png | Bin 0 -> 379 bytes .../s-tx-cond-time-bounds-is-none/00001.png | Bin 0 -> 486 bytes .../s-tx-cond-time-bounds-is-none/00002.png | Bin 0 -> 507 bytes .../s-tx-cond-time-bounds-is-none/00003.png | Bin 0 -> 486 bytes .../s-tx-cond-time-bounds-is-none/00004.png | Bin 0 -> 441 bytes .../s-tx-cond-time-bounds-is-none/00005.png | Bin 0 -> 337 bytes .../s-tx-cond-time-bounds-is-none/00006.png | Bin 0 -> 444 bytes .../s-tx-cond-time-bounds-is-none/00007.png | Bin 0 -> 399 bytes .../s-tx-cond-time-bounds-is-none/00008.png | Bin 0 -> 417 bytes .../s-tx-cond-time-bounds-is-none/00009.png | Bin 0 -> 403 bytes .../s-tx-cond-time-bounds-is-none/00010.png | Bin 0 -> 296 bytes .../s-tx-cond-time-bounds-is-none/00011.png | Bin 0 -> 500 bytes .../s-tx-cond-time-bounds-is-none/00012.png | Bin 0 -> 487 bytes .../s-tx-cond-time-bounds-is-none/00013.png | Bin 0 -> 494 bytes .../s-tx-cond-time-bounds-is-none/00014.png | Bin 0 -> 429 bytes .../s-tx-cond-time-bounds-is-none/00015.png | Bin 0 -> 408 bytes .../s-tx-cond-time-bounds-is-none/00016.png | Bin 0 -> 389 bytes .../s-tx-cond-time-bounds-is-none/00017.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 296 bytes .../00007.png | Bin 0 -> 500 bytes .../00008.png | Bin 0 -> 487 bytes .../00009.png | Bin 0 -> 494 bytes .../00010.png | Bin 0 -> 429 bytes .../00011.png | Bin 0 -> 408 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 466 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 296 bytes .../00007.png | Bin 0 -> 500 bytes .../00008.png | Bin 0 -> 487 bytes .../00009.png | Bin 0 -> 494 bytes .../00010.png | Bin 0 -> 429 bytes .../00011.png | Bin 0 -> 408 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../snapshots/s-tx-cond-time-bounds/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-cond-time-bounds/00001.png | Bin 0 -> 341 bytes .../snapshots/s-tx-cond-time-bounds/00002.png | Bin 0 -> 337 bytes .../snapshots/s-tx-cond-time-bounds/00003.png | Bin 0 -> 444 bytes .../snapshots/s-tx-cond-time-bounds/00004.png | Bin 0 -> 468 bytes .../snapshots/s-tx-cond-time-bounds/00005.png | Bin 0 -> 463 bytes .../snapshots/s-tx-cond-time-bounds/00006.png | Bin 0 -> 403 bytes .../snapshots/s-tx-cond-time-bounds/00007.png | Bin 0 -> 296 bytes .../snapshots/s-tx-cond-time-bounds/00008.png | Bin 0 -> 500 bytes .../snapshots/s-tx-cond-time-bounds/00009.png | Bin 0 -> 487 bytes .../snapshots/s-tx-cond-time-bounds/00010.png | Bin 0 -> 494 bytes .../snapshots/s-tx-cond-time-bounds/00011.png | Bin 0 -> 429 bytes .../snapshots/s-tx-cond-time-bounds/00012.png | Bin 0 -> 408 bytes .../snapshots/s-tx-cond-time-bounds/00013.png | Bin 0 -> 389 bytes .../snapshots/s-tx-cond-time-bounds/00014.png | Bin 0 -> 428 bytes .../s-tx-cond-with-all-items/00000.png | Bin 0 -> 379 bytes .../s-tx-cond-with-all-items/00001.png | Bin 0 -> 341 bytes .../s-tx-cond-with-all-items/00002.png | Bin 0 -> 337 bytes .../s-tx-cond-with-all-items/00003.png | Bin 0 -> 444 bytes .../s-tx-cond-with-all-items/00004.png | Bin 0 -> 468 bytes .../s-tx-cond-with-all-items/00005.png | Bin 0 -> 463 bytes .../s-tx-cond-with-all-items/00006.png | Bin 0 -> 399 bytes .../s-tx-cond-with-all-items/00007.png | Bin 0 -> 417 bytes .../s-tx-cond-with-all-items/00008.png | Bin 0 -> 443 bytes .../s-tx-cond-with-all-items/00009.png | Bin 0 -> 413 bytes .../s-tx-cond-with-all-items/00010.png | Bin 0 -> 378 bytes .../s-tx-cond-with-all-items/00011.png | Bin 0 -> 403 bytes .../s-tx-cond-with-all-items/00012.png | Bin 0 -> 296 bytes .../s-tx-cond-with-all-items/00013.png | Bin 0 -> 500 bytes .../s-tx-cond-with-all-items/00014.png | Bin 0 -> 487 bytes .../s-tx-cond-with-all-items/00015.png | Bin 0 -> 494 bytes .../s-tx-cond-with-all-items/00016.png | Bin 0 -> 429 bytes .../s-tx-cond-with-all-items/00017.png | Bin 0 -> 408 bytes .../s-tx-cond-with-all-items/00018.png | Bin 0 -> 389 bytes .../s-tx-cond-with-all-items/00019.png | Bin 0 -> 428 bytes .../snapshots/s-tx-custom-base-fee/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-custom-base-fee/00001.png | Bin 0 -> 341 bytes .../snapshots/s-tx-custom-base-fee/00002.png | Bin 0 -> 359 bytes .../snapshots/s-tx-custom-base-fee/00003.png | Bin 0 -> 444 bytes .../snapshots/s-tx-custom-base-fee/00004.png | Bin 0 -> 463 bytes .../snapshots/s-tx-custom-base-fee/00005.png | Bin 0 -> 403 bytes .../snapshots/s-tx-custom-base-fee/00006.png | Bin 0 -> 298 bytes .../snapshots/s-tx-custom-base-fee/00007.png | Bin 0 -> 296 bytes .../snapshots/s-tx-custom-base-fee/00008.png | Bin 0 -> 500 bytes .../snapshots/s-tx-custom-base-fee/00009.png | Bin 0 -> 487 bytes .../snapshots/s-tx-custom-base-fee/00010.png | Bin 0 -> 494 bytes .../snapshots/s-tx-custom-base-fee/00011.png | Bin 0 -> 429 bytes .../snapshots/s-tx-custom-base-fee/00012.png | Bin 0 -> 408 bytes .../snapshots/s-tx-custom-base-fee/00013.png | Bin 0 -> 295 bytes .../snapshots/s-tx-custom-base-fee/00014.png | Bin 0 -> 296 bytes .../snapshots/s-tx-custom-base-fee/00015.png | Bin 0 -> 506 bytes .../snapshots/s-tx-custom-base-fee/00016.png | Bin 0 -> 488 bytes .../snapshots/s-tx-custom-base-fee/00017.png | Bin 0 -> 495 bytes .../snapshots/s-tx-custom-base-fee/00018.png | Bin 0 -> 431 bytes .../snapshots/s-tx-custom-base-fee/00019.png | Bin 0 -> 408 bytes .../snapshots/s-tx-custom-base-fee/00020.png | Bin 0 -> 389 bytes .../snapshots/s-tx-custom-base-fee/00021.png | Bin 0 -> 428 bytes .../snapshots/s-tx-hide-sequence/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-hide-sequence/00001.png | Bin 0 -> 341 bytes .../snapshots/s-tx-hide-sequence/00002.png | Bin 0 -> 337 bytes .../snapshots/s-tx-hide-sequence/00003.png | Bin 0 -> 463 bytes .../snapshots/s-tx-hide-sequence/00004.png | Bin 0 -> 403 bytes .../snapshots/s-tx-hide-sequence/00005.png | Bin 0 -> 428 bytes .../snapshots/s-tx-hide-sequence/00006.png | Bin 0 -> 377 bytes .../snapshots/s-tx-hide-sequence/00007.png | Bin 0 -> 408 bytes .../snapshots/s-tx-hide-sequence/00008.png | Bin 0 -> 389 bytes .../snapshots/s-tx-hide-sequence/00009.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-tx-memo-hash/00000.png | Bin 0 -> 379 bytes tests_zemu/snapshots/s-tx-memo-hash/00001.png | Bin 0 -> 476 bytes tests_zemu/snapshots/s-tx-memo-hash/00002.png | Bin 0 -> 502 bytes tests_zemu/snapshots/s-tx-memo-hash/00003.png | Bin 0 -> 481 bytes tests_zemu/snapshots/s-tx-memo-hash/00004.png | Bin 0 -> 429 bytes tests_zemu/snapshots/s-tx-memo-hash/00005.png | Bin 0 -> 337 bytes tests_zemu/snapshots/s-tx-memo-hash/00006.png | Bin 0 -> 444 bytes tests_zemu/snapshots/s-tx-memo-hash/00007.png | Bin 0 -> 463 bytes tests_zemu/snapshots/s-tx-memo-hash/00008.png | Bin 0 -> 403 bytes tests_zemu/snapshots/s-tx-memo-hash/00009.png | Bin 0 -> 296 bytes tests_zemu/snapshots/s-tx-memo-hash/00010.png | Bin 0 -> 500 bytes tests_zemu/snapshots/s-tx-memo-hash/00011.png | Bin 0 -> 487 bytes tests_zemu/snapshots/s-tx-memo-hash/00012.png | Bin 0 -> 494 bytes tests_zemu/snapshots/s-tx-memo-hash/00013.png | Bin 0 -> 429 bytes tests_zemu/snapshots/s-tx-memo-hash/00014.png | Bin 0 -> 408 bytes tests_zemu/snapshots/s-tx-memo-hash/00015.png | Bin 0 -> 389 bytes tests_zemu/snapshots/s-tx-memo-hash/00016.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-tx-memo-id/00000.png | Bin 0 -> 379 bytes tests_zemu/snapshots/s-tx-memo-id/00001.png | Bin 0 -> 448 bytes tests_zemu/snapshots/s-tx-memo-id/00002.png | Bin 0 -> 340 bytes tests_zemu/snapshots/s-tx-memo-id/00003.png | Bin 0 -> 337 bytes tests_zemu/snapshots/s-tx-memo-id/00004.png | Bin 0 -> 444 bytes tests_zemu/snapshots/s-tx-memo-id/00005.png | Bin 0 -> 463 bytes tests_zemu/snapshots/s-tx-memo-id/00006.png | Bin 0 -> 403 bytes tests_zemu/snapshots/s-tx-memo-id/00007.png | Bin 0 -> 296 bytes tests_zemu/snapshots/s-tx-memo-id/00008.png | Bin 0 -> 500 bytes tests_zemu/snapshots/s-tx-memo-id/00009.png | Bin 0 -> 487 bytes tests_zemu/snapshots/s-tx-memo-id/00010.png | Bin 0 -> 494 bytes tests_zemu/snapshots/s-tx-memo-id/00011.png | Bin 0 -> 429 bytes tests_zemu/snapshots/s-tx-memo-id/00012.png | Bin 0 -> 408 bytes tests_zemu/snapshots/s-tx-memo-id/00013.png | Bin 0 -> 389 bytes tests_zemu/snapshots/s-tx-memo-id/00014.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-tx-memo-none/00000.png | Bin 0 -> 379 bytes tests_zemu/snapshots/s-tx-memo-none/00001.png | Bin 0 -> 337 bytes tests_zemu/snapshots/s-tx-memo-none/00002.png | Bin 0 -> 444 bytes tests_zemu/snapshots/s-tx-memo-none/00003.png | Bin 0 -> 463 bytes tests_zemu/snapshots/s-tx-memo-none/00004.png | Bin 0 -> 403 bytes tests_zemu/snapshots/s-tx-memo-none/00005.png | Bin 0 -> 296 bytes tests_zemu/snapshots/s-tx-memo-none/00006.png | Bin 0 -> 500 bytes tests_zemu/snapshots/s-tx-memo-none/00007.png | Bin 0 -> 487 bytes tests_zemu/snapshots/s-tx-memo-none/00008.png | Bin 0 -> 494 bytes tests_zemu/snapshots/s-tx-memo-none/00009.png | Bin 0 -> 429 bytes tests_zemu/snapshots/s-tx-memo-none/00010.png | Bin 0 -> 408 bytes tests_zemu/snapshots/s-tx-memo-none/00011.png | Bin 0 -> 389 bytes tests_zemu/snapshots/s-tx-memo-none/00012.png | Bin 0 -> 428 bytes .../snapshots/s-tx-memo-return-hash/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-memo-return-hash/00001.png | Bin 0 -> 486 bytes .../snapshots/s-tx-memo-return-hash/00002.png | Bin 0 -> 507 bytes .../snapshots/s-tx-memo-return-hash/00003.png | Bin 0 -> 486 bytes .../snapshots/s-tx-memo-return-hash/00004.png | Bin 0 -> 441 bytes .../snapshots/s-tx-memo-return-hash/00005.png | Bin 0 -> 337 bytes .../snapshots/s-tx-memo-return-hash/00006.png | Bin 0 -> 444 bytes .../snapshots/s-tx-memo-return-hash/00007.png | Bin 0 -> 463 bytes .../snapshots/s-tx-memo-return-hash/00008.png | Bin 0 -> 403 bytes .../snapshots/s-tx-memo-return-hash/00009.png | Bin 0 -> 296 bytes .../snapshots/s-tx-memo-return-hash/00010.png | Bin 0 -> 500 bytes .../snapshots/s-tx-memo-return-hash/00011.png | Bin 0 -> 487 bytes .../snapshots/s-tx-memo-return-hash/00012.png | Bin 0 -> 494 bytes .../snapshots/s-tx-memo-return-hash/00013.png | Bin 0 -> 429 bytes .../snapshots/s-tx-memo-return-hash/00014.png | Bin 0 -> 408 bytes .../snapshots/s-tx-memo-return-hash/00015.png | Bin 0 -> 389 bytes .../snapshots/s-tx-memo-return-hash/00016.png | Bin 0 -> 428 bytes .../s-tx-memo-text-unprintable/00000.png | Bin 0 -> 379 bytes .../s-tx-memo-text-unprintable/00001.png | Bin 0 -> 472 bytes .../s-tx-memo-text-unprintable/00002.png | Bin 0 -> 337 bytes .../s-tx-memo-text-unprintable/00003.png | Bin 0 -> 444 bytes .../s-tx-memo-text-unprintable/00004.png | Bin 0 -> 463 bytes .../s-tx-memo-text-unprintable/00005.png | Bin 0 -> 403 bytes .../s-tx-memo-text-unprintable/00006.png | Bin 0 -> 296 bytes .../s-tx-memo-text-unprintable/00007.png | Bin 0 -> 500 bytes .../s-tx-memo-text-unprintable/00008.png | Bin 0 -> 487 bytes .../s-tx-memo-text-unprintable/00009.png | Bin 0 -> 494 bytes .../s-tx-memo-text-unprintable/00010.png | Bin 0 -> 429 bytes .../s-tx-memo-text-unprintable/00011.png | Bin 0 -> 408 bytes .../s-tx-memo-text-unprintable/00012.png | Bin 0 -> 389 bytes .../s-tx-memo-text-unprintable/00013.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-tx-memo-text/00000.png | Bin 0 -> 379 bytes tests_zemu/snapshots/s-tx-memo-text/00001.png | Bin 0 -> 392 bytes tests_zemu/snapshots/s-tx-memo-text/00002.png | Bin 0 -> 440 bytes tests_zemu/snapshots/s-tx-memo-text/00003.png | Bin 0 -> 337 bytes tests_zemu/snapshots/s-tx-memo-text/00004.png | Bin 0 -> 444 bytes tests_zemu/snapshots/s-tx-memo-text/00005.png | Bin 0 -> 463 bytes tests_zemu/snapshots/s-tx-memo-text/00006.png | Bin 0 -> 403 bytes tests_zemu/snapshots/s-tx-memo-text/00007.png | Bin 0 -> 296 bytes tests_zemu/snapshots/s-tx-memo-text/00008.png | Bin 0 -> 500 bytes tests_zemu/snapshots/s-tx-memo-text/00009.png | Bin 0 -> 487 bytes tests_zemu/snapshots/s-tx-memo-text/00010.png | Bin 0 -> 494 bytes tests_zemu/snapshots/s-tx-memo-text/00011.png | Bin 0 -> 429 bytes tests_zemu/snapshots/s-tx-memo-text/00012.png | Bin 0 -> 408 bytes tests_zemu/snapshots/s-tx-memo-text/00013.png | Bin 0 -> 389 bytes tests_zemu/snapshots/s-tx-memo-text/00014.png | Bin 0 -> 428 bytes .../snapshots/s-tx-multi-operations/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-multi-operations/00001.png | Bin 0 -> 341 bytes .../snapshots/s-tx-multi-operations/00002.png | Bin 0 -> 341 bytes .../snapshots/s-tx-multi-operations/00003.png | Bin 0 -> 444 bytes .../snapshots/s-tx-multi-operations/00004.png | Bin 0 -> 463 bytes .../snapshots/s-tx-multi-operations/00005.png | Bin 0 -> 403 bytes .../snapshots/s-tx-multi-operations/00006.png | Bin 0 -> 290 bytes .../snapshots/s-tx-multi-operations/00007.png | Bin 0 -> 444 bytes .../snapshots/s-tx-multi-operations/00008.png | Bin 0 -> 363 bytes .../snapshots/s-tx-multi-operations/00009.png | Bin 0 -> 500 bytes .../snapshots/s-tx-multi-operations/00010.png | Bin 0 -> 487 bytes .../snapshots/s-tx-multi-operations/00011.png | Bin 0 -> 494 bytes .../snapshots/s-tx-multi-operations/00012.png | Bin 0 -> 429 bytes .../snapshots/s-tx-multi-operations/00013.png | Bin 0 -> 408 bytes .../snapshots/s-tx-multi-operations/00014.png | Bin 0 -> 296 bytes .../snapshots/s-tx-multi-operations/00015.png | Bin 0 -> 444 bytes .../snapshots/s-tx-multi-operations/00016.png | Bin 0 -> 451 bytes .../snapshots/s-tx-multi-operations/00017.png | Bin 0 -> 500 bytes .../snapshots/s-tx-multi-operations/00018.png | Bin 0 -> 487 bytes .../snapshots/s-tx-multi-operations/00019.png | Bin 0 -> 494 bytes .../snapshots/s-tx-multi-operations/00020.png | Bin 0 -> 429 bytes .../snapshots/s-tx-multi-operations/00021.png | Bin 0 -> 408 bytes .../snapshots/s-tx-multi-operations/00022.png | Bin 0 -> 291 bytes .../snapshots/s-tx-multi-operations/00023.png | Bin 0 -> 408 bytes .../snapshots/s-tx-multi-operations/00024.png | Bin 0 -> 361 bytes .../snapshots/s-tx-multi-operations/00025.png | Bin 0 -> 389 bytes .../snapshots/s-tx-multi-operations/00026.png | Bin 0 -> 428 bytes .../snapshots/s-tx-network-custom/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-network-custom/00001.png | Bin 0 -> 338 bytes .../snapshots/s-tx-network-custom/00002.png | Bin 0 -> 341 bytes .../snapshots/s-tx-network-custom/00003.png | Bin 0 -> 355 bytes .../snapshots/s-tx-network-custom/00004.png | Bin 0 -> 444 bytes .../snapshots/s-tx-network-custom/00005.png | Bin 0 -> 463 bytes .../snapshots/s-tx-network-custom/00006.png | Bin 0 -> 403 bytes .../snapshots/s-tx-network-custom/00007.png | Bin 0 -> 428 bytes .../snapshots/s-tx-network-custom/00008.png | Bin 0 -> 377 bytes .../snapshots/s-tx-network-custom/00009.png | Bin 0 -> 408 bytes .../snapshots/s-tx-network-custom/00010.png | Bin 0 -> 389 bytes .../snapshots/s-tx-network-custom/00011.png | Bin 0 -> 428 bytes .../snapshots/s-tx-network-public/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-network-public/00001.png | Bin 0 -> 341 bytes .../snapshots/s-tx-network-public/00002.png | Bin 0 -> 337 bytes .../snapshots/s-tx-network-public/00003.png | Bin 0 -> 444 bytes .../snapshots/s-tx-network-public/00004.png | Bin 0 -> 463 bytes .../snapshots/s-tx-network-public/00005.png | Bin 0 -> 403 bytes .../snapshots/s-tx-network-public/00006.png | Bin 0 -> 428 bytes .../snapshots/s-tx-network-public/00007.png | Bin 0 -> 377 bytes .../snapshots/s-tx-network-public/00008.png | Bin 0 -> 408 bytes .../snapshots/s-tx-network-public/00009.png | Bin 0 -> 389 bytes .../snapshots/s-tx-network-public/00010.png | Bin 0 -> 428 bytes .../snapshots/s-tx-network-testnet/00000.png | Bin 0 -> 379 bytes .../snapshots/s-tx-network-testnet/00001.png | Bin 0 -> 347 bytes .../snapshots/s-tx-network-testnet/00002.png | Bin 0 -> 341 bytes .../snapshots/s-tx-network-testnet/00003.png | Bin 0 -> 337 bytes .../snapshots/s-tx-network-testnet/00004.png | Bin 0 -> 444 bytes .../snapshots/s-tx-network-testnet/00005.png | Bin 0 -> 463 bytes .../snapshots/s-tx-network-testnet/00006.png | Bin 0 -> 403 bytes .../snapshots/s-tx-network-testnet/00007.png | Bin 0 -> 428 bytes .../snapshots/s-tx-network-testnet/00008.png | Bin 0 -> 377 bytes .../snapshots/s-tx-network-testnet/00009.png | Bin 0 -> 408 bytes .../snapshots/s-tx-network-testnet/00010.png | Bin 0 -> 389 bytes .../snapshots/s-tx-network-testnet/00011.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-tx-reject/00000.png | Bin 0 -> 379 bytes tests_zemu/snapshots/s-tx-reject/00001.png | Bin 0 -> 341 bytes tests_zemu/snapshots/s-tx-reject/00002.png | Bin 0 -> 337 bytes tests_zemu/snapshots/s-tx-reject/00003.png | Bin 0 -> 444 bytes tests_zemu/snapshots/s-tx-reject/00004.png | Bin 0 -> 463 bytes tests_zemu/snapshots/s-tx-reject/00005.png | Bin 0 -> 403 bytes tests_zemu/snapshots/s-tx-reject/00006.png | Bin 0 -> 428 bytes tests_zemu/snapshots/s-tx-reject/00007.png | Bin 0 -> 377 bytes tests_zemu/snapshots/s-tx-reject/00008.png | Bin 0 -> 408 bytes tests_zemu/snapshots/s-tx-reject/00009.png | Bin 0 -> 389 bytes tests_zemu/snapshots/s-tx-reject/00010.png | Bin 0 -> 325 bytes tests_zemu/snapshots/s-tx-reject/00011.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 473 bytes .../00006.png | Bin 0 -> 495 bytes .../00007.png | Bin 0 -> 480 bytes .../00008.png | Bin 0 -> 444 bytes .../00009.png | Bin 0 -> 384 bytes .../00010.png | Bin 0 -> 428 bytes .../00011.png | Bin 0 -> 377 bytes .../00012.png | Bin 0 -> 493 bytes .../00013.png | Bin 0 -> 495 bytes .../00014.png | Bin 0 -> 477 bytes .../00015.png | Bin 0 -> 428 bytes .../00016.png | Bin 0 -> 389 bytes .../00017.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 428 bytes .../00007.png | Bin 0 -> 377 bytes .../00008.png | Bin 0 -> 408 bytes .../00009.png | Bin 0 -> 389 bytes .../00010.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 495 bytes .../00006.png | Bin 0 -> 490 bytes .../00007.png | Bin 0 -> 486 bytes .../00008.png | Bin 0 -> 419 bytes .../00009.png | Bin 0 -> 428 bytes .../00010.png | Bin 0 -> 377 bytes .../00011.png | Bin 0 -> 503 bytes .../00012.png | Bin 0 -> 487 bytes .../00013.png | Bin 0 -> 488 bytes .../00014.png | Bin 0 -> 429 bytes .../00015.png | Bin 0 -> 389 bytes .../00016.png | Bin 0 -> 428 bytes .../s-tx-with-muxed-source/00000.png | Bin 0 -> 379 bytes .../s-tx-with-muxed-source/00001.png | Bin 0 -> 341 bytes .../s-tx-with-muxed-source/00002.png | Bin 0 -> 337 bytes .../s-tx-with-muxed-source/00003.png | Bin 0 -> 444 bytes .../s-tx-with-muxed-source/00004.png | Bin 0 -> 463 bytes .../s-tx-with-muxed-source/00005.png | Bin 0 -> 473 bytes .../s-tx-with-muxed-source/00006.png | Bin 0 -> 495 bytes .../s-tx-with-muxed-source/00007.png | Bin 0 -> 480 bytes .../s-tx-with-muxed-source/00008.png | Bin 0 -> 444 bytes .../s-tx-with-muxed-source/00009.png | Bin 0 -> 384 bytes .../s-tx-with-muxed-source/00010.png | Bin 0 -> 296 bytes .../s-tx-with-muxed-source/00011.png | Bin 0 -> 500 bytes .../s-tx-with-muxed-source/00012.png | Bin 0 -> 487 bytes .../s-tx-with-muxed-source/00013.png | Bin 0 -> 494 bytes .../s-tx-with-muxed-source/00014.png | Bin 0 -> 429 bytes .../s-tx-with-muxed-source/00015.png | Bin 0 -> 493 bytes .../s-tx-with-muxed-source/00016.png | Bin 0 -> 495 bytes .../s-tx-with-muxed-source/00017.png | Bin 0 -> 477 bytes .../s-tx-with-muxed-source/00018.png | Bin 0 -> 428 bytes .../s-tx-with-muxed-source/00019.png | Bin 0 -> 389 bytes .../s-tx-with-muxed-source/00020.png | Bin 0 -> 428 bytes .../sp-fee-bump-tx-hide-sequence/00000.png | Bin 0 -> 419 bytes .../sp-fee-bump-tx-hide-sequence/00001.png | Bin 0 -> 463 bytes .../sp-fee-bump-tx-hide-sequence/00002.png | Bin 0 -> 488 bytes .../sp-fee-bump-tx-hide-sequence/00003.png | Bin 0 -> 420 bytes .../sp-fee-bump-tx-hide-sequence/00004.png | Bin 0 -> 372 bytes .../sp-fee-bump-tx-hide-sequence/00005.png | Bin 0 -> 405 bytes .../sp-fee-bump-tx-hide-sequence/00006.png | Bin 0 -> 385 bytes .../sp-fee-bump-tx-hide-sequence/00007.png | Bin 0 -> 523 bytes .../sp-fee-bump-tx-hide-sequence/00008.png | Bin 0 -> 920 bytes .../sp-fee-bump-tx-hide-sequence/00009.png | Bin 0 -> 497 bytes .../sp-fee-bump-tx-hide-sequence/00010.png | Bin 0 -> 355 bytes .../sp-fee-bump-tx-hide-sequence/00011.png | Bin 0 -> 332 bytes .../sp-fee-bump-tx-hide-sequence/00012.png | Bin 0 -> 915 bytes .../sp-fee-bump-tx-hide-sequence/00013.png | Bin 0 -> 522 bytes .../sp-fee-bump-tx-hide-sequence/00014.png | Bin 0 -> 925 bytes .../sp-fee-bump-tx-hide-sequence/00015.png | Bin 0 -> 503 bytes .../sp-fee-bump-tx-hide-sequence/00016.png | Bin 0 -> 359 bytes .../sp-fee-bump-tx-hide-sequence/00017.png | Bin 0 -> 332 bytes .../sp-fee-bump-tx-hide-sequence/00018.png | Bin 0 -> 944 bytes .../sp-fee-bump-tx-hide-sequence/00019.png | Bin 0 -> 519 bytes .../sp-fee-bump-tx-hide-sequence/00020.png | Bin 0 -> 925 bytes .../sp-fee-bump-tx-hide-sequence/00021.png | Bin 0 -> 503 bytes .../sp-fee-bump-tx-hide-sequence/00022.png | Bin 0 -> 451 bytes .../sp-fee-bump-tx-hide-sequence/00023.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 488 bytes .../00003.png | Bin 0 -> 401 bytes .../00004.png | Bin 0 -> 372 bytes .../00005.png | Bin 0 -> 405 bytes .../00006.png | Bin 0 -> 384 bytes .../00007.png | Bin 0 -> 503 bytes .../00008.png | Bin 0 -> 523 bytes .../00009.png | Bin 0 -> 920 bytes .../00010.png | Bin 0 -> 497 bytes .../00011.png | Bin 0 -> 501 bytes .../00012.png | Bin 0 -> 435 bytes .../00013.png | Bin 0 -> 925 bytes .../00014.png | Bin 0 -> 503 bytes .../00015.png | Bin 0 -> 451 bytes .../00016.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 920 bytes .../00003.png | Bin 0 -> 514 bytes .../00004.png | Bin 0 -> 401 bytes .../00005.png | Bin 0 -> 372 bytes .../00006.png | Bin 0 -> 405 bytes .../00007.png | Bin 0 -> 384 bytes .../00008.png | Bin 0 -> 503 bytes .../00009.png | Bin 0 -> 523 bytes .../00010.png | Bin 0 -> 920 bytes .../00011.png | Bin 0 -> 497 bytes .../00012.png | Bin 0 -> 501 bytes .../00013.png | Bin 0 -> 435 bytes .../00014.png | Bin 0 -> 925 bytes .../00015.png | Bin 0 -> 503 bytes .../00016.png | Bin 0 -> 451 bytes .../00017.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 933 bytes .../00003.png | Bin 0 -> 614 bytes .../00004.png | Bin 0 -> 401 bytes .../00005.png | Bin 0 -> 372 bytes .../00006.png | Bin 0 -> 405 bytes .../00007.png | Bin 0 -> 384 bytes .../00008.png | Bin 0 -> 503 bytes .../00009.png | Bin 0 -> 523 bytes .../00010.png | Bin 0 -> 920 bytes .../00011.png | Bin 0 -> 497 bytes .../00012.png | Bin 0 -> 501 bytes .../00013.png | Bin 0 -> 435 bytes .../00014.png | Bin 0 -> 925 bytes .../00015.png | Bin 0 -> 503 bytes .../00016.png | Bin 0 -> 451 bytes .../00017.png | Bin 0 -> 473 bytes .../snapshots/sp-fee-bump-tx-reject/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-fee-bump-tx-reject/00001.png | Bin 0 -> 463 bytes .../snapshots/sp-fee-bump-tx-reject/00002.png | Bin 0 -> 488 bytes .../snapshots/sp-fee-bump-tx-reject/00003.png | Bin 0 -> 420 bytes .../snapshots/sp-fee-bump-tx-reject/00004.png | Bin 0 -> 372 bytes .../snapshots/sp-fee-bump-tx-reject/00005.png | Bin 0 -> 405 bytes .../snapshots/sp-fee-bump-tx-reject/00006.png | Bin 0 -> 385 bytes .../snapshots/sp-fee-bump-tx-reject/00007.png | Bin 0 -> 503 bytes .../snapshots/sp-fee-bump-tx-reject/00008.png | Bin 0 -> 523 bytes .../snapshots/sp-fee-bump-tx-reject/00009.png | Bin 0 -> 920 bytes .../snapshots/sp-fee-bump-tx-reject/00010.png | Bin 0 -> 497 bytes .../snapshots/sp-fee-bump-tx-reject/00011.png | Bin 0 -> 355 bytes .../snapshots/sp-fee-bump-tx-reject/00012.png | Bin 0 -> 332 bytes .../snapshots/sp-fee-bump-tx-reject/00013.png | Bin 0 -> 915 bytes .../snapshots/sp-fee-bump-tx-reject/00014.png | Bin 0 -> 522 bytes .../snapshots/sp-fee-bump-tx-reject/00015.png | Bin 0 -> 925 bytes .../snapshots/sp-fee-bump-tx-reject/00016.png | Bin 0 -> 503 bytes .../snapshots/sp-fee-bump-tx-reject/00017.png | Bin 0 -> 359 bytes .../snapshots/sp-fee-bump-tx-reject/00018.png | Bin 0 -> 332 bytes .../snapshots/sp-fee-bump-tx-reject/00019.png | Bin 0 -> 944 bytes .../snapshots/sp-fee-bump-tx-reject/00020.png | Bin 0 -> 519 bytes .../snapshots/sp-fee-bump-tx-reject/00021.png | Bin 0 -> 925 bytes .../snapshots/sp-fee-bump-tx-reject/00022.png | Bin 0 -> 503 bytes .../snapshots/sp-fee-bump-tx-reject/00023.png | Bin 0 -> 451 bytes .../snapshots/sp-fee-bump-tx-reject/00024.png | Bin 0 -> 347 bytes .../snapshots/sp-fee-bump-tx-reject/00025.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 933 bytes .../00003.png | Bin 0 -> 614 bytes .../00004.png | Bin 0 -> 420 bytes .../00005.png | Bin 0 -> 372 bytes .../00006.png | Bin 0 -> 405 bytes .../00007.png | Bin 0 -> 385 bytes .../00008.png | Bin 0 -> 503 bytes .../00009.png | Bin 0 -> 523 bytes .../00010.png | Bin 0 -> 920 bytes .../00011.png | Bin 0 -> 497 bytes .../00012.png | Bin 0 -> 355 bytes .../00013.png | Bin 0 -> 332 bytes .../00014.png | Bin 0 -> 915 bytes .../00015.png | Bin 0 -> 522 bytes .../00016.png | Bin 0 -> 925 bytes .../00017.png | Bin 0 -> 503 bytes .../00018.png | Bin 0 -> 359 bytes .../00019.png | Bin 0 -> 332 bytes .../00020.png | Bin 0 -> 944 bytes .../00021.png | Bin 0 -> 519 bytes .../00022.png | Bin 0 -> 925 bytes .../00023.png | Bin 0 -> 503 bytes .../00024.png | Bin 0 -> 451 bytes .../00025.png | Bin 0 -> 473 bytes tests_zemu/snapshots/sp-fee-bump-tx/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/sp-fee-bump-tx/00001.png | Bin 0 -> 463 bytes tests_zemu/snapshots/sp-fee-bump-tx/00002.png | Bin 0 -> 488 bytes tests_zemu/snapshots/sp-fee-bump-tx/00003.png | Bin 0 -> 420 bytes tests_zemu/snapshots/sp-fee-bump-tx/00004.png | Bin 0 -> 372 bytes tests_zemu/snapshots/sp-fee-bump-tx/00005.png | Bin 0 -> 405 bytes tests_zemu/snapshots/sp-fee-bump-tx/00006.png | Bin 0 -> 385 bytes tests_zemu/snapshots/sp-fee-bump-tx/00007.png | Bin 0 -> 503 bytes tests_zemu/snapshots/sp-fee-bump-tx/00008.png | Bin 0 -> 523 bytes tests_zemu/snapshots/sp-fee-bump-tx/00009.png | Bin 0 -> 920 bytes tests_zemu/snapshots/sp-fee-bump-tx/00010.png | Bin 0 -> 497 bytes tests_zemu/snapshots/sp-fee-bump-tx/00011.png | Bin 0 -> 355 bytes tests_zemu/snapshots/sp-fee-bump-tx/00012.png | Bin 0 -> 332 bytes tests_zemu/snapshots/sp-fee-bump-tx/00013.png | Bin 0 -> 915 bytes tests_zemu/snapshots/sp-fee-bump-tx/00014.png | Bin 0 -> 522 bytes tests_zemu/snapshots/sp-fee-bump-tx/00015.png | Bin 0 -> 925 bytes tests_zemu/snapshots/sp-fee-bump-tx/00016.png | Bin 0 -> 503 bytes tests_zemu/snapshots/sp-fee-bump-tx/00017.png | Bin 0 -> 359 bytes tests_zemu/snapshots/sp-fee-bump-tx/00018.png | Bin 0 -> 332 bytes tests_zemu/snapshots/sp-fee-bump-tx/00019.png | Bin 0 -> 944 bytes tests_zemu/snapshots/sp-fee-bump-tx/00020.png | Bin 0 -> 519 bytes tests_zemu/snapshots/sp-fee-bump-tx/00021.png | Bin 0 -> 925 bytes tests_zemu/snapshots/sp-fee-bump-tx/00022.png | Bin 0 -> 503 bytes tests_zemu/snapshots/sp-fee-bump-tx/00023.png | Bin 0 -> 451 bytes tests_zemu/snapshots/sp-fee-bump-tx/00024.png | Bin 0 -> 473 bytes .../sp-hash-signing-approve/00000.png | Bin 0 -> 419 bytes .../sp-hash-signing-approve/00001.png | Bin 0 -> 459 bytes .../sp-hash-signing-approve/00002.png | Bin 0 -> 895 bytes .../sp-hash-signing-approve/00003.png | Bin 0 -> 478 bytes .../sp-hash-signing-approve/00004.png | Bin 0 -> 871 bytes .../sp-hash-signing-approve/00005.png | Bin 0 -> 440 bytes .../sp-hash-signing-approve/00006.png | Bin 0 -> 364 bytes .../sp-hash-signing-approve/00007.png | Bin 0 -> 473 bytes .../sp-hash-signing-reject/00000.png | Bin 0 -> 419 bytes .../sp-hash-signing-reject/00001.png | Bin 0 -> 459 bytes .../sp-hash-signing-reject/00002.png | Bin 0 -> 895 bytes .../sp-hash-signing-reject/00003.png | Bin 0 -> 478 bytes .../sp-hash-signing-reject/00004.png | Bin 0 -> 871 bytes .../sp-hash-signing-reject/00005.png | Bin 0 -> 440 bytes .../sp-hash-signing-reject/00006.png | Bin 0 -> 364 bytes .../sp-hash-signing-reject/00007.png | Bin 0 -> 365 bytes .../sp-hash-signing-reject/00008.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 951 bytes .../00008.png | Bin 0 -> 543 bytes .../00009.png | Bin 0 -> 920 bytes .../00010.png | Bin 0 -> 623 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../snapshots/sp-op-account-merge/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-op-account-merge/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-op-account-merge/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-op-account-merge/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-op-account-merge/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-op-account-merge/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-op-account-merge/00006.png | Bin 0 -> 501 bytes .../snapshots/sp-op-account-merge/00007.png | Bin 0 -> 951 bytes .../snapshots/sp-op-account-merge/00008.png | Bin 0 -> 543 bytes .../snapshots/sp-op-account-merge/00009.png | Bin 0 -> 915 bytes .../snapshots/sp-op-account-merge/00010.png | Bin 0 -> 522 bytes .../snapshots/sp-op-account-merge/00011.png | Bin 0 -> 469 bytes .../snapshots/sp-op-account-merge/00012.png | Bin 0 -> 451 bytes .../snapshots/sp-op-account-merge/00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 474 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 390 bytes .../00010.png | Bin 0 -> 741 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../sp-op-allow-trust-authorize/00000.png | Bin 0 -> 419 bytes .../sp-op-allow-trust-authorize/00001.png | Bin 0 -> 405 bytes .../sp-op-allow-trust-authorize/00002.png | Bin 0 -> 385 bytes .../sp-op-allow-trust-authorize/00003.png | Bin 0 -> 503 bytes .../sp-op-allow-trust-authorize/00004.png | Bin 0 -> 523 bytes .../sp-op-allow-trust-authorize/00005.png | Bin 0 -> 472 bytes .../sp-op-allow-trust-authorize/00006.png | Bin 0 -> 474 bytes .../sp-op-allow-trust-authorize/00007.png | Bin 0 -> 875 bytes .../sp-op-allow-trust-authorize/00008.png | Bin 0 -> 483 bytes .../sp-op-allow-trust-authorize/00009.png | Bin 0 -> 390 bytes .../sp-op-allow-trust-authorize/00010.png | Bin 0 -> 496 bytes .../sp-op-allow-trust-authorize/00011.png | Bin 0 -> 469 bytes .../sp-op-allow-trust-authorize/00012.png | Bin 0 -> 451 bytes .../sp-op-allow-trust-authorize/00013.png | Bin 0 -> 473 bytes .../sp-op-allow-trust-deauthorize/00000.png | Bin 0 -> 419 bytes .../sp-op-allow-trust-deauthorize/00001.png | Bin 0 -> 405 bytes .../sp-op-allow-trust-deauthorize/00002.png | Bin 0 -> 385 bytes .../sp-op-allow-trust-deauthorize/00003.png | Bin 0 -> 503 bytes .../sp-op-allow-trust-deauthorize/00004.png | Bin 0 -> 523 bytes .../sp-op-allow-trust-deauthorize/00005.png | Bin 0 -> 472 bytes .../sp-op-allow-trust-deauthorize/00006.png | Bin 0 -> 474 bytes .../sp-op-allow-trust-deauthorize/00007.png | Bin 0 -> 875 bytes .../sp-op-allow-trust-deauthorize/00008.png | Bin 0 -> 483 bytes .../sp-op-allow-trust-deauthorize/00009.png | Bin 0 -> 390 bytes .../sp-op-allow-trust-deauthorize/00010.png | Bin 0 -> 515 bytes .../sp-op-allow-trust-deauthorize/00011.png | Bin 0 -> 469 bytes .../sp-op-allow-trust-deauthorize/00012.png | Bin 0 -> 451 bytes .../sp-op-allow-trust-deauthorize/00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 667 bytes .../00007.png | Bin 0 -> 930 bytes .../00008.png | Bin 0 -> 517 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../snapshots/sp-op-bump-sequence/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-op-bump-sequence/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-op-bump-sequence/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-op-bump-sequence/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-op-bump-sequence/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-op-bump-sequence/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-op-bump-sequence/00006.png | Bin 0 -> 501 bytes .../snapshots/sp-op-bump-sequence/00007.png | Bin 0 -> 487 bytes .../snapshots/sp-op-bump-sequence/00008.png | Bin 0 -> 469 bytes .../snapshots/sp-op-bump-sequence/00009.png | Bin 0 -> 451 bytes .../snapshots/sp-op-bump-sequence/00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 533 bytes .../00007.png | Bin 0 -> 494 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 535 bytes .../00007.png | Bin 0 -> 469 bytes .../00008.png | Bin 0 -> 451 bytes .../00009.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 533 bytes .../00007.png | Bin 0 -> 451 bytes .../00008.png | Bin 0 -> 492 bytes .../00009.png | Bin 0 -> 417 bytes .../00010.png | Bin 0 -> 494 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 529 bytes .../00007.png | Bin 0 -> 451 bytes .../00008.png | Bin 0 -> 492 bytes .../00009.png | Bin 0 -> 417 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../sp-op-claim-claimable-balance/00000.png | Bin 0 -> 419 bytes .../sp-op-claim-claimable-balance/00001.png | Bin 0 -> 405 bytes .../sp-op-claim-claimable-balance/00002.png | Bin 0 -> 385 bytes .../sp-op-claim-claimable-balance/00003.png | Bin 0 -> 503 bytes .../sp-op-claim-claimable-balance/00004.png | Bin 0 -> 523 bytes .../sp-op-claim-claimable-balance/00005.png | Bin 0 -> 472 bytes .../sp-op-claim-claimable-balance/00006.png | Bin 0 -> 573 bytes .../sp-op-claim-claimable-balance/00007.png | Bin 0 -> 540 bytes .../sp-op-claim-claimable-balance/00008.png | Bin 0 -> 469 bytes .../sp-op-claim-claimable-balance/00009.png | Bin 0 -> 451 bytes .../sp-op-claim-claimable-balance/00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 619 bytes .../00007.png | Bin 0 -> 842 bytes .../00008.png | Bin 0 -> 581 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../sp-op-clawback-with-muxed-from/00000.png | Bin 0 -> 419 bytes .../sp-op-clawback-with-muxed-from/00001.png | Bin 0 -> 405 bytes .../sp-op-clawback-with-muxed-from/00002.png | Bin 0 -> 385 bytes .../sp-op-clawback-with-muxed-from/00003.png | Bin 0 -> 503 bytes .../sp-op-clawback-with-muxed-from/00004.png | Bin 0 -> 523 bytes .../sp-op-clawback-with-muxed-from/00005.png | Bin 0 -> 472 bytes .../sp-op-clawback-with-muxed-from/00006.png | Bin 0 -> 471 bytes .../sp-op-clawback-with-muxed-from/00007.png | Bin 0 -> 650 bytes .../sp-op-clawback-with-muxed-from/00008.png | Bin 0 -> 845 bytes .../sp-op-clawback-with-muxed-from/00009.png | Bin 0 -> 547 bytes .../sp-op-clawback-with-muxed-from/00010.png | Bin 0 -> 469 bytes .../sp-op-clawback-with-muxed-from/00011.png | Bin 0 -> 451 bytes .../sp-op-clawback-with-muxed-from/00012.png | Bin 0 -> 473 bytes tests_zemu/snapshots/sp-op-clawback/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/sp-op-clawback/00001.png | Bin 0 -> 405 bytes tests_zemu/snapshots/sp-op-clawback/00002.png | Bin 0 -> 385 bytes tests_zemu/snapshots/sp-op-clawback/00003.png | Bin 0 -> 503 bytes tests_zemu/snapshots/sp-op-clawback/00004.png | Bin 0 -> 523 bytes tests_zemu/snapshots/sp-op-clawback/00005.png | Bin 0 -> 472 bytes tests_zemu/snapshots/sp-op-clawback/00006.png | Bin 0 -> 471 bytes tests_zemu/snapshots/sp-op-clawback/00007.png | Bin 0 -> 650 bytes tests_zemu/snapshots/sp-op-clawback/00008.png | Bin 0 -> 843 bytes tests_zemu/snapshots/sp-op-clawback/00009.png | Bin 0 -> 443 bytes tests_zemu/snapshots/sp-op-clawback/00010.png | Bin 0 -> 469 bytes tests_zemu/snapshots/sp-op-clawback/00011.png | Bin 0 -> 451 bytes tests_zemu/snapshots/sp-op-clawback/00012.png | Bin 0 -> 473 bytes .../snapshots/sp-op-create-account/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-op-create-account/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-op-create-account/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-op-create-account/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-op-create-account/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-op-create-account/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-op-create-account/00006.png | Bin 0 -> 503 bytes .../snapshots/sp-op-create-account/00007.png | Bin 0 -> 915 bytes .../snapshots/sp-op-create-account/00008.png | Bin 0 -> 522 bytes .../snapshots/sp-op-create-account/00009.png | Bin 0 -> 467 bytes .../snapshots/sp-op-create-account/00010.png | Bin 0 -> 469 bytes .../snapshots/sp-op-create-account/00011.png | Bin 0 -> 451 bytes .../snapshots/sp-op-create-account/00012.png | Bin 0 -> 473 bytes .../sp-op-create-claimable-balance/00000.png | Bin 0 -> 419 bytes .../sp-op-create-claimable-balance/00001.png | Bin 0 -> 405 bytes .../sp-op-create-claimable-balance/00002.png | Bin 0 -> 385 bytes .../sp-op-create-claimable-balance/00003.png | Bin 0 -> 503 bytes .../sp-op-create-claimable-balance/00004.png | Bin 0 -> 523 bytes .../sp-op-create-claimable-balance/00005.png | Bin 0 -> 472 bytes .../sp-op-create-claimable-balance/00006.png | Bin 0 -> 586 bytes .../sp-op-create-claimable-balance/00007.png | Bin 0 -> 521 bytes .../sp-op-create-claimable-balance/00008.png | Bin 0 -> 739 bytes .../sp-op-create-claimable-balance/00009.png | Bin 0 -> 469 bytes .../sp-op-create-claimable-balance/00010.png | Bin 0 -> 451 bytes .../sp-op-create-claimable-balance/00011.png | Bin 0 -> 473 bytes .../sp-op-create-passive-sell-offer/00000.png | Bin 0 -> 419 bytes .../sp-op-create-passive-sell-offer/00001.png | Bin 0 -> 405 bytes .../sp-op-create-passive-sell-offer/00002.png | Bin 0 -> 385 bytes .../sp-op-create-passive-sell-offer/00003.png | Bin 0 -> 503 bytes .../sp-op-create-passive-sell-offer/00004.png | Bin 0 -> 523 bytes .../sp-op-create-passive-sell-offer/00005.png | Bin 0 -> 472 bytes .../sp-op-create-passive-sell-offer/00006.png | Bin 0 -> 605 bytes .../sp-op-create-passive-sell-offer/00007.png | Bin 0 -> 308 bytes .../sp-op-create-passive-sell-offer/00008.png | Bin 0 -> 598 bytes .../sp-op-create-passive-sell-offer/00009.png | Bin 0 -> 444 bytes .../sp-op-create-passive-sell-offer/00010.png | Bin 0 -> 469 bytes .../sp-op-create-passive-sell-offer/00011.png | Bin 0 -> 451 bytes .../sp-op-create-passive-sell-offer/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 643 bytes .../00007.png | Bin 0 -> 469 bytes .../00008.png | Bin 0 -> 451 bytes .../00009.png | Bin 0 -> 473 bytes .../snapshots/sp-op-inflation/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-op-inflation/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-op-inflation/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-op-inflation/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-op-inflation/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-op-inflation/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-op-inflation/00006.png | Bin 0 -> 447 bytes .../snapshots/sp-op-inflation/00007.png | Bin 0 -> 469 bytes .../snapshots/sp-op-inflation/00008.png | Bin 0 -> 451 bytes .../snapshots/sp-op-inflation/00009.png | Bin 0 -> 473 bytes .../sp-op-liquidity-pool-deposit/00000.png | Bin 0 -> 419 bytes .../sp-op-liquidity-pool-deposit/00001.png | Bin 0 -> 405 bytes .../sp-op-liquidity-pool-deposit/00002.png | Bin 0 -> 385 bytes .../sp-op-liquidity-pool-deposit/00003.png | Bin 0 -> 503 bytes .../sp-op-liquidity-pool-deposit/00004.png | Bin 0 -> 523 bytes .../sp-op-liquidity-pool-deposit/00005.png | Bin 0 -> 472 bytes .../sp-op-liquidity-pool-deposit/00006.png | Bin 0 -> 577 bytes .../sp-op-liquidity-pool-deposit/00007.png | Bin 0 -> 925 bytes .../sp-op-liquidity-pool-deposit/00008.png | Bin 0 -> 517 bytes .../sp-op-liquidity-pool-deposit/00009.png | Bin 0 -> 401 bytes .../sp-op-liquidity-pool-deposit/00010.png | Bin 0 -> 426 bytes .../sp-op-liquidity-pool-deposit/00011.png | Bin 0 -> 436 bytes .../sp-op-liquidity-pool-deposit/00012.png | Bin 0 -> 370 bytes .../sp-op-liquidity-pool-deposit/00013.png | Bin 0 -> 469 bytes .../sp-op-liquidity-pool-deposit/00014.png | Bin 0 -> 451 bytes .../sp-op-liquidity-pool-deposit/00015.png | Bin 0 -> 473 bytes .../sp-op-liquidity-pool-withdraw/00000.png | Bin 0 -> 419 bytes .../sp-op-liquidity-pool-withdraw/00001.png | Bin 0 -> 405 bytes .../sp-op-liquidity-pool-withdraw/00002.png | Bin 0 -> 385 bytes .../sp-op-liquidity-pool-withdraw/00003.png | Bin 0 -> 503 bytes .../sp-op-liquidity-pool-withdraw/00004.png | Bin 0 -> 523 bytes .../sp-op-liquidity-pool-withdraw/00005.png | Bin 0 -> 472 bytes .../sp-op-liquidity-pool-withdraw/00006.png | Bin 0 -> 583 bytes .../sp-op-liquidity-pool-withdraw/00007.png | Bin 0 -> 925 bytes .../sp-op-liquidity-pool-withdraw/00008.png | Bin 0 -> 517 bytes .../sp-op-liquidity-pool-withdraw/00009.png | Bin 0 -> 347 bytes .../sp-op-liquidity-pool-withdraw/00010.png | Bin 0 -> 377 bytes .../sp-op-liquidity-pool-withdraw/00011.png | Bin 0 -> 387 bytes .../sp-op-liquidity-pool-withdraw/00012.png | Bin 0 -> 469 bytes .../sp-op-liquidity-pool-withdraw/00013.png | Bin 0 -> 451 bytes .../sp-op-liquidity-pool-withdraw/00014.png | Bin 0 -> 473 bytes .../sp-op-manage-buy-offer-create/00000.png | Bin 0 -> 419 bytes .../sp-op-manage-buy-offer-create/00001.png | Bin 0 -> 405 bytes .../sp-op-manage-buy-offer-create/00002.png | Bin 0 -> 385 bytes .../sp-op-manage-buy-offer-create/00003.png | Bin 0 -> 503 bytes .../sp-op-manage-buy-offer-create/00004.png | Bin 0 -> 523 bytes .../sp-op-manage-buy-offer-create/00005.png | Bin 0 -> 472 bytes .../sp-op-manage-buy-offer-create/00006.png | Bin 0 -> 461 bytes .../sp-op-manage-buy-offer-create/00007.png | Bin 0 -> 422 bytes .../sp-op-manage-buy-offer-create/00008.png | Bin 0 -> 467 bytes .../sp-op-manage-buy-offer-create/00009.png | Bin 0 -> 420 bytes .../sp-op-manage-buy-offer-create/00010.png | Bin 0 -> 469 bytes .../sp-op-manage-buy-offer-create/00011.png | Bin 0 -> 451 bytes .../sp-op-manage-buy-offer-create/00012.png | Bin 0 -> 473 bytes .../sp-op-manage-buy-offer-delete/00000.png | Bin 0 -> 419 bytes .../sp-op-manage-buy-offer-delete/00001.png | Bin 0 -> 405 bytes .../sp-op-manage-buy-offer-delete/00002.png | Bin 0 -> 385 bytes .../sp-op-manage-buy-offer-delete/00003.png | Bin 0 -> 503 bytes .../sp-op-manage-buy-offer-delete/00004.png | Bin 0 -> 523 bytes .../sp-op-manage-buy-offer-delete/00005.png | Bin 0 -> 472 bytes .../sp-op-manage-buy-offer-delete/00006.png | Bin 0 -> 449 bytes .../sp-op-manage-buy-offer-delete/00007.png | Bin 0 -> 469 bytes .../sp-op-manage-buy-offer-delete/00008.png | Bin 0 -> 451 bytes .../sp-op-manage-buy-offer-delete/00009.png | Bin 0 -> 473 bytes .../sp-op-manage-buy-offer-update/00000.png | Bin 0 -> 419 bytes .../sp-op-manage-buy-offer-update/00001.png | Bin 0 -> 405 bytes .../sp-op-manage-buy-offer-update/00002.png | Bin 0 -> 385 bytes .../sp-op-manage-buy-offer-update/00003.png | Bin 0 -> 503 bytes .../sp-op-manage-buy-offer-update/00004.png | Bin 0 -> 523 bytes .../sp-op-manage-buy-offer-update/00005.png | Bin 0 -> 472 bytes .../sp-op-manage-buy-offer-update/00006.png | Bin 0 -> 455 bytes .../sp-op-manage-buy-offer-update/00007.png | Bin 0 -> 422 bytes .../sp-op-manage-buy-offer-update/00008.png | Bin 0 -> 467 bytes .../sp-op-manage-buy-offer-update/00009.png | Bin 0 -> 420 bytes .../sp-op-manage-buy-offer-update/00010.png | Bin 0 -> 469 bytes .../sp-op-manage-buy-offer-update/00011.png | Bin 0 -> 451 bytes .../sp-op-manage-buy-offer-update/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 666 bytes .../00007.png | Bin 0 -> 451 bytes .../00008.png | Bin 0 -> 560 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../snapshots/sp-op-manage-data-add/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-op-manage-data-add/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-op-manage-data-add/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-op-manage-data-add/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-op-manage-data-add/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-op-manage-data-add/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-op-manage-data-add/00006.png | Bin 0 -> 666 bytes .../snapshots/sp-op-manage-data-add/00007.png | Bin 0 -> 451 bytes .../snapshots/sp-op-manage-data-add/00008.png | Bin 0 -> 613 bytes .../snapshots/sp-op-manage-data-add/00009.png | Bin 0 -> 445 bytes .../snapshots/sp-op-manage-data-add/00010.png | Bin 0 -> 469 bytes .../snapshots/sp-op-manage-data-add/00011.png | Bin 0 -> 451 bytes .../snapshots/sp-op-manage-data-add/00012.png | Bin 0 -> 473 bytes .../sp-op-manage-data-remove/00000.png | Bin 0 -> 419 bytes .../sp-op-manage-data-remove/00001.png | Bin 0 -> 405 bytes .../sp-op-manage-data-remove/00002.png | Bin 0 -> 385 bytes .../sp-op-manage-data-remove/00003.png | Bin 0 -> 503 bytes .../sp-op-manage-data-remove/00004.png | Bin 0 -> 523 bytes .../sp-op-manage-data-remove/00005.png | Bin 0 -> 472 bytes .../sp-op-manage-data-remove/00006.png | Bin 0 -> 702 bytes .../sp-op-manage-data-remove/00007.png | Bin 0 -> 482 bytes .../sp-op-manage-data-remove/00008.png | Bin 0 -> 469 bytes .../sp-op-manage-data-remove/00009.png | Bin 0 -> 451 bytes .../sp-op-manage-data-remove/00010.png | Bin 0 -> 473 bytes .../sp-op-manage-sell-offer-create/00000.png | Bin 0 -> 419 bytes .../sp-op-manage-sell-offer-create/00001.png | Bin 0 -> 405 bytes .../sp-op-manage-sell-offer-create/00002.png | Bin 0 -> 385 bytes .../sp-op-manage-sell-offer-create/00003.png | Bin 0 -> 503 bytes .../sp-op-manage-sell-offer-create/00004.png | Bin 0 -> 523 bytes .../sp-op-manage-sell-offer-create/00005.png | Bin 0 -> 472 bytes .../sp-op-manage-sell-offer-create/00006.png | Bin 0 -> 461 bytes .../sp-op-manage-sell-offer-create/00007.png | Bin 0 -> 308 bytes .../sp-op-manage-sell-offer-create/00008.png | Bin 0 -> 598 bytes .../sp-op-manage-sell-offer-create/00009.png | Bin 0 -> 444 bytes .../sp-op-manage-sell-offer-create/00010.png | Bin 0 -> 469 bytes .../sp-op-manage-sell-offer-create/00011.png | Bin 0 -> 451 bytes .../sp-op-manage-sell-offer-create/00012.png | Bin 0 -> 473 bytes .../sp-op-manage-sell-offer-delete/00000.png | Bin 0 -> 419 bytes .../sp-op-manage-sell-offer-delete/00001.png | Bin 0 -> 405 bytes .../sp-op-manage-sell-offer-delete/00002.png | Bin 0 -> 385 bytes .../sp-op-manage-sell-offer-delete/00003.png | Bin 0 -> 503 bytes .../sp-op-manage-sell-offer-delete/00004.png | Bin 0 -> 523 bytes .../sp-op-manage-sell-offer-delete/00005.png | Bin 0 -> 472 bytes .../sp-op-manage-sell-offer-delete/00006.png | Bin 0 -> 451 bytes .../sp-op-manage-sell-offer-delete/00007.png | Bin 0 -> 469 bytes .../sp-op-manage-sell-offer-delete/00008.png | Bin 0 -> 451 bytes .../sp-op-manage-sell-offer-delete/00009.png | Bin 0 -> 473 bytes .../sp-op-manage-sell-offer-update/00000.png | Bin 0 -> 419 bytes .../sp-op-manage-sell-offer-update/00001.png | Bin 0 -> 405 bytes .../sp-op-manage-sell-offer-update/00002.png | Bin 0 -> 385 bytes .../sp-op-manage-sell-offer-update/00003.png | Bin 0 -> 503 bytes .../sp-op-manage-sell-offer-update/00004.png | Bin 0 -> 523 bytes .../sp-op-manage-sell-offer-update/00005.png | Bin 0 -> 472 bytes .../sp-op-manage-sell-offer-update/00006.png | Bin 0 -> 450 bytes .../sp-op-manage-sell-offer-update/00007.png | Bin 0 -> 308 bytes .../sp-op-manage-sell-offer-update/00008.png | Bin 0 -> 598 bytes .../sp-op-manage-sell-offer-update/00009.png | Bin 0 -> 444 bytes .../sp-op-manage-sell-offer-update/00010.png | Bin 0 -> 469 bytes .../sp-op-manage-sell-offer-update/00011.png | Bin 0 -> 451 bytes .../sp-op-manage-sell-offer-update/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 482 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 504 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 482 bytes .../00007.png | Bin 0 -> 920 bytes .../00008.png | Bin 0 -> 623 bytes .../00009.png | Bin 0 -> 504 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 482 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 504 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 500 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 516 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 500 bytes .../00007.png | Bin 0 -> 920 bytes .../00008.png | Bin 0 -> 623 bytes .../00009.png | Bin 0 -> 516 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../sp-op-path-payment-strict-send/00000.png | Bin 0 -> 419 bytes .../sp-op-path-payment-strict-send/00001.png | Bin 0 -> 405 bytes .../sp-op-path-payment-strict-send/00002.png | Bin 0 -> 385 bytes .../sp-op-path-payment-strict-send/00003.png | Bin 0 -> 503 bytes .../sp-op-path-payment-strict-send/00004.png | Bin 0 -> 523 bytes .../sp-op-path-payment-strict-send/00005.png | Bin 0 -> 472 bytes .../sp-op-path-payment-strict-send/00006.png | Bin 0 -> 500 bytes .../sp-op-path-payment-strict-send/00007.png | Bin 0 -> 915 bytes .../sp-op-path-payment-strict-send/00008.png | Bin 0 -> 522 bytes .../sp-op-path-payment-strict-send/00009.png | Bin 0 -> 516 bytes .../sp-op-path-payment-strict-send/00010.png | Bin 0 -> 469 bytes .../sp-op-path-payment-strict-send/00011.png | Bin 0 -> 451 bytes .../sp-op-path-payment-strict-send/00012.png | Bin 0 -> 473 bytes .../sp-op-payment-asset-alphanum12/00000.png | Bin 0 -> 419 bytes .../sp-op-payment-asset-alphanum12/00001.png | Bin 0 -> 405 bytes .../sp-op-payment-asset-alphanum12/00002.png | Bin 0 -> 385 bytes .../sp-op-payment-asset-alphanum12/00003.png | Bin 0 -> 503 bytes .../sp-op-payment-asset-alphanum12/00004.png | Bin 0 -> 523 bytes .../sp-op-payment-asset-alphanum12/00005.png | Bin 0 -> 472 bytes .../sp-op-payment-asset-alphanum12/00006.png | Bin 0 -> 670 bytes .../sp-op-payment-asset-alphanum12/00007.png | Bin 0 -> 440 bytes .../sp-op-payment-asset-alphanum12/00008.png | Bin 0 -> 915 bytes .../sp-op-payment-asset-alphanum12/00009.png | Bin 0 -> 522 bytes .../sp-op-payment-asset-alphanum12/00010.png | Bin 0 -> 469 bytes .../sp-op-payment-asset-alphanum12/00011.png | Bin 0 -> 451 bytes .../sp-op-payment-asset-alphanum12/00012.png | Bin 0 -> 473 bytes .../sp-op-payment-asset-alphanum4/00000.png | Bin 0 -> 419 bytes .../sp-op-payment-asset-alphanum4/00001.png | Bin 0 -> 405 bytes .../sp-op-payment-asset-alphanum4/00002.png | Bin 0 -> 385 bytes .../sp-op-payment-asset-alphanum4/00003.png | Bin 0 -> 503 bytes .../sp-op-payment-asset-alphanum4/00004.png | Bin 0 -> 523 bytes .../sp-op-payment-asset-alphanum4/00005.png | Bin 0 -> 472 bytes .../sp-op-payment-asset-alphanum4/00006.png | Bin 0 -> 620 bytes .../sp-op-payment-asset-alphanum4/00007.png | Bin 0 -> 915 bytes .../sp-op-payment-asset-alphanum4/00008.png | Bin 0 -> 522 bytes .../sp-op-payment-asset-alphanum4/00009.png | Bin 0 -> 469 bytes .../sp-op-payment-asset-alphanum4/00010.png | Bin 0 -> 451 bytes .../sp-op-payment-asset-alphanum4/00011.png | Bin 0 -> 473 bytes .../sp-op-payment-asset-native/00000.png | Bin 0 -> 419 bytes .../sp-op-payment-asset-native/00001.png | Bin 0 -> 405 bytes .../sp-op-payment-asset-native/00002.png | Bin 0 -> 385 bytes .../sp-op-payment-asset-native/00003.png | Bin 0 -> 503 bytes .../sp-op-payment-asset-native/00004.png | Bin 0 -> 523 bytes .../sp-op-payment-asset-native/00005.png | Bin 0 -> 472 bytes .../sp-op-payment-asset-native/00006.png | Bin 0 -> 531 bytes .../sp-op-payment-asset-native/00007.png | Bin 0 -> 915 bytes .../sp-op-payment-asset-native/00008.png | Bin 0 -> 522 bytes .../sp-op-payment-asset-native/00009.png | Bin 0 -> 469 bytes .../sp-op-payment-asset-native/00010.png | Bin 0 -> 451 bytes .../sp-op-payment-asset-native/00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 531 bytes .../00007.png | Bin 0 -> 920 bytes .../00008.png | Bin 0 -> 623 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 671 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 804 bytes .../00007.png | Bin 0 -> 842 bytes .../00008.png | Bin 0 -> 581 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../sp-op-revoke-sponsorship-data/00000.png | Bin 0 -> 419 bytes .../sp-op-revoke-sponsorship-data/00001.png | Bin 0 -> 405 bytes .../sp-op-revoke-sponsorship-data/00002.png | Bin 0 -> 385 bytes .../sp-op-revoke-sponsorship-data/00003.png | Bin 0 -> 503 bytes .../sp-op-revoke-sponsorship-data/00004.png | Bin 0 -> 523 bytes .../sp-op-revoke-sponsorship-data/00005.png | Bin 0 -> 472 bytes .../sp-op-revoke-sponsorship-data/00006.png | Bin 0 -> 638 bytes .../sp-op-revoke-sponsorship-data/00007.png | Bin 0 -> 899 bytes .../sp-op-revoke-sponsorship-data/00008.png | Bin 0 -> 497 bytes .../sp-op-revoke-sponsorship-data/00009.png | Bin 0 -> 667 bytes .../sp-op-revoke-sponsorship-data/00010.png | Bin 0 -> 460 bytes .../sp-op-revoke-sponsorship-data/00011.png | Bin 0 -> 469 bytes .../sp-op-revoke-sponsorship-data/00012.png | Bin 0 -> 451 bytes .../sp-op-revoke-sponsorship-data/00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 697 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 508 bytes .../00010.png | Bin 0 -> 973 bytes .../00011.png | Bin 0 -> 533 bytes .../00012.png | Bin 0 -> 469 bytes .../00013.png | Bin 0 -> 451 bytes .../00014.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 697 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 501 bytes .../00010.png | Bin 0 -> 981 bytes .../00011.png | Bin 0 -> 544 bytes .../00012.png | Bin 0 -> 469 bytes .../00013.png | Bin 0 -> 451 bytes .../00014.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 681 bytes .../00007.png | Bin 0 -> 924 bytes .../00008.png | Bin 0 -> 516 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../sp-op-revoke-sponsorship-offer/00000.png | Bin 0 -> 419 bytes .../sp-op-revoke-sponsorship-offer/00001.png | Bin 0 -> 405 bytes .../sp-op-revoke-sponsorship-offer/00002.png | Bin 0 -> 385 bytes .../sp-op-revoke-sponsorship-offer/00003.png | Bin 0 -> 503 bytes .../sp-op-revoke-sponsorship-offer/00004.png | Bin 0 -> 523 bytes .../sp-op-revoke-sponsorship-offer/00005.png | Bin 0 -> 472 bytes .../sp-op-revoke-sponsorship-offer/00006.png | Bin 0 -> 646 bytes .../sp-op-revoke-sponsorship-offer/00007.png | Bin 0 -> 884 bytes .../sp-op-revoke-sponsorship-offer/00008.png | Bin 0 -> 486 bytes .../sp-op-revoke-sponsorship-offer/00009.png | Bin 0 -> 379 bytes .../sp-op-revoke-sponsorship-offer/00010.png | Bin 0 -> 469 bytes .../sp-op-revoke-sponsorship-offer/00011.png | Bin 0 -> 451 bytes .../sp-op-revoke-sponsorship-offer/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 697 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 496 bytes .../00010.png | Bin 0 -> 964 bytes .../00011.png | Bin 0 -> 548 bytes .../00012.png | Bin 0 -> 469 bytes .../00013.png | Bin 0 -> 451 bytes .../00014.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 680 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 439 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 680 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 925 bytes .../00010.png | Bin 0 -> 517 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 496 bytes .../00008.png | Bin 0 -> 981 bytes .../00009.png | Bin 0 -> 544 bytes .../00010.png | Bin 0 -> 341 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 499 bytes .../00008.png | Bin 0 -> 964 bytes .../00009.png | Bin 0 -> 548 bytes .../00010.png | Bin 0 -> 341 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 499 bytes .../00008.png | Bin 0 -> 943 bytes .../00009.png | Bin 0 -> 541 bytes .../00010.png | Bin 0 -> 341 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 442 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../snapshots/sp-op-set-options/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-op-set-options/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-op-set-options/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-op-set-options/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-op-set-options/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-op-set-options/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-op-set-options/00006.png | Bin 0 -> 484 bytes .../snapshots/sp-op-set-options/00007.png | Bin 0 -> 924 bytes .../snapshots/sp-op-set-options/00008.png | Bin 0 -> 527 bytes .../snapshots/sp-op-set-options/00009.png | Bin 0 -> 615 bytes .../snapshots/sp-op-set-options/00010.png | Bin 0 -> 481 bytes .../snapshots/sp-op-set-options/00011.png | Bin 0 -> 442 bytes .../snapshots/sp-op-set-options/00012.png | Bin 0 -> 360 bytes .../snapshots/sp-op-set-options/00013.png | Bin 0 -> 401 bytes .../snapshots/sp-op-set-options/00014.png | Bin 0 -> 382 bytes .../snapshots/sp-op-set-options/00015.png | Bin 0 -> 437 bytes .../snapshots/sp-op-set-options/00016.png | Bin 0 -> 499 bytes .../snapshots/sp-op-set-options/00017.png | Bin 0 -> 973 bytes .../snapshots/sp-op-set-options/00018.png | Bin 0 -> 533 bytes .../snapshots/sp-op-set-options/00019.png | Bin 0 -> 341 bytes .../snapshots/sp-op-set-options/00020.png | Bin 0 -> 469 bytes .../snapshots/sp-op-set-options/00021.png | Bin 0 -> 451 bytes .../snapshots/sp-op-set-options/00022.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 542 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 694 bytes .../00011.png | Bin 0 -> 765 bytes .../00012.png | Bin 0 -> 507 bytes .../00013.png | Bin 0 -> 469 bytes .../00014.png | Bin 0 -> 451 bytes .../00015.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 542 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 762 bytes .../00011.png | Bin 0 -> 508 bytes .../00012.png | Bin 0 -> 699 bytes .../00013.png | Bin 0 -> 469 bytes .../00014.png | Bin 0 -> 451 bytes .../00015.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 542 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 681 bytes .../00011.png | Bin 0 -> 694 bytes .../00012.png | Bin 0 -> 521 bytes .../00013.png | Bin 0 -> 469 bytes .../00014.png | Bin 0 -> 451 bytes .../00015.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 542 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 688 bytes .../00011.png | Bin 0 -> 759 bytes .../00012.png | Bin 0 -> 509 bytes .../00013.png | Bin 0 -> 405 bytes .../00014.png | Bin 0 -> 469 bytes .../00015.png | Bin 0 -> 451 bytes .../00016.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 912 bytes .../00006.png | Bin 0 -> 497 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 925 bytes .../00010.png | Bin 0 -> 503 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 925 bytes .../00006.png | Bin 0 -> 592 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 926 bytes .../00010.png | Bin 0 -> 601 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 925 bytes .../00006.png | Bin 0 -> 592 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 925 bytes .../00010.png | Bin 0 -> 503 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 435 bytes .../00008.png | Bin 0 -> 926 bytes .../00009.png | Bin 0 -> 601 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 435 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 912 bytes .../00006.png | Bin 0 -> 497 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 908 bytes .../00010.png | Bin 0 -> 502 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 435 bytes .../00008.png | Bin 0 -> 908 bytes .../00009.png | Bin 0 -> 502 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../sp-op-with-empty-source/00000.png | Bin 0 -> 419 bytes .../sp-op-with-empty-source/00001.png | Bin 0 -> 405 bytes .../sp-op-with-empty-source/00002.png | Bin 0 -> 385 bytes .../sp-op-with-empty-source/00003.png | Bin 0 -> 503 bytes .../sp-op-with-empty-source/00004.png | Bin 0 -> 523 bytes .../sp-op-with-empty-source/00005.png | Bin 0 -> 472 bytes .../sp-op-with-empty-source/00006.png | Bin 0 -> 531 bytes .../sp-op-with-empty-source/00007.png | Bin 0 -> 915 bytes .../sp-op-with-empty-source/00008.png | Bin 0 -> 522 bytes .../sp-op-with-empty-source/00009.png | Bin 0 -> 451 bytes .../sp-op-with-empty-source/00010.png | Bin 0 -> 473 bytes .../sp-op-with-muxed-source/00000.png | Bin 0 -> 419 bytes .../sp-op-with-muxed-source/00001.png | Bin 0 -> 405 bytes .../sp-op-with-muxed-source/00002.png | Bin 0 -> 385 bytes .../sp-op-with-muxed-source/00003.png | Bin 0 -> 503 bytes .../sp-op-with-muxed-source/00004.png | Bin 0 -> 523 bytes .../sp-op-with-muxed-source/00005.png | Bin 0 -> 472 bytes .../sp-op-with-muxed-source/00006.png | Bin 0 -> 531 bytes .../sp-op-with-muxed-source/00007.png | Bin 0 -> 915 bytes .../sp-op-with-muxed-source/00008.png | Bin 0 -> 522 bytes .../sp-op-with-muxed-source/00009.png | Bin 0 -> 926 bytes .../sp-op-with-muxed-source/00010.png | Bin 0 -> 601 bytes .../sp-op-with-muxed-source/00011.png | Bin 0 -> 451 bytes .../sp-op-with-muxed-source/00012.png | Bin 0 -> 473 bytes .../snapshots/sp-public-key-approve/00000.png | Bin 0 -> 399 bytes .../snapshots/sp-public-key-approve/00001.png | Bin 0 -> 895 bytes .../snapshots/sp-public-key-approve/00002.png | Bin 0 -> 478 bytes .../snapshots/sp-public-key-approve/00003.png | Bin 0 -> 364 bytes .../snapshots/sp-public-key-approve/00004.png | Bin 0 -> 473 bytes .../snapshots/sp-public-key-reject/00000.png | Bin 0 -> 399 bytes .../snapshots/sp-public-key-reject/00001.png | Bin 0 -> 895 bytes .../snapshots/sp-public-key-reject/00002.png | Bin 0 -> 478 bytes .../snapshots/sp-public-key-reject/00003.png | Bin 0 -> 364 bytes .../snapshots/sp-public-key-reject/00004.png | Bin 0 -> 365 bytes .../snapshots/sp-public-key-reject/00005.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 332 bytes .../00006.png | Bin 0 -> 915 bytes .../00007.png | Bin 0 -> 522 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 332 bytes .../00006.png | Bin 0 -> 915 bytes .../00007.png | Bin 0 -> 522 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-cond-is-none/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-cond-is-none/00001.png | Bin 0 -> 932 bytes .../snapshots/sp-tx-cond-is-none/00002.png | Bin 0 -> 527 bytes .../snapshots/sp-tx-cond-is-none/00003.png | Bin 0 -> 385 bytes .../snapshots/sp-tx-cond-is-none/00004.png | Bin 0 -> 503 bytes .../snapshots/sp-tx-cond-is-none/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-cond-is-none/00006.png | Bin 0 -> 332 bytes .../snapshots/sp-tx-cond-is-none/00007.png | Bin 0 -> 915 bytes .../snapshots/sp-tx-cond-is-none/00008.png | Bin 0 -> 522 bytes .../snapshots/sp-tx-cond-is-none/00009.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-cond-is-none/00010.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-cond-is-none/00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 332 bytes .../00006.png | Bin 0 -> 915 bytes .../00007.png | Bin 0 -> 522 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 491 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 504 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../sp-tx-cond-ledger-bounds/00000.png | Bin 0 -> 419 bytes .../sp-tx-cond-ledger-bounds/00001.png | Bin 0 -> 405 bytes .../sp-tx-cond-ledger-bounds/00002.png | Bin 0 -> 385 bytes .../sp-tx-cond-ledger-bounds/00003.png | Bin 0 -> 503 bytes .../sp-tx-cond-ledger-bounds/00004.png | Bin 0 -> 491 bytes .../sp-tx-cond-ledger-bounds/00005.png | Bin 0 -> 504 bytes .../sp-tx-cond-ledger-bounds/00006.png | Bin 0 -> 472 bytes .../sp-tx-cond-ledger-bounds/00007.png | Bin 0 -> 332 bytes .../sp-tx-cond-ledger-bounds/00008.png | Bin 0 -> 915 bytes .../sp-tx-cond-ledger-bounds/00009.png | Bin 0 -> 522 bytes .../sp-tx-cond-ledger-bounds/00010.png | Bin 0 -> 469 bytes .../sp-tx-cond-ledger-bounds/00011.png | Bin 0 -> 451 bytes .../sp-tx-cond-ledger-bounds/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 467 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 438 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../sp-tx-cond-min-account-sequence/00000.png | Bin 0 -> 419 bytes .../sp-tx-cond-min-account-sequence/00001.png | Bin 0 -> 405 bytes .../sp-tx-cond-min-account-sequence/00002.png | Bin 0 -> 385 bytes .../sp-tx-cond-min-account-sequence/00003.png | Bin 0 -> 503 bytes .../sp-tx-cond-min-account-sequence/00004.png | Bin 0 -> 500 bytes .../sp-tx-cond-min-account-sequence/00005.png | Bin 0 -> 472 bytes .../sp-tx-cond-min-account-sequence/00006.png | Bin 0 -> 332 bytes .../sp-tx-cond-min-account-sequence/00007.png | Bin 0 -> 915 bytes .../sp-tx-cond-min-account-sequence/00008.png | Bin 0 -> 522 bytes .../sp-tx-cond-min-account-sequence/00009.png | Bin 0 -> 469 bytes .../sp-tx-cond-min-account-sequence/00010.png | Bin 0 -> 451 bytes .../sp-tx-cond-min-account-sequence/00011.png | Bin 0 -> 473 bytes .../sp-tx-cond-time-bounds-are-zero/00000.png | Bin 0 -> 419 bytes .../sp-tx-cond-time-bounds-are-zero/00001.png | Bin 0 -> 405 bytes .../sp-tx-cond-time-bounds-are-zero/00002.png | Bin 0 -> 385 bytes .../sp-tx-cond-time-bounds-are-zero/00003.png | Bin 0 -> 503 bytes .../sp-tx-cond-time-bounds-are-zero/00004.png | Bin 0 -> 472 bytes .../sp-tx-cond-time-bounds-are-zero/00005.png | Bin 0 -> 332 bytes .../sp-tx-cond-time-bounds-are-zero/00006.png | Bin 0 -> 915 bytes .../sp-tx-cond-time-bounds-are-zero/00007.png | Bin 0 -> 522 bytes .../sp-tx-cond-time-bounds-are-zero/00008.png | Bin 0 -> 469 bytes .../sp-tx-cond-time-bounds-are-zero/00009.png | Bin 0 -> 451 bytes .../sp-tx-cond-time-bounds-are-zero/00010.png | Bin 0 -> 473 bytes .../sp-tx-cond-time-bounds-is-none/00000.png | Bin 0 -> 419 bytes .../sp-tx-cond-time-bounds-is-none/00001.png | Bin 0 -> 932 bytes .../sp-tx-cond-time-bounds-is-none/00002.png | Bin 0 -> 527 bytes .../sp-tx-cond-time-bounds-is-none/00003.png | Bin 0 -> 385 bytes .../sp-tx-cond-time-bounds-is-none/00004.png | Bin 0 -> 503 bytes .../sp-tx-cond-time-bounds-is-none/00005.png | Bin 0 -> 491 bytes .../sp-tx-cond-time-bounds-is-none/00006.png | Bin 0 -> 504 bytes .../sp-tx-cond-time-bounds-is-none/00007.png | Bin 0 -> 472 bytes .../sp-tx-cond-time-bounds-is-none/00008.png | Bin 0 -> 332 bytes .../sp-tx-cond-time-bounds-is-none/00009.png | Bin 0 -> 915 bytes .../sp-tx-cond-time-bounds-is-none/00010.png | Bin 0 -> 522 bytes .../sp-tx-cond-time-bounds-is-none/00011.png | Bin 0 -> 469 bytes .../sp-tx-cond-time-bounds-is-none/00012.png | Bin 0 -> 451 bytes .../sp-tx-cond-time-bounds-is-none/00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 507 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 527 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../sp-tx-cond-time-bounds/00000.png | Bin 0 -> 419 bytes .../sp-tx-cond-time-bounds/00001.png | Bin 0 -> 405 bytes .../sp-tx-cond-time-bounds/00002.png | Bin 0 -> 385 bytes .../sp-tx-cond-time-bounds/00003.png | Bin 0 -> 503 bytes .../sp-tx-cond-time-bounds/00004.png | Bin 0 -> 518 bytes .../sp-tx-cond-time-bounds/00005.png | Bin 0 -> 523 bytes .../sp-tx-cond-time-bounds/00006.png | Bin 0 -> 472 bytes .../sp-tx-cond-time-bounds/00007.png | Bin 0 -> 332 bytes .../sp-tx-cond-time-bounds/00008.png | Bin 0 -> 915 bytes .../sp-tx-cond-time-bounds/00009.png | Bin 0 -> 522 bytes .../sp-tx-cond-time-bounds/00010.png | Bin 0 -> 469 bytes .../sp-tx-cond-time-bounds/00011.png | Bin 0 -> 451 bytes .../sp-tx-cond-time-bounds/00012.png | Bin 0 -> 473 bytes .../sp-tx-cond-with-all-items/00000.png | Bin 0 -> 419 bytes .../sp-tx-cond-with-all-items/00001.png | Bin 0 -> 405 bytes .../sp-tx-cond-with-all-items/00002.png | Bin 0 -> 385 bytes .../sp-tx-cond-with-all-items/00003.png | Bin 0 -> 503 bytes .../sp-tx-cond-with-all-items/00004.png | Bin 0 -> 518 bytes .../sp-tx-cond-with-all-items/00005.png | Bin 0 -> 523 bytes .../sp-tx-cond-with-all-items/00006.png | Bin 0 -> 491 bytes .../sp-tx-cond-with-all-items/00007.png | Bin 0 -> 504 bytes .../sp-tx-cond-with-all-items/00008.png | Bin 0 -> 500 bytes .../sp-tx-cond-with-all-items/00009.png | Bin 0 -> 467 bytes .../sp-tx-cond-with-all-items/00010.png | Bin 0 -> 438 bytes .../sp-tx-cond-with-all-items/00011.png | Bin 0 -> 472 bytes .../sp-tx-cond-with-all-items/00012.png | Bin 0 -> 332 bytes .../sp-tx-cond-with-all-items/00013.png | Bin 0 -> 915 bytes .../sp-tx-cond-with-all-items/00014.png | Bin 0 -> 522 bytes .../sp-tx-cond-with-all-items/00015.png | Bin 0 -> 469 bytes .../sp-tx-cond-with-all-items/00016.png | Bin 0 -> 451 bytes .../sp-tx-cond-with-all-items/00017.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-custom-base-fee/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-custom-base-fee/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-tx-custom-base-fee/00002.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-custom-base-fee/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-tx-custom-base-fee/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-tx-custom-base-fee/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-custom-base-fee/00006.png | Bin 0 -> 355 bytes .../snapshots/sp-tx-custom-base-fee/00007.png | Bin 0 -> 332 bytes .../snapshots/sp-tx-custom-base-fee/00008.png | Bin 0 -> 915 bytes .../snapshots/sp-tx-custom-base-fee/00009.png | Bin 0 -> 522 bytes .../snapshots/sp-tx-custom-base-fee/00010.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-custom-base-fee/00011.png | Bin 0 -> 359 bytes .../snapshots/sp-tx-custom-base-fee/00012.png | Bin 0 -> 332 bytes .../snapshots/sp-tx-custom-base-fee/00013.png | Bin 0 -> 944 bytes .../snapshots/sp-tx-custom-base-fee/00014.png | Bin 0 -> 519 bytes .../snapshots/sp-tx-custom-base-fee/00015.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-custom-base-fee/00016.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-custom-base-fee/00017.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-hide-sequence/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-hide-sequence/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-tx-hide-sequence/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-tx-hide-sequence/00003.png | Bin 0 -> 523 bytes .../snapshots/sp-tx-hide-sequence/00004.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-hide-sequence/00005.png | Bin 0 -> 501 bytes .../snapshots/sp-tx-hide-sequence/00006.png | Bin 0 -> 435 bytes .../snapshots/sp-tx-hide-sequence/00007.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-hide-sequence/00008.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-hide-sequence/00009.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-memo-hash/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-memo-hash/00001.png | Bin 0 -> 921 bytes .../snapshots/sp-tx-memo-hash/00002.png | Bin 0 -> 519 bytes .../snapshots/sp-tx-memo-hash/00003.png | Bin 0 -> 385 bytes .../snapshots/sp-tx-memo-hash/00004.png | Bin 0 -> 503 bytes .../snapshots/sp-tx-memo-hash/00005.png | Bin 0 -> 523 bytes .../snapshots/sp-tx-memo-hash/00006.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-memo-hash/00007.png | Bin 0 -> 332 bytes .../snapshots/sp-tx-memo-hash/00008.png | Bin 0 -> 915 bytes .../snapshots/sp-tx-memo-hash/00009.png | Bin 0 -> 522 bytes .../snapshots/sp-tx-memo-hash/00010.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-memo-hash/00011.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-memo-hash/00012.png | Bin 0 -> 473 bytes tests_zemu/snapshots/sp-tx-memo-id/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/sp-tx-memo-id/00001.png | Bin 0 -> 517 bytes tests_zemu/snapshots/sp-tx-memo-id/00002.png | Bin 0 -> 385 bytes tests_zemu/snapshots/sp-tx-memo-id/00003.png | Bin 0 -> 503 bytes tests_zemu/snapshots/sp-tx-memo-id/00004.png | Bin 0 -> 523 bytes tests_zemu/snapshots/sp-tx-memo-id/00005.png | Bin 0 -> 472 bytes tests_zemu/snapshots/sp-tx-memo-id/00006.png | Bin 0 -> 332 bytes tests_zemu/snapshots/sp-tx-memo-id/00007.png | Bin 0 -> 915 bytes tests_zemu/snapshots/sp-tx-memo-id/00008.png | Bin 0 -> 522 bytes tests_zemu/snapshots/sp-tx-memo-id/00009.png | Bin 0 -> 469 bytes tests_zemu/snapshots/sp-tx-memo-id/00010.png | Bin 0 -> 451 bytes tests_zemu/snapshots/sp-tx-memo-id/00011.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-memo-none/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-memo-none/00001.png | Bin 0 -> 385 bytes .../snapshots/sp-tx-memo-none/00002.png | Bin 0 -> 503 bytes .../snapshots/sp-tx-memo-none/00003.png | Bin 0 -> 523 bytes .../snapshots/sp-tx-memo-none/00004.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-memo-none/00005.png | Bin 0 -> 332 bytes .../snapshots/sp-tx-memo-none/00006.png | Bin 0 -> 915 bytes .../snapshots/sp-tx-memo-none/00007.png | Bin 0 -> 522 bytes .../snapshots/sp-tx-memo-none/00008.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-memo-none/00009.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-memo-none/00010.png | Bin 0 -> 473 bytes .../sp-tx-memo-return-hash/00000.png | Bin 0 -> 419 bytes .../sp-tx-memo-return-hash/00001.png | Bin 0 -> 932 bytes .../sp-tx-memo-return-hash/00002.png | Bin 0 -> 527 bytes .../sp-tx-memo-return-hash/00003.png | Bin 0 -> 385 bytes .../sp-tx-memo-return-hash/00004.png | Bin 0 -> 503 bytes .../sp-tx-memo-return-hash/00005.png | Bin 0 -> 523 bytes .../sp-tx-memo-return-hash/00006.png | Bin 0 -> 472 bytes .../sp-tx-memo-return-hash/00007.png | Bin 0 -> 332 bytes .../sp-tx-memo-return-hash/00008.png | Bin 0 -> 915 bytes .../sp-tx-memo-return-hash/00009.png | Bin 0 -> 522 bytes .../sp-tx-memo-return-hash/00010.png | Bin 0 -> 469 bytes .../sp-tx-memo-return-hash/00011.png | Bin 0 -> 451 bytes .../sp-tx-memo-return-hash/00012.png | Bin 0 -> 473 bytes .../sp-tx-memo-text-unprintable/00000.png | Bin 0 -> 419 bytes .../sp-tx-memo-text-unprintable/00001.png | Bin 0 -> 576 bytes .../sp-tx-memo-text-unprintable/00002.png | Bin 0 -> 385 bytes .../sp-tx-memo-text-unprintable/00003.png | Bin 0 -> 503 bytes .../sp-tx-memo-text-unprintable/00004.png | Bin 0 -> 523 bytes .../sp-tx-memo-text-unprintable/00005.png | Bin 0 -> 472 bytes .../sp-tx-memo-text-unprintable/00006.png | Bin 0 -> 332 bytes .../sp-tx-memo-text-unprintable/00007.png | Bin 0 -> 915 bytes .../sp-tx-memo-text-unprintable/00008.png | Bin 0 -> 522 bytes .../sp-tx-memo-text-unprintable/00009.png | Bin 0 -> 469 bytes .../sp-tx-memo-text-unprintable/00010.png | Bin 0 -> 451 bytes .../sp-tx-memo-text-unprintable/00011.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-memo-text/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-memo-text/00001.png | Bin 0 -> 546 bytes .../snapshots/sp-tx-memo-text/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-tx-memo-text/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-tx-memo-text/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-tx-memo-text/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-memo-text/00006.png | Bin 0 -> 332 bytes .../snapshots/sp-tx-memo-text/00007.png | Bin 0 -> 915 bytes .../snapshots/sp-tx-memo-text/00008.png | Bin 0 -> 522 bytes .../snapshots/sp-tx-memo-text/00009.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-memo-text/00010.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-memo-text/00011.png | Bin 0 -> 473 bytes .../sp-tx-multi-operations/00000.png | Bin 0 -> 419 bytes .../sp-tx-multi-operations/00001.png | Bin 0 -> 405 bytes .../sp-tx-multi-operations/00002.png | Bin 0 -> 389 bytes .../sp-tx-multi-operations/00003.png | Bin 0 -> 503 bytes .../sp-tx-multi-operations/00004.png | Bin 0 -> 523 bytes .../sp-tx-multi-operations/00005.png | Bin 0 -> 472 bytes .../sp-tx-multi-operations/00006.png | Bin 0 -> 353 bytes .../sp-tx-multi-operations/00007.png | Bin 0 -> 531 bytes .../sp-tx-multi-operations/00008.png | Bin 0 -> 915 bytes .../sp-tx-multi-operations/00009.png | Bin 0 -> 522 bytes .../sp-tx-multi-operations/00010.png | Bin 0 -> 469 bytes .../sp-tx-multi-operations/00011.png | Bin 0 -> 360 bytes .../sp-tx-multi-operations/00012.png | Bin 0 -> 620 bytes .../sp-tx-multi-operations/00013.png | Bin 0 -> 915 bytes .../sp-tx-multi-operations/00014.png | Bin 0 -> 522 bytes .../sp-tx-multi-operations/00015.png | Bin 0 -> 469 bytes .../sp-tx-multi-operations/00016.png | Bin 0 -> 351 bytes .../sp-tx-multi-operations/00017.png | Bin 0 -> 484 bytes .../sp-tx-multi-operations/00018.png | Bin 0 -> 437 bytes .../sp-tx-multi-operations/00019.png | Bin 0 -> 451 bytes .../sp-tx-multi-operations/00020.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-network-custom/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-network-custom/00001.png | Bin 0 -> 387 bytes .../snapshots/sp-tx-network-custom/00002.png | Bin 0 -> 405 bytes .../snapshots/sp-tx-network-custom/00003.png | Bin 0 -> 413 bytes .../snapshots/sp-tx-network-custom/00004.png | Bin 0 -> 503 bytes .../snapshots/sp-tx-network-custom/00005.png | Bin 0 -> 523 bytes .../snapshots/sp-tx-network-custom/00006.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-network-custom/00007.png | Bin 0 -> 501 bytes .../snapshots/sp-tx-network-custom/00008.png | Bin 0 -> 435 bytes .../snapshots/sp-tx-network-custom/00009.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-network-custom/00010.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-network-custom/00011.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-network-public/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-network-public/00001.png | Bin 0 -> 405 bytes .../snapshots/sp-tx-network-public/00002.png | Bin 0 -> 385 bytes .../snapshots/sp-tx-network-public/00003.png | Bin 0 -> 503 bytes .../snapshots/sp-tx-network-public/00004.png | Bin 0 -> 523 bytes .../snapshots/sp-tx-network-public/00005.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-network-public/00006.png | Bin 0 -> 501 bytes .../snapshots/sp-tx-network-public/00007.png | Bin 0 -> 435 bytes .../snapshots/sp-tx-network-public/00008.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-network-public/00009.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-network-public/00010.png | Bin 0 -> 473 bytes .../snapshots/sp-tx-network-testnet/00000.png | Bin 0 -> 419 bytes .../snapshots/sp-tx-network-testnet/00001.png | Bin 0 -> 399 bytes .../snapshots/sp-tx-network-testnet/00002.png | Bin 0 -> 405 bytes .../snapshots/sp-tx-network-testnet/00003.png | Bin 0 -> 385 bytes .../snapshots/sp-tx-network-testnet/00004.png | Bin 0 -> 503 bytes .../snapshots/sp-tx-network-testnet/00005.png | Bin 0 -> 523 bytes .../snapshots/sp-tx-network-testnet/00006.png | Bin 0 -> 472 bytes .../snapshots/sp-tx-network-testnet/00007.png | Bin 0 -> 501 bytes .../snapshots/sp-tx-network-testnet/00008.png | Bin 0 -> 435 bytes .../snapshots/sp-tx-network-testnet/00009.png | Bin 0 -> 469 bytes .../snapshots/sp-tx-network-testnet/00010.png | Bin 0 -> 451 bytes .../snapshots/sp-tx-network-testnet/00011.png | Bin 0 -> 473 bytes tests_zemu/snapshots/sp-tx-reject/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/sp-tx-reject/00001.png | Bin 0 -> 405 bytes tests_zemu/snapshots/sp-tx-reject/00002.png | Bin 0 -> 385 bytes tests_zemu/snapshots/sp-tx-reject/00003.png | Bin 0 -> 503 bytes tests_zemu/snapshots/sp-tx-reject/00004.png | Bin 0 -> 523 bytes tests_zemu/snapshots/sp-tx-reject/00005.png | Bin 0 -> 472 bytes tests_zemu/snapshots/sp-tx-reject/00006.png | Bin 0 -> 501 bytes tests_zemu/snapshots/sp-tx-reject/00007.png | Bin 0 -> 435 bytes tests_zemu/snapshots/sp-tx-reject/00008.png | Bin 0 -> 469 bytes tests_zemu/snapshots/sp-tx-reject/00009.png | Bin 0 -> 451 bytes tests_zemu/snapshots/sp-tx-reject/00010.png | Bin 0 -> 347 bytes tests_zemu/snapshots/sp-tx-reject/00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 925 bytes .../00006.png | Bin 0 -> 592 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 925 bytes .../00010.png | Bin 0 -> 503 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 435 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 912 bytes .../00006.png | Bin 0 -> 497 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 908 bytes .../00010.png | Bin 0 -> 502 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../sp-tx-with-muxed-source/00000.png | Bin 0 -> 419 bytes .../sp-tx-with-muxed-source/00001.png | Bin 0 -> 405 bytes .../sp-tx-with-muxed-source/00002.png | Bin 0 -> 385 bytes .../sp-tx-with-muxed-source/00003.png | Bin 0 -> 503 bytes .../sp-tx-with-muxed-source/00004.png | Bin 0 -> 523 bytes .../sp-tx-with-muxed-source/00005.png | Bin 0 -> 925 bytes .../sp-tx-with-muxed-source/00006.png | Bin 0 -> 592 bytes .../sp-tx-with-muxed-source/00007.png | Bin 0 -> 332 bytes .../sp-tx-with-muxed-source/00008.png | Bin 0 -> 915 bytes .../sp-tx-with-muxed-source/00009.png | Bin 0 -> 522 bytes .../sp-tx-with-muxed-source/00010.png | Bin 0 -> 925 bytes .../sp-tx-with-muxed-source/00011.png | Bin 0 -> 503 bytes .../sp-tx-with-muxed-source/00012.png | Bin 0 -> 451 bytes .../sp-tx-with-muxed-source/00013.png | Bin 0 -> 473 bytes .../x-fee-bump-tx-hide-sequence/00000.png | Bin 0 -> 419 bytes .../x-fee-bump-tx-hide-sequence/00001.png | Bin 0 -> 463 bytes .../x-fee-bump-tx-hide-sequence/00002.png | Bin 0 -> 488 bytes .../x-fee-bump-tx-hide-sequence/00003.png | Bin 0 -> 420 bytes .../x-fee-bump-tx-hide-sequence/00004.png | Bin 0 -> 372 bytes .../x-fee-bump-tx-hide-sequence/00005.png | Bin 0 -> 405 bytes .../x-fee-bump-tx-hide-sequence/00006.png | Bin 0 -> 385 bytes .../x-fee-bump-tx-hide-sequence/00007.png | Bin 0 -> 523 bytes .../x-fee-bump-tx-hide-sequence/00008.png | Bin 0 -> 920 bytes .../x-fee-bump-tx-hide-sequence/00009.png | Bin 0 -> 497 bytes .../x-fee-bump-tx-hide-sequence/00010.png | Bin 0 -> 355 bytes .../x-fee-bump-tx-hide-sequence/00011.png | Bin 0 -> 332 bytes .../x-fee-bump-tx-hide-sequence/00012.png | Bin 0 -> 915 bytes .../x-fee-bump-tx-hide-sequence/00013.png | Bin 0 -> 522 bytes .../x-fee-bump-tx-hide-sequence/00014.png | Bin 0 -> 925 bytes .../x-fee-bump-tx-hide-sequence/00015.png | Bin 0 -> 503 bytes .../x-fee-bump-tx-hide-sequence/00016.png | Bin 0 -> 359 bytes .../x-fee-bump-tx-hide-sequence/00017.png | Bin 0 -> 332 bytes .../x-fee-bump-tx-hide-sequence/00018.png | Bin 0 -> 944 bytes .../x-fee-bump-tx-hide-sequence/00019.png | Bin 0 -> 519 bytes .../x-fee-bump-tx-hide-sequence/00020.png | Bin 0 -> 925 bytes .../x-fee-bump-tx-hide-sequence/00021.png | Bin 0 -> 503 bytes .../x-fee-bump-tx-hide-sequence/00022.png | Bin 0 -> 451 bytes .../x-fee-bump-tx-hide-sequence/00023.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 488 bytes .../00003.png | Bin 0 -> 401 bytes .../00004.png | Bin 0 -> 372 bytes .../00005.png | Bin 0 -> 405 bytes .../00006.png | Bin 0 -> 384 bytes .../00007.png | Bin 0 -> 503 bytes .../00008.png | Bin 0 -> 523 bytes .../00009.png | Bin 0 -> 920 bytes .../00010.png | Bin 0 -> 497 bytes .../00011.png | Bin 0 -> 501 bytes .../00012.png | Bin 0 -> 435 bytes .../00013.png | Bin 0 -> 925 bytes .../00014.png | Bin 0 -> 503 bytes .../00015.png | Bin 0 -> 451 bytes .../00016.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 920 bytes .../00003.png | Bin 0 -> 514 bytes .../00004.png | Bin 0 -> 401 bytes .../00005.png | Bin 0 -> 372 bytes .../00006.png | Bin 0 -> 405 bytes .../00007.png | Bin 0 -> 384 bytes .../00008.png | Bin 0 -> 503 bytes .../00009.png | Bin 0 -> 523 bytes .../00010.png | Bin 0 -> 920 bytes .../00011.png | Bin 0 -> 497 bytes .../00012.png | Bin 0 -> 501 bytes .../00013.png | Bin 0 -> 435 bytes .../00014.png | Bin 0 -> 925 bytes .../00015.png | Bin 0 -> 503 bytes .../00016.png | Bin 0 -> 451 bytes .../00017.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 933 bytes .../00003.png | Bin 0 -> 614 bytes .../00004.png | Bin 0 -> 401 bytes .../00005.png | Bin 0 -> 372 bytes .../00006.png | Bin 0 -> 405 bytes .../00007.png | Bin 0 -> 384 bytes .../00008.png | Bin 0 -> 503 bytes .../00009.png | Bin 0 -> 523 bytes .../00010.png | Bin 0 -> 920 bytes .../00011.png | Bin 0 -> 497 bytes .../00012.png | Bin 0 -> 501 bytes .../00013.png | Bin 0 -> 435 bytes .../00014.png | Bin 0 -> 925 bytes .../00015.png | Bin 0 -> 503 bytes .../00016.png | Bin 0 -> 451 bytes .../00017.png | Bin 0 -> 473 bytes .../snapshots/x-fee-bump-tx-reject/00000.png | Bin 0 -> 419 bytes .../snapshots/x-fee-bump-tx-reject/00001.png | Bin 0 -> 463 bytes .../snapshots/x-fee-bump-tx-reject/00002.png | Bin 0 -> 488 bytes .../snapshots/x-fee-bump-tx-reject/00003.png | Bin 0 -> 420 bytes .../snapshots/x-fee-bump-tx-reject/00004.png | Bin 0 -> 372 bytes .../snapshots/x-fee-bump-tx-reject/00005.png | Bin 0 -> 405 bytes .../snapshots/x-fee-bump-tx-reject/00006.png | Bin 0 -> 385 bytes .../snapshots/x-fee-bump-tx-reject/00007.png | Bin 0 -> 503 bytes .../snapshots/x-fee-bump-tx-reject/00008.png | Bin 0 -> 523 bytes .../snapshots/x-fee-bump-tx-reject/00009.png | Bin 0 -> 920 bytes .../snapshots/x-fee-bump-tx-reject/00010.png | Bin 0 -> 497 bytes .../snapshots/x-fee-bump-tx-reject/00011.png | Bin 0 -> 355 bytes .../snapshots/x-fee-bump-tx-reject/00012.png | Bin 0 -> 332 bytes .../snapshots/x-fee-bump-tx-reject/00013.png | Bin 0 -> 915 bytes .../snapshots/x-fee-bump-tx-reject/00014.png | Bin 0 -> 522 bytes .../snapshots/x-fee-bump-tx-reject/00015.png | Bin 0 -> 925 bytes .../snapshots/x-fee-bump-tx-reject/00016.png | Bin 0 -> 503 bytes .../snapshots/x-fee-bump-tx-reject/00017.png | Bin 0 -> 359 bytes .../snapshots/x-fee-bump-tx-reject/00018.png | Bin 0 -> 332 bytes .../snapshots/x-fee-bump-tx-reject/00019.png | Bin 0 -> 944 bytes .../snapshots/x-fee-bump-tx-reject/00020.png | Bin 0 -> 519 bytes .../snapshots/x-fee-bump-tx-reject/00021.png | Bin 0 -> 925 bytes .../snapshots/x-fee-bump-tx-reject/00022.png | Bin 0 -> 503 bytes .../snapshots/x-fee-bump-tx-reject/00023.png | Bin 0 -> 451 bytes .../snapshots/x-fee-bump-tx-reject/00024.png | Bin 0 -> 347 bytes .../snapshots/x-fee-bump-tx-reject/00025.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 933 bytes .../00003.png | Bin 0 -> 614 bytes .../00004.png | Bin 0 -> 420 bytes .../00005.png | Bin 0 -> 372 bytes .../00006.png | Bin 0 -> 405 bytes .../00007.png | Bin 0 -> 385 bytes .../00008.png | Bin 0 -> 503 bytes .../00009.png | Bin 0 -> 523 bytes .../00010.png | Bin 0 -> 920 bytes .../00011.png | Bin 0 -> 497 bytes .../00012.png | Bin 0 -> 355 bytes .../00013.png | Bin 0 -> 332 bytes .../00014.png | Bin 0 -> 915 bytes .../00015.png | Bin 0 -> 522 bytes .../00016.png | Bin 0 -> 925 bytes .../00017.png | Bin 0 -> 503 bytes .../00018.png | Bin 0 -> 359 bytes .../00019.png | Bin 0 -> 332 bytes .../00020.png | Bin 0 -> 944 bytes .../00021.png | Bin 0 -> 519 bytes .../00022.png | Bin 0 -> 925 bytes .../00023.png | Bin 0 -> 503 bytes .../00024.png | Bin 0 -> 451 bytes .../00025.png | Bin 0 -> 473 bytes tests_zemu/snapshots/x-fee-bump-tx/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/x-fee-bump-tx/00001.png | Bin 0 -> 463 bytes tests_zemu/snapshots/x-fee-bump-tx/00002.png | Bin 0 -> 488 bytes tests_zemu/snapshots/x-fee-bump-tx/00003.png | Bin 0 -> 420 bytes tests_zemu/snapshots/x-fee-bump-tx/00004.png | Bin 0 -> 372 bytes tests_zemu/snapshots/x-fee-bump-tx/00005.png | Bin 0 -> 405 bytes tests_zemu/snapshots/x-fee-bump-tx/00006.png | Bin 0 -> 385 bytes tests_zemu/snapshots/x-fee-bump-tx/00007.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-fee-bump-tx/00008.png | Bin 0 -> 523 bytes tests_zemu/snapshots/x-fee-bump-tx/00009.png | Bin 0 -> 920 bytes tests_zemu/snapshots/x-fee-bump-tx/00010.png | Bin 0 -> 497 bytes tests_zemu/snapshots/x-fee-bump-tx/00011.png | Bin 0 -> 355 bytes tests_zemu/snapshots/x-fee-bump-tx/00012.png | Bin 0 -> 332 bytes tests_zemu/snapshots/x-fee-bump-tx/00013.png | Bin 0 -> 915 bytes tests_zemu/snapshots/x-fee-bump-tx/00014.png | Bin 0 -> 522 bytes tests_zemu/snapshots/x-fee-bump-tx/00015.png | Bin 0 -> 925 bytes tests_zemu/snapshots/x-fee-bump-tx/00016.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-fee-bump-tx/00017.png | Bin 0 -> 359 bytes tests_zemu/snapshots/x-fee-bump-tx/00018.png | Bin 0 -> 332 bytes tests_zemu/snapshots/x-fee-bump-tx/00019.png | Bin 0 -> 944 bytes tests_zemu/snapshots/x-fee-bump-tx/00020.png | Bin 0 -> 519 bytes tests_zemu/snapshots/x-fee-bump-tx/00021.png | Bin 0 -> 925 bytes tests_zemu/snapshots/x-fee-bump-tx/00022.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-fee-bump-tx/00023.png | Bin 0 -> 451 bytes tests_zemu/snapshots/x-fee-bump-tx/00024.png | Bin 0 -> 473 bytes .../x-hash-signing-approve/00000.png | Bin 0 -> 419 bytes .../x-hash-signing-approve/00001.png | Bin 0 -> 459 bytes .../x-hash-signing-approve/00002.png | Bin 0 -> 895 bytes .../x-hash-signing-approve/00003.png | Bin 0 -> 478 bytes .../x-hash-signing-approve/00004.png | Bin 0 -> 871 bytes .../x-hash-signing-approve/00005.png | Bin 0 -> 440 bytes .../x-hash-signing-approve/00006.png | Bin 0 -> 364 bytes .../x-hash-signing-approve/00007.png | Bin 0 -> 473 bytes .../snapshots/x-hash-signing-reject/00000.png | Bin 0 -> 419 bytes .../snapshots/x-hash-signing-reject/00001.png | Bin 0 -> 459 bytes .../snapshots/x-hash-signing-reject/00002.png | Bin 0 -> 895 bytes .../snapshots/x-hash-signing-reject/00003.png | Bin 0 -> 478 bytes .../snapshots/x-hash-signing-reject/00004.png | Bin 0 -> 871 bytes .../snapshots/x-hash-signing-reject/00005.png | Bin 0 -> 440 bytes .../snapshots/x-hash-signing-reject/00006.png | Bin 0 -> 364 bytes .../snapshots/x-hash-signing-reject/00007.png | Bin 0 -> 365 bytes .../snapshots/x-hash-signing-reject/00008.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 951 bytes .../00008.png | Bin 0 -> 543 bytes .../00009.png | Bin 0 -> 920 bytes .../00010.png | Bin 0 -> 623 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../snapshots/x-op-account-merge/00000.png | Bin 0 -> 419 bytes .../snapshots/x-op-account-merge/00001.png | Bin 0 -> 405 bytes .../snapshots/x-op-account-merge/00002.png | Bin 0 -> 385 bytes .../snapshots/x-op-account-merge/00003.png | Bin 0 -> 503 bytes .../snapshots/x-op-account-merge/00004.png | Bin 0 -> 523 bytes .../snapshots/x-op-account-merge/00005.png | Bin 0 -> 472 bytes .../snapshots/x-op-account-merge/00006.png | Bin 0 -> 501 bytes .../snapshots/x-op-account-merge/00007.png | Bin 0 -> 951 bytes .../snapshots/x-op-account-merge/00008.png | Bin 0 -> 543 bytes .../snapshots/x-op-account-merge/00009.png | Bin 0 -> 915 bytes .../snapshots/x-op-account-merge/00010.png | Bin 0 -> 522 bytes .../snapshots/x-op-account-merge/00011.png | Bin 0 -> 469 bytes .../snapshots/x-op-account-merge/00012.png | Bin 0 -> 451 bytes .../snapshots/x-op-account-merge/00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 474 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 390 bytes .../00010.png | Bin 0 -> 741 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../x-op-allow-trust-authorize/00000.png | Bin 0 -> 419 bytes .../x-op-allow-trust-authorize/00001.png | Bin 0 -> 405 bytes .../x-op-allow-trust-authorize/00002.png | Bin 0 -> 385 bytes .../x-op-allow-trust-authorize/00003.png | Bin 0 -> 503 bytes .../x-op-allow-trust-authorize/00004.png | Bin 0 -> 523 bytes .../x-op-allow-trust-authorize/00005.png | Bin 0 -> 472 bytes .../x-op-allow-trust-authorize/00006.png | Bin 0 -> 474 bytes .../x-op-allow-trust-authorize/00007.png | Bin 0 -> 875 bytes .../x-op-allow-trust-authorize/00008.png | Bin 0 -> 483 bytes .../x-op-allow-trust-authorize/00009.png | Bin 0 -> 390 bytes .../x-op-allow-trust-authorize/00010.png | Bin 0 -> 496 bytes .../x-op-allow-trust-authorize/00011.png | Bin 0 -> 469 bytes .../x-op-allow-trust-authorize/00012.png | Bin 0 -> 451 bytes .../x-op-allow-trust-authorize/00013.png | Bin 0 -> 473 bytes .../x-op-allow-trust-deauthorize/00000.png | Bin 0 -> 419 bytes .../x-op-allow-trust-deauthorize/00001.png | Bin 0 -> 405 bytes .../x-op-allow-trust-deauthorize/00002.png | Bin 0 -> 385 bytes .../x-op-allow-trust-deauthorize/00003.png | Bin 0 -> 503 bytes .../x-op-allow-trust-deauthorize/00004.png | Bin 0 -> 523 bytes .../x-op-allow-trust-deauthorize/00005.png | Bin 0 -> 472 bytes .../x-op-allow-trust-deauthorize/00006.png | Bin 0 -> 474 bytes .../x-op-allow-trust-deauthorize/00007.png | Bin 0 -> 875 bytes .../x-op-allow-trust-deauthorize/00008.png | Bin 0 -> 483 bytes .../x-op-allow-trust-deauthorize/00009.png | Bin 0 -> 390 bytes .../x-op-allow-trust-deauthorize/00010.png | Bin 0 -> 515 bytes .../x-op-allow-trust-deauthorize/00011.png | Bin 0 -> 469 bytes .../x-op-allow-trust-deauthorize/00012.png | Bin 0 -> 451 bytes .../x-op-allow-trust-deauthorize/00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 667 bytes .../00007.png | Bin 0 -> 930 bytes .../00008.png | Bin 0 -> 517 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../snapshots/x-op-bump-sequence/00000.png | Bin 0 -> 419 bytes .../snapshots/x-op-bump-sequence/00001.png | Bin 0 -> 405 bytes .../snapshots/x-op-bump-sequence/00002.png | Bin 0 -> 385 bytes .../snapshots/x-op-bump-sequence/00003.png | Bin 0 -> 503 bytes .../snapshots/x-op-bump-sequence/00004.png | Bin 0 -> 523 bytes .../snapshots/x-op-bump-sequence/00005.png | Bin 0 -> 472 bytes .../snapshots/x-op-bump-sequence/00006.png | Bin 0 -> 501 bytes .../snapshots/x-op-bump-sequence/00007.png | Bin 0 -> 487 bytes .../snapshots/x-op-bump-sequence/00008.png | Bin 0 -> 469 bytes .../snapshots/x-op-bump-sequence/00009.png | Bin 0 -> 451 bytes .../snapshots/x-op-bump-sequence/00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 533 bytes .../00007.png | Bin 0 -> 494 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 535 bytes .../00007.png | Bin 0 -> 469 bytes .../00008.png | Bin 0 -> 451 bytes .../00009.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 533 bytes .../00007.png | Bin 0 -> 451 bytes .../00008.png | Bin 0 -> 492 bytes .../00009.png | Bin 0 -> 417 bytes .../00010.png | Bin 0 -> 494 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 529 bytes .../00007.png | Bin 0 -> 451 bytes .../00008.png | Bin 0 -> 492 bytes .../00009.png | Bin 0 -> 417 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../x-op-claim-claimable-balance/00000.png | Bin 0 -> 419 bytes .../x-op-claim-claimable-balance/00001.png | Bin 0 -> 405 bytes .../x-op-claim-claimable-balance/00002.png | Bin 0 -> 385 bytes .../x-op-claim-claimable-balance/00003.png | Bin 0 -> 503 bytes .../x-op-claim-claimable-balance/00004.png | Bin 0 -> 523 bytes .../x-op-claim-claimable-balance/00005.png | Bin 0 -> 472 bytes .../x-op-claim-claimable-balance/00006.png | Bin 0 -> 573 bytes .../x-op-claim-claimable-balance/00007.png | Bin 0 -> 540 bytes .../x-op-claim-claimable-balance/00008.png | Bin 0 -> 469 bytes .../x-op-claim-claimable-balance/00009.png | Bin 0 -> 451 bytes .../x-op-claim-claimable-balance/00010.png | Bin 0 -> 473 bytes .../x-op-clawback-claimable-balance/00000.png | Bin 0 -> 419 bytes .../x-op-clawback-claimable-balance/00001.png | Bin 0 -> 405 bytes .../x-op-clawback-claimable-balance/00002.png | Bin 0 -> 385 bytes .../x-op-clawback-claimable-balance/00003.png | Bin 0 -> 503 bytes .../x-op-clawback-claimable-balance/00004.png | Bin 0 -> 523 bytes .../x-op-clawback-claimable-balance/00005.png | Bin 0 -> 472 bytes .../x-op-clawback-claimable-balance/00006.png | Bin 0 -> 619 bytes .../x-op-clawback-claimable-balance/00007.png | Bin 0 -> 842 bytes .../x-op-clawback-claimable-balance/00008.png | Bin 0 -> 581 bytes .../x-op-clawback-claimable-balance/00009.png | Bin 0 -> 469 bytes .../x-op-clawback-claimable-balance/00010.png | Bin 0 -> 451 bytes .../x-op-clawback-claimable-balance/00011.png | Bin 0 -> 473 bytes .../x-op-clawback-with-muxed-from/00000.png | Bin 0 -> 419 bytes .../x-op-clawback-with-muxed-from/00001.png | Bin 0 -> 405 bytes .../x-op-clawback-with-muxed-from/00002.png | Bin 0 -> 385 bytes .../x-op-clawback-with-muxed-from/00003.png | Bin 0 -> 503 bytes .../x-op-clawback-with-muxed-from/00004.png | Bin 0 -> 523 bytes .../x-op-clawback-with-muxed-from/00005.png | Bin 0 -> 472 bytes .../x-op-clawback-with-muxed-from/00006.png | Bin 0 -> 471 bytes .../x-op-clawback-with-muxed-from/00007.png | Bin 0 -> 650 bytes .../x-op-clawback-with-muxed-from/00008.png | Bin 0 -> 845 bytes .../x-op-clawback-with-muxed-from/00009.png | Bin 0 -> 547 bytes .../x-op-clawback-with-muxed-from/00010.png | Bin 0 -> 469 bytes .../x-op-clawback-with-muxed-from/00011.png | Bin 0 -> 451 bytes .../x-op-clawback-with-muxed-from/00012.png | Bin 0 -> 473 bytes tests_zemu/snapshots/x-op-clawback/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/x-op-clawback/00001.png | Bin 0 -> 405 bytes tests_zemu/snapshots/x-op-clawback/00002.png | Bin 0 -> 385 bytes tests_zemu/snapshots/x-op-clawback/00003.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-op-clawback/00004.png | Bin 0 -> 523 bytes tests_zemu/snapshots/x-op-clawback/00005.png | Bin 0 -> 472 bytes tests_zemu/snapshots/x-op-clawback/00006.png | Bin 0 -> 471 bytes tests_zemu/snapshots/x-op-clawback/00007.png | Bin 0 -> 650 bytes tests_zemu/snapshots/x-op-clawback/00008.png | Bin 0 -> 843 bytes tests_zemu/snapshots/x-op-clawback/00009.png | Bin 0 -> 443 bytes tests_zemu/snapshots/x-op-clawback/00010.png | Bin 0 -> 469 bytes tests_zemu/snapshots/x-op-clawback/00011.png | Bin 0 -> 451 bytes tests_zemu/snapshots/x-op-clawback/00012.png | Bin 0 -> 473 bytes .../snapshots/x-op-create-account/00000.png | Bin 0 -> 419 bytes .../snapshots/x-op-create-account/00001.png | Bin 0 -> 405 bytes .../snapshots/x-op-create-account/00002.png | Bin 0 -> 385 bytes .../snapshots/x-op-create-account/00003.png | Bin 0 -> 503 bytes .../snapshots/x-op-create-account/00004.png | Bin 0 -> 523 bytes .../snapshots/x-op-create-account/00005.png | Bin 0 -> 472 bytes .../snapshots/x-op-create-account/00006.png | Bin 0 -> 503 bytes .../snapshots/x-op-create-account/00007.png | Bin 0 -> 915 bytes .../snapshots/x-op-create-account/00008.png | Bin 0 -> 522 bytes .../snapshots/x-op-create-account/00009.png | Bin 0 -> 467 bytes .../snapshots/x-op-create-account/00010.png | Bin 0 -> 469 bytes .../snapshots/x-op-create-account/00011.png | Bin 0 -> 451 bytes .../snapshots/x-op-create-account/00012.png | Bin 0 -> 473 bytes .../x-op-create-claimable-balance/00000.png | Bin 0 -> 419 bytes .../x-op-create-claimable-balance/00001.png | Bin 0 -> 405 bytes .../x-op-create-claimable-balance/00002.png | Bin 0 -> 385 bytes .../x-op-create-claimable-balance/00003.png | Bin 0 -> 503 bytes .../x-op-create-claimable-balance/00004.png | Bin 0 -> 523 bytes .../x-op-create-claimable-balance/00005.png | Bin 0 -> 472 bytes .../x-op-create-claimable-balance/00006.png | Bin 0 -> 586 bytes .../x-op-create-claimable-balance/00007.png | Bin 0 -> 521 bytes .../x-op-create-claimable-balance/00008.png | Bin 0 -> 739 bytes .../x-op-create-claimable-balance/00009.png | Bin 0 -> 469 bytes .../x-op-create-claimable-balance/00010.png | Bin 0 -> 451 bytes .../x-op-create-claimable-balance/00011.png | Bin 0 -> 473 bytes .../x-op-create-passive-sell-offer/00000.png | Bin 0 -> 419 bytes .../x-op-create-passive-sell-offer/00001.png | Bin 0 -> 405 bytes .../x-op-create-passive-sell-offer/00002.png | Bin 0 -> 385 bytes .../x-op-create-passive-sell-offer/00003.png | Bin 0 -> 503 bytes .../x-op-create-passive-sell-offer/00004.png | Bin 0 -> 523 bytes .../x-op-create-passive-sell-offer/00005.png | Bin 0 -> 472 bytes .../x-op-create-passive-sell-offer/00006.png | Bin 0 -> 605 bytes .../x-op-create-passive-sell-offer/00007.png | Bin 0 -> 308 bytes .../x-op-create-passive-sell-offer/00008.png | Bin 0 -> 598 bytes .../x-op-create-passive-sell-offer/00009.png | Bin 0 -> 444 bytes .../x-op-create-passive-sell-offer/00010.png | Bin 0 -> 469 bytes .../x-op-create-passive-sell-offer/00011.png | Bin 0 -> 451 bytes .../x-op-create-passive-sell-offer/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 643 bytes .../00007.png | Bin 0 -> 469 bytes .../00008.png | Bin 0 -> 451 bytes .../00009.png | Bin 0 -> 473 bytes tests_zemu/snapshots/x-op-inflation/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/x-op-inflation/00001.png | Bin 0 -> 405 bytes tests_zemu/snapshots/x-op-inflation/00002.png | Bin 0 -> 385 bytes tests_zemu/snapshots/x-op-inflation/00003.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-op-inflation/00004.png | Bin 0 -> 523 bytes tests_zemu/snapshots/x-op-inflation/00005.png | Bin 0 -> 472 bytes tests_zemu/snapshots/x-op-inflation/00006.png | Bin 0 -> 447 bytes tests_zemu/snapshots/x-op-inflation/00007.png | Bin 0 -> 469 bytes tests_zemu/snapshots/x-op-inflation/00008.png | Bin 0 -> 451 bytes tests_zemu/snapshots/x-op-inflation/00009.png | Bin 0 -> 473 bytes .../x-op-liquidity-pool-deposit/00000.png | Bin 0 -> 419 bytes .../x-op-liquidity-pool-deposit/00001.png | Bin 0 -> 405 bytes .../x-op-liquidity-pool-deposit/00002.png | Bin 0 -> 385 bytes .../x-op-liquidity-pool-deposit/00003.png | Bin 0 -> 503 bytes .../x-op-liquidity-pool-deposit/00004.png | Bin 0 -> 523 bytes .../x-op-liquidity-pool-deposit/00005.png | Bin 0 -> 472 bytes .../x-op-liquidity-pool-deposit/00006.png | Bin 0 -> 577 bytes .../x-op-liquidity-pool-deposit/00007.png | Bin 0 -> 925 bytes .../x-op-liquidity-pool-deposit/00008.png | Bin 0 -> 517 bytes .../x-op-liquidity-pool-deposit/00009.png | Bin 0 -> 401 bytes .../x-op-liquidity-pool-deposit/00010.png | Bin 0 -> 426 bytes .../x-op-liquidity-pool-deposit/00011.png | Bin 0 -> 436 bytes .../x-op-liquidity-pool-deposit/00012.png | Bin 0 -> 370 bytes .../x-op-liquidity-pool-deposit/00013.png | Bin 0 -> 469 bytes .../x-op-liquidity-pool-deposit/00014.png | Bin 0 -> 451 bytes .../x-op-liquidity-pool-deposit/00015.png | Bin 0 -> 473 bytes .../x-op-liquidity-pool-withdraw/00000.png | Bin 0 -> 419 bytes .../x-op-liquidity-pool-withdraw/00001.png | Bin 0 -> 405 bytes .../x-op-liquidity-pool-withdraw/00002.png | Bin 0 -> 385 bytes .../x-op-liquidity-pool-withdraw/00003.png | Bin 0 -> 503 bytes .../x-op-liquidity-pool-withdraw/00004.png | Bin 0 -> 523 bytes .../x-op-liquidity-pool-withdraw/00005.png | Bin 0 -> 472 bytes .../x-op-liquidity-pool-withdraw/00006.png | Bin 0 -> 583 bytes .../x-op-liquidity-pool-withdraw/00007.png | Bin 0 -> 925 bytes .../x-op-liquidity-pool-withdraw/00008.png | Bin 0 -> 517 bytes .../x-op-liquidity-pool-withdraw/00009.png | Bin 0 -> 347 bytes .../x-op-liquidity-pool-withdraw/00010.png | Bin 0 -> 377 bytes .../x-op-liquidity-pool-withdraw/00011.png | Bin 0 -> 387 bytes .../x-op-liquidity-pool-withdraw/00012.png | Bin 0 -> 469 bytes .../x-op-liquidity-pool-withdraw/00013.png | Bin 0 -> 451 bytes .../x-op-liquidity-pool-withdraw/00014.png | Bin 0 -> 473 bytes .../x-op-manage-buy-offer-create/00000.png | Bin 0 -> 419 bytes .../x-op-manage-buy-offer-create/00001.png | Bin 0 -> 405 bytes .../x-op-manage-buy-offer-create/00002.png | Bin 0 -> 385 bytes .../x-op-manage-buy-offer-create/00003.png | Bin 0 -> 503 bytes .../x-op-manage-buy-offer-create/00004.png | Bin 0 -> 523 bytes .../x-op-manage-buy-offer-create/00005.png | Bin 0 -> 472 bytes .../x-op-manage-buy-offer-create/00006.png | Bin 0 -> 461 bytes .../x-op-manage-buy-offer-create/00007.png | Bin 0 -> 422 bytes .../x-op-manage-buy-offer-create/00008.png | Bin 0 -> 467 bytes .../x-op-manage-buy-offer-create/00009.png | Bin 0 -> 420 bytes .../x-op-manage-buy-offer-create/00010.png | Bin 0 -> 469 bytes .../x-op-manage-buy-offer-create/00011.png | Bin 0 -> 451 bytes .../x-op-manage-buy-offer-create/00012.png | Bin 0 -> 473 bytes .../x-op-manage-buy-offer-delete/00000.png | Bin 0 -> 419 bytes .../x-op-manage-buy-offer-delete/00001.png | Bin 0 -> 405 bytes .../x-op-manage-buy-offer-delete/00002.png | Bin 0 -> 385 bytes .../x-op-manage-buy-offer-delete/00003.png | Bin 0 -> 503 bytes .../x-op-manage-buy-offer-delete/00004.png | Bin 0 -> 523 bytes .../x-op-manage-buy-offer-delete/00005.png | Bin 0 -> 472 bytes .../x-op-manage-buy-offer-delete/00006.png | Bin 0 -> 449 bytes .../x-op-manage-buy-offer-delete/00007.png | Bin 0 -> 469 bytes .../x-op-manage-buy-offer-delete/00008.png | Bin 0 -> 451 bytes .../x-op-manage-buy-offer-delete/00009.png | Bin 0 -> 473 bytes .../x-op-manage-buy-offer-update/00000.png | Bin 0 -> 419 bytes .../x-op-manage-buy-offer-update/00001.png | Bin 0 -> 405 bytes .../x-op-manage-buy-offer-update/00002.png | Bin 0 -> 385 bytes .../x-op-manage-buy-offer-update/00003.png | Bin 0 -> 503 bytes .../x-op-manage-buy-offer-update/00004.png | Bin 0 -> 523 bytes .../x-op-manage-buy-offer-update/00005.png | Bin 0 -> 472 bytes .../x-op-manage-buy-offer-update/00006.png | Bin 0 -> 455 bytes .../x-op-manage-buy-offer-update/00007.png | Bin 0 -> 422 bytes .../x-op-manage-buy-offer-update/00008.png | Bin 0 -> 467 bytes .../x-op-manage-buy-offer-update/00009.png | Bin 0 -> 420 bytes .../x-op-manage-buy-offer-update/00010.png | Bin 0 -> 469 bytes .../x-op-manage-buy-offer-update/00011.png | Bin 0 -> 451 bytes .../x-op-manage-buy-offer-update/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 666 bytes .../00007.png | Bin 0 -> 451 bytes .../00008.png | Bin 0 -> 560 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../snapshots/x-op-manage-data-add/00000.png | Bin 0 -> 419 bytes .../snapshots/x-op-manage-data-add/00001.png | Bin 0 -> 405 bytes .../snapshots/x-op-manage-data-add/00002.png | Bin 0 -> 385 bytes .../snapshots/x-op-manage-data-add/00003.png | Bin 0 -> 503 bytes .../snapshots/x-op-manage-data-add/00004.png | Bin 0 -> 523 bytes .../snapshots/x-op-manage-data-add/00005.png | Bin 0 -> 472 bytes .../snapshots/x-op-manage-data-add/00006.png | Bin 0 -> 666 bytes .../snapshots/x-op-manage-data-add/00007.png | Bin 0 -> 451 bytes .../snapshots/x-op-manage-data-add/00008.png | Bin 0 -> 613 bytes .../snapshots/x-op-manage-data-add/00009.png | Bin 0 -> 445 bytes .../snapshots/x-op-manage-data-add/00010.png | Bin 0 -> 469 bytes .../snapshots/x-op-manage-data-add/00011.png | Bin 0 -> 451 bytes .../snapshots/x-op-manage-data-add/00012.png | Bin 0 -> 473 bytes .../x-op-manage-data-remove/00000.png | Bin 0 -> 419 bytes .../x-op-manage-data-remove/00001.png | Bin 0 -> 405 bytes .../x-op-manage-data-remove/00002.png | Bin 0 -> 385 bytes .../x-op-manage-data-remove/00003.png | Bin 0 -> 503 bytes .../x-op-manage-data-remove/00004.png | Bin 0 -> 523 bytes .../x-op-manage-data-remove/00005.png | Bin 0 -> 472 bytes .../x-op-manage-data-remove/00006.png | Bin 0 -> 702 bytes .../x-op-manage-data-remove/00007.png | Bin 0 -> 482 bytes .../x-op-manage-data-remove/00008.png | Bin 0 -> 469 bytes .../x-op-manage-data-remove/00009.png | Bin 0 -> 451 bytes .../x-op-manage-data-remove/00010.png | Bin 0 -> 473 bytes .../x-op-manage-sell-offer-create/00000.png | Bin 0 -> 419 bytes .../x-op-manage-sell-offer-create/00001.png | Bin 0 -> 405 bytes .../x-op-manage-sell-offer-create/00002.png | Bin 0 -> 385 bytes .../x-op-manage-sell-offer-create/00003.png | Bin 0 -> 503 bytes .../x-op-manage-sell-offer-create/00004.png | Bin 0 -> 523 bytes .../x-op-manage-sell-offer-create/00005.png | Bin 0 -> 472 bytes .../x-op-manage-sell-offer-create/00006.png | Bin 0 -> 461 bytes .../x-op-manage-sell-offer-create/00007.png | Bin 0 -> 308 bytes .../x-op-manage-sell-offer-create/00008.png | Bin 0 -> 598 bytes .../x-op-manage-sell-offer-create/00009.png | Bin 0 -> 444 bytes .../x-op-manage-sell-offer-create/00010.png | Bin 0 -> 469 bytes .../x-op-manage-sell-offer-create/00011.png | Bin 0 -> 451 bytes .../x-op-manage-sell-offer-create/00012.png | Bin 0 -> 473 bytes .../x-op-manage-sell-offer-delete/00000.png | Bin 0 -> 419 bytes .../x-op-manage-sell-offer-delete/00001.png | Bin 0 -> 405 bytes .../x-op-manage-sell-offer-delete/00002.png | Bin 0 -> 385 bytes .../x-op-manage-sell-offer-delete/00003.png | Bin 0 -> 503 bytes .../x-op-manage-sell-offer-delete/00004.png | Bin 0 -> 523 bytes .../x-op-manage-sell-offer-delete/00005.png | Bin 0 -> 472 bytes .../x-op-manage-sell-offer-delete/00006.png | Bin 0 -> 451 bytes .../x-op-manage-sell-offer-delete/00007.png | Bin 0 -> 469 bytes .../x-op-manage-sell-offer-delete/00008.png | Bin 0 -> 451 bytes .../x-op-manage-sell-offer-delete/00009.png | Bin 0 -> 473 bytes .../x-op-manage-sell-offer-update/00000.png | Bin 0 -> 419 bytes .../x-op-manage-sell-offer-update/00001.png | Bin 0 -> 405 bytes .../x-op-manage-sell-offer-update/00002.png | Bin 0 -> 385 bytes .../x-op-manage-sell-offer-update/00003.png | Bin 0 -> 503 bytes .../x-op-manage-sell-offer-update/00004.png | Bin 0 -> 523 bytes .../x-op-manage-sell-offer-update/00005.png | Bin 0 -> 472 bytes .../x-op-manage-sell-offer-update/00006.png | Bin 0 -> 450 bytes .../x-op-manage-sell-offer-update/00007.png | Bin 0 -> 308 bytes .../x-op-manage-sell-offer-update/00008.png | Bin 0 -> 598 bytes .../x-op-manage-sell-offer-update/00009.png | Bin 0 -> 444 bytes .../x-op-manage-sell-offer-update/00010.png | Bin 0 -> 469 bytes .../x-op-manage-sell-offer-update/00011.png | Bin 0 -> 451 bytes .../x-op-manage-sell-offer-update/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 482 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 504 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 482 bytes .../00007.png | Bin 0 -> 920 bytes .../00008.png | Bin 0 -> 623 bytes .../00009.png | Bin 0 -> 504 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 482 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 504 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 500 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 516 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 500 bytes .../00007.png | Bin 0 -> 920 bytes .../00008.png | Bin 0 -> 623 bytes .../00009.png | Bin 0 -> 516 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../x-op-path-payment-strict-send/00000.png | Bin 0 -> 419 bytes .../x-op-path-payment-strict-send/00001.png | Bin 0 -> 405 bytes .../x-op-path-payment-strict-send/00002.png | Bin 0 -> 385 bytes .../x-op-path-payment-strict-send/00003.png | Bin 0 -> 503 bytes .../x-op-path-payment-strict-send/00004.png | Bin 0 -> 523 bytes .../x-op-path-payment-strict-send/00005.png | Bin 0 -> 472 bytes .../x-op-path-payment-strict-send/00006.png | Bin 0 -> 500 bytes .../x-op-path-payment-strict-send/00007.png | Bin 0 -> 915 bytes .../x-op-path-payment-strict-send/00008.png | Bin 0 -> 522 bytes .../x-op-path-payment-strict-send/00009.png | Bin 0 -> 516 bytes .../x-op-path-payment-strict-send/00010.png | Bin 0 -> 469 bytes .../x-op-path-payment-strict-send/00011.png | Bin 0 -> 451 bytes .../x-op-path-payment-strict-send/00012.png | Bin 0 -> 473 bytes .../x-op-payment-asset-alphanum12/00000.png | Bin 0 -> 419 bytes .../x-op-payment-asset-alphanum12/00001.png | Bin 0 -> 405 bytes .../x-op-payment-asset-alphanum12/00002.png | Bin 0 -> 385 bytes .../x-op-payment-asset-alphanum12/00003.png | Bin 0 -> 503 bytes .../x-op-payment-asset-alphanum12/00004.png | Bin 0 -> 523 bytes .../x-op-payment-asset-alphanum12/00005.png | Bin 0 -> 472 bytes .../x-op-payment-asset-alphanum12/00006.png | Bin 0 -> 670 bytes .../x-op-payment-asset-alphanum12/00007.png | Bin 0 -> 440 bytes .../x-op-payment-asset-alphanum12/00008.png | Bin 0 -> 915 bytes .../x-op-payment-asset-alphanum12/00009.png | Bin 0 -> 522 bytes .../x-op-payment-asset-alphanum12/00010.png | Bin 0 -> 469 bytes .../x-op-payment-asset-alphanum12/00011.png | Bin 0 -> 451 bytes .../x-op-payment-asset-alphanum12/00012.png | Bin 0 -> 473 bytes .../x-op-payment-asset-alphanum4/00000.png | Bin 0 -> 419 bytes .../x-op-payment-asset-alphanum4/00001.png | Bin 0 -> 405 bytes .../x-op-payment-asset-alphanum4/00002.png | Bin 0 -> 385 bytes .../x-op-payment-asset-alphanum4/00003.png | Bin 0 -> 503 bytes .../x-op-payment-asset-alphanum4/00004.png | Bin 0 -> 523 bytes .../x-op-payment-asset-alphanum4/00005.png | Bin 0 -> 472 bytes .../x-op-payment-asset-alphanum4/00006.png | Bin 0 -> 620 bytes .../x-op-payment-asset-alphanum4/00007.png | Bin 0 -> 915 bytes .../x-op-payment-asset-alphanum4/00008.png | Bin 0 -> 522 bytes .../x-op-payment-asset-alphanum4/00009.png | Bin 0 -> 469 bytes .../x-op-payment-asset-alphanum4/00010.png | Bin 0 -> 451 bytes .../x-op-payment-asset-alphanum4/00011.png | Bin 0 -> 473 bytes .../x-op-payment-asset-native/00000.png | Bin 0 -> 419 bytes .../x-op-payment-asset-native/00001.png | Bin 0 -> 405 bytes .../x-op-payment-asset-native/00002.png | Bin 0 -> 385 bytes .../x-op-payment-asset-native/00003.png | Bin 0 -> 503 bytes .../x-op-payment-asset-native/00004.png | Bin 0 -> 523 bytes .../x-op-payment-asset-native/00005.png | Bin 0 -> 472 bytes .../x-op-payment-asset-native/00006.png | Bin 0 -> 531 bytes .../x-op-payment-asset-native/00007.png | Bin 0 -> 915 bytes .../x-op-payment-asset-native/00008.png | Bin 0 -> 522 bytes .../x-op-payment-asset-native/00009.png | Bin 0 -> 469 bytes .../x-op-payment-asset-native/00010.png | Bin 0 -> 451 bytes .../x-op-payment-asset-native/00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 531 bytes .../00007.png | Bin 0 -> 920 bytes .../00008.png | Bin 0 -> 623 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../x-op-revoke-sponsorship-account/00000.png | Bin 0 -> 419 bytes .../x-op-revoke-sponsorship-account/00001.png | Bin 0 -> 405 bytes .../x-op-revoke-sponsorship-account/00002.png | Bin 0 -> 385 bytes .../x-op-revoke-sponsorship-account/00003.png | Bin 0 -> 503 bytes .../x-op-revoke-sponsorship-account/00004.png | Bin 0 -> 523 bytes .../x-op-revoke-sponsorship-account/00005.png | Bin 0 -> 472 bytes .../x-op-revoke-sponsorship-account/00006.png | Bin 0 -> 671 bytes .../x-op-revoke-sponsorship-account/00007.png | Bin 0 -> 899 bytes .../x-op-revoke-sponsorship-account/00008.png | Bin 0 -> 497 bytes .../x-op-revoke-sponsorship-account/00009.png | Bin 0 -> 469 bytes .../x-op-revoke-sponsorship-account/00010.png | Bin 0 -> 451 bytes .../x-op-revoke-sponsorship-account/00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 804 bytes .../00007.png | Bin 0 -> 842 bytes .../00008.png | Bin 0 -> 581 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../x-op-revoke-sponsorship-data/00000.png | Bin 0 -> 419 bytes .../x-op-revoke-sponsorship-data/00001.png | Bin 0 -> 405 bytes .../x-op-revoke-sponsorship-data/00002.png | Bin 0 -> 385 bytes .../x-op-revoke-sponsorship-data/00003.png | Bin 0 -> 503 bytes .../x-op-revoke-sponsorship-data/00004.png | Bin 0 -> 523 bytes .../x-op-revoke-sponsorship-data/00005.png | Bin 0 -> 472 bytes .../x-op-revoke-sponsorship-data/00006.png | Bin 0 -> 638 bytes .../x-op-revoke-sponsorship-data/00007.png | Bin 0 -> 899 bytes .../x-op-revoke-sponsorship-data/00008.png | Bin 0 -> 497 bytes .../x-op-revoke-sponsorship-data/00009.png | Bin 0 -> 667 bytes .../x-op-revoke-sponsorship-data/00010.png | Bin 0 -> 460 bytes .../x-op-revoke-sponsorship-data/00011.png | Bin 0 -> 469 bytes .../x-op-revoke-sponsorship-data/00012.png | Bin 0 -> 451 bytes .../x-op-revoke-sponsorship-data/00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 697 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 508 bytes .../00010.png | Bin 0 -> 973 bytes .../00011.png | Bin 0 -> 533 bytes .../00012.png | Bin 0 -> 469 bytes .../00013.png | Bin 0 -> 451 bytes .../00014.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 697 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 501 bytes .../00010.png | Bin 0 -> 981 bytes .../00011.png | Bin 0 -> 544 bytes .../00012.png | Bin 0 -> 469 bytes .../00013.png | Bin 0 -> 451 bytes .../00014.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 681 bytes .../00007.png | Bin 0 -> 924 bytes .../00008.png | Bin 0 -> 516 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../x-op-revoke-sponsorship-offer/00000.png | Bin 0 -> 419 bytes .../x-op-revoke-sponsorship-offer/00001.png | Bin 0 -> 405 bytes .../x-op-revoke-sponsorship-offer/00002.png | Bin 0 -> 385 bytes .../x-op-revoke-sponsorship-offer/00003.png | Bin 0 -> 503 bytes .../x-op-revoke-sponsorship-offer/00004.png | Bin 0 -> 523 bytes .../x-op-revoke-sponsorship-offer/00005.png | Bin 0 -> 472 bytes .../x-op-revoke-sponsorship-offer/00006.png | Bin 0 -> 646 bytes .../x-op-revoke-sponsorship-offer/00007.png | Bin 0 -> 884 bytes .../x-op-revoke-sponsorship-offer/00008.png | Bin 0 -> 486 bytes .../x-op-revoke-sponsorship-offer/00009.png | Bin 0 -> 379 bytes .../x-op-revoke-sponsorship-offer/00010.png | Bin 0 -> 469 bytes .../x-op-revoke-sponsorship-offer/00011.png | Bin 0 -> 451 bytes .../x-op-revoke-sponsorship-offer/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 697 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 496 bytes .../00010.png | Bin 0 -> 964 bytes .../00011.png | Bin 0 -> 548 bytes .../00012.png | Bin 0 -> 469 bytes .../00013.png | Bin 0 -> 451 bytes .../00014.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 680 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 439 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 680 bytes .../00007.png | Bin 0 -> 899 bytes .../00008.png | Bin 0 -> 497 bytes .../00009.png | Bin 0 -> 925 bytes .../00010.png | Bin 0 -> 517 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 496 bytes .../00008.png | Bin 0 -> 981 bytes .../00009.png | Bin 0 -> 544 bytes .../00010.png | Bin 0 -> 341 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 499 bytes .../00008.png | Bin 0 -> 964 bytes .../00009.png | Bin 0 -> 548 bytes .../00010.png | Bin 0 -> 341 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 499 bytes .../00008.png | Bin 0 -> 943 bytes .../00009.png | Bin 0 -> 541 bytes .../00010.png | Bin 0 -> 341 bytes .../00011.png | Bin 0 -> 469 bytes .../00012.png | Bin 0 -> 451 bytes .../00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 442 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../snapshots/x-op-set-options/00000.png | Bin 0 -> 419 bytes .../snapshots/x-op-set-options/00001.png | Bin 0 -> 405 bytes .../snapshots/x-op-set-options/00002.png | Bin 0 -> 385 bytes .../snapshots/x-op-set-options/00003.png | Bin 0 -> 503 bytes .../snapshots/x-op-set-options/00004.png | Bin 0 -> 523 bytes .../snapshots/x-op-set-options/00005.png | Bin 0 -> 472 bytes .../snapshots/x-op-set-options/00006.png | Bin 0 -> 484 bytes .../snapshots/x-op-set-options/00007.png | Bin 0 -> 924 bytes .../snapshots/x-op-set-options/00008.png | Bin 0 -> 527 bytes .../snapshots/x-op-set-options/00009.png | Bin 0 -> 615 bytes .../snapshots/x-op-set-options/00010.png | Bin 0 -> 481 bytes .../snapshots/x-op-set-options/00011.png | Bin 0 -> 442 bytes .../snapshots/x-op-set-options/00012.png | Bin 0 -> 360 bytes .../snapshots/x-op-set-options/00013.png | Bin 0 -> 401 bytes .../snapshots/x-op-set-options/00014.png | Bin 0 -> 382 bytes .../snapshots/x-op-set-options/00015.png | Bin 0 -> 437 bytes .../snapshots/x-op-set-options/00016.png | Bin 0 -> 499 bytes .../snapshots/x-op-set-options/00017.png | Bin 0 -> 973 bytes .../snapshots/x-op-set-options/00018.png | Bin 0 -> 533 bytes .../snapshots/x-op-set-options/00019.png | Bin 0 -> 341 bytes .../snapshots/x-op-set-options/00020.png | Bin 0 -> 469 bytes .../snapshots/x-op-set-options/00021.png | Bin 0 -> 451 bytes .../snapshots/x-op-set-options/00022.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 542 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 694 bytes .../00011.png | Bin 0 -> 765 bytes .../00012.png | Bin 0 -> 507 bytes .../00013.png | Bin 0 -> 469 bytes .../00014.png | Bin 0 -> 451 bytes .../00015.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 542 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 762 bytes .../00011.png | Bin 0 -> 508 bytes .../00012.png | Bin 0 -> 699 bytes .../00013.png | Bin 0 -> 469 bytes .../00014.png | Bin 0 -> 451 bytes .../00015.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 542 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 681 bytes .../00011.png | Bin 0 -> 694 bytes .../00012.png | Bin 0 -> 521 bytes .../00013.png | Bin 0 -> 469 bytes .../00014.png | Bin 0 -> 451 bytes .../00015.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 542 bytes .../00007.png | Bin 0 -> 875 bytes .../00008.png | Bin 0 -> 483 bytes .../00009.png | Bin 0 -> 467 bytes .../00010.png | Bin 0 -> 688 bytes .../00011.png | Bin 0 -> 759 bytes .../00012.png | Bin 0 -> 509 bytes .../00013.png | Bin 0 -> 405 bytes .../00014.png | Bin 0 -> 469 bytes .../00015.png | Bin 0 -> 451 bytes .../00016.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 912 bytes .../00006.png | Bin 0 -> 497 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 925 bytes .../00010.png | Bin 0 -> 503 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 925 bytes .../00006.png | Bin 0 -> 592 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 926 bytes .../00010.png | Bin 0 -> 601 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 925 bytes .../00006.png | Bin 0 -> 592 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 925 bytes .../00010.png | Bin 0 -> 503 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 435 bytes .../00008.png | Bin 0 -> 926 bytes .../00009.png | Bin 0 -> 601 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 435 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 912 bytes .../00006.png | Bin 0 -> 497 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 908 bytes .../00010.png | Bin 0 -> 502 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 435 bytes .../00008.png | Bin 0 -> 908 bytes .../00009.png | Bin 0 -> 502 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../x-op-with-empty-source/00000.png | Bin 0 -> 419 bytes .../x-op-with-empty-source/00001.png | Bin 0 -> 405 bytes .../x-op-with-empty-source/00002.png | Bin 0 -> 385 bytes .../x-op-with-empty-source/00003.png | Bin 0 -> 503 bytes .../x-op-with-empty-source/00004.png | Bin 0 -> 523 bytes .../x-op-with-empty-source/00005.png | Bin 0 -> 472 bytes .../x-op-with-empty-source/00006.png | Bin 0 -> 531 bytes .../x-op-with-empty-source/00007.png | Bin 0 -> 915 bytes .../x-op-with-empty-source/00008.png | Bin 0 -> 522 bytes .../x-op-with-empty-source/00009.png | Bin 0 -> 451 bytes .../x-op-with-empty-source/00010.png | Bin 0 -> 473 bytes .../x-op-with-muxed-source/00000.png | Bin 0 -> 419 bytes .../x-op-with-muxed-source/00001.png | Bin 0 -> 405 bytes .../x-op-with-muxed-source/00002.png | Bin 0 -> 385 bytes .../x-op-with-muxed-source/00003.png | Bin 0 -> 503 bytes .../x-op-with-muxed-source/00004.png | Bin 0 -> 523 bytes .../x-op-with-muxed-source/00005.png | Bin 0 -> 472 bytes .../x-op-with-muxed-source/00006.png | Bin 0 -> 531 bytes .../x-op-with-muxed-source/00007.png | Bin 0 -> 915 bytes .../x-op-with-muxed-source/00008.png | Bin 0 -> 522 bytes .../x-op-with-muxed-source/00009.png | Bin 0 -> 926 bytes .../x-op-with-muxed-source/00010.png | Bin 0 -> 601 bytes .../x-op-with-muxed-source/00011.png | Bin 0 -> 451 bytes .../x-op-with-muxed-source/00012.png | Bin 0 -> 473 bytes .../snapshots/x-public-key-approve/00000.png | Bin 0 -> 399 bytes .../snapshots/x-public-key-approve/00001.png | Bin 0 -> 895 bytes .../snapshots/x-public-key-approve/00002.png | Bin 0 -> 478 bytes .../snapshots/x-public-key-approve/00003.png | Bin 0 -> 364 bytes .../snapshots/x-public-key-approve/00004.png | Bin 0 -> 473 bytes .../snapshots/x-public-key-reject/00000.png | Bin 0 -> 399 bytes .../snapshots/x-public-key-reject/00001.png | Bin 0 -> 895 bytes .../snapshots/x-public-key-reject/00002.png | Bin 0 -> 478 bytes .../snapshots/x-public-key-reject/00003.png | Bin 0 -> 364 bytes .../snapshots/x-public-key-reject/00004.png | Bin 0 -> 365 bytes .../snapshots/x-public-key-reject/00005.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 332 bytes .../00006.png | Bin 0 -> 915 bytes .../00007.png | Bin 0 -> 522 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 332 bytes .../00006.png | Bin 0 -> 915 bytes .../00007.png | Bin 0 -> 522 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../snapshots/x-tx-cond-is-none/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-cond-is-none/00001.png | Bin 0 -> 932 bytes .../snapshots/x-tx-cond-is-none/00002.png | Bin 0 -> 527 bytes .../snapshots/x-tx-cond-is-none/00003.png | Bin 0 -> 385 bytes .../snapshots/x-tx-cond-is-none/00004.png | Bin 0 -> 503 bytes .../snapshots/x-tx-cond-is-none/00005.png | Bin 0 -> 472 bytes .../snapshots/x-tx-cond-is-none/00006.png | Bin 0 -> 332 bytes .../snapshots/x-tx-cond-is-none/00007.png | Bin 0 -> 915 bytes .../snapshots/x-tx-cond-is-none/00008.png | Bin 0 -> 522 bytes .../snapshots/x-tx-cond-is-none/00009.png | Bin 0 -> 469 bytes .../snapshots/x-tx-cond-is-none/00010.png | Bin 0 -> 451 bytes .../snapshots/x-tx-cond-is-none/00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 472 bytes .../00005.png | Bin 0 -> 332 bytes .../00006.png | Bin 0 -> 915 bytes .../00007.png | Bin 0 -> 522 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 491 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 504 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../x-tx-cond-ledger-bounds/00000.png | Bin 0 -> 419 bytes .../x-tx-cond-ledger-bounds/00001.png | Bin 0 -> 405 bytes .../x-tx-cond-ledger-bounds/00002.png | Bin 0 -> 385 bytes .../x-tx-cond-ledger-bounds/00003.png | Bin 0 -> 503 bytes .../x-tx-cond-ledger-bounds/00004.png | Bin 0 -> 491 bytes .../x-tx-cond-ledger-bounds/00005.png | Bin 0 -> 504 bytes .../x-tx-cond-ledger-bounds/00006.png | Bin 0 -> 472 bytes .../x-tx-cond-ledger-bounds/00007.png | Bin 0 -> 332 bytes .../x-tx-cond-ledger-bounds/00008.png | Bin 0 -> 915 bytes .../x-tx-cond-ledger-bounds/00009.png | Bin 0 -> 522 bytes .../x-tx-cond-ledger-bounds/00010.png | Bin 0 -> 469 bytes .../x-tx-cond-ledger-bounds/00011.png | Bin 0 -> 451 bytes .../x-tx-cond-ledger-bounds/00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 467 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 438 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../x-tx-cond-min-account-sequence/00000.png | Bin 0 -> 419 bytes .../x-tx-cond-min-account-sequence/00001.png | Bin 0 -> 405 bytes .../x-tx-cond-min-account-sequence/00002.png | Bin 0 -> 385 bytes .../x-tx-cond-min-account-sequence/00003.png | Bin 0 -> 503 bytes .../x-tx-cond-min-account-sequence/00004.png | Bin 0 -> 500 bytes .../x-tx-cond-min-account-sequence/00005.png | Bin 0 -> 472 bytes .../x-tx-cond-min-account-sequence/00006.png | Bin 0 -> 332 bytes .../x-tx-cond-min-account-sequence/00007.png | Bin 0 -> 915 bytes .../x-tx-cond-min-account-sequence/00008.png | Bin 0 -> 522 bytes .../x-tx-cond-min-account-sequence/00009.png | Bin 0 -> 469 bytes .../x-tx-cond-min-account-sequence/00010.png | Bin 0 -> 451 bytes .../x-tx-cond-min-account-sequence/00011.png | Bin 0 -> 473 bytes .../x-tx-cond-time-bounds-are-zero/00000.png | Bin 0 -> 419 bytes .../x-tx-cond-time-bounds-are-zero/00001.png | Bin 0 -> 405 bytes .../x-tx-cond-time-bounds-are-zero/00002.png | Bin 0 -> 385 bytes .../x-tx-cond-time-bounds-are-zero/00003.png | Bin 0 -> 503 bytes .../x-tx-cond-time-bounds-are-zero/00004.png | Bin 0 -> 472 bytes .../x-tx-cond-time-bounds-are-zero/00005.png | Bin 0 -> 332 bytes .../x-tx-cond-time-bounds-are-zero/00006.png | Bin 0 -> 915 bytes .../x-tx-cond-time-bounds-are-zero/00007.png | Bin 0 -> 522 bytes .../x-tx-cond-time-bounds-are-zero/00008.png | Bin 0 -> 469 bytes .../x-tx-cond-time-bounds-are-zero/00009.png | Bin 0 -> 451 bytes .../x-tx-cond-time-bounds-are-zero/00010.png | Bin 0 -> 473 bytes .../x-tx-cond-time-bounds-is-none/00000.png | Bin 0 -> 419 bytes .../x-tx-cond-time-bounds-is-none/00001.png | Bin 0 -> 932 bytes .../x-tx-cond-time-bounds-is-none/00002.png | Bin 0 -> 527 bytes .../x-tx-cond-time-bounds-is-none/00003.png | Bin 0 -> 385 bytes .../x-tx-cond-time-bounds-is-none/00004.png | Bin 0 -> 503 bytes .../x-tx-cond-time-bounds-is-none/00005.png | Bin 0 -> 491 bytes .../x-tx-cond-time-bounds-is-none/00006.png | Bin 0 -> 504 bytes .../x-tx-cond-time-bounds-is-none/00007.png | Bin 0 -> 472 bytes .../x-tx-cond-time-bounds-is-none/00008.png | Bin 0 -> 332 bytes .../x-tx-cond-time-bounds-is-none/00009.png | Bin 0 -> 915 bytes .../x-tx-cond-time-bounds-is-none/00010.png | Bin 0 -> 522 bytes .../x-tx-cond-time-bounds-is-none/00011.png | Bin 0 -> 469 bytes .../x-tx-cond-time-bounds-is-none/00012.png | Bin 0 -> 451 bytes .../x-tx-cond-time-bounds-is-none/00013.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 507 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 527 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 332 bytes .../00007.png | Bin 0 -> 915 bytes .../00008.png | Bin 0 -> 522 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../snapshots/x-tx-cond-time-bounds/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-cond-time-bounds/00001.png | Bin 0 -> 405 bytes .../snapshots/x-tx-cond-time-bounds/00002.png | Bin 0 -> 385 bytes .../snapshots/x-tx-cond-time-bounds/00003.png | Bin 0 -> 503 bytes .../snapshots/x-tx-cond-time-bounds/00004.png | Bin 0 -> 518 bytes .../snapshots/x-tx-cond-time-bounds/00005.png | Bin 0 -> 523 bytes .../snapshots/x-tx-cond-time-bounds/00006.png | Bin 0 -> 472 bytes .../snapshots/x-tx-cond-time-bounds/00007.png | Bin 0 -> 332 bytes .../snapshots/x-tx-cond-time-bounds/00008.png | Bin 0 -> 915 bytes .../snapshots/x-tx-cond-time-bounds/00009.png | Bin 0 -> 522 bytes .../snapshots/x-tx-cond-time-bounds/00010.png | Bin 0 -> 469 bytes .../snapshots/x-tx-cond-time-bounds/00011.png | Bin 0 -> 451 bytes .../snapshots/x-tx-cond-time-bounds/00012.png | Bin 0 -> 473 bytes .../x-tx-cond-with-all-items/00000.png | Bin 0 -> 419 bytes .../x-tx-cond-with-all-items/00001.png | Bin 0 -> 405 bytes .../x-tx-cond-with-all-items/00002.png | Bin 0 -> 385 bytes .../x-tx-cond-with-all-items/00003.png | Bin 0 -> 503 bytes .../x-tx-cond-with-all-items/00004.png | Bin 0 -> 518 bytes .../x-tx-cond-with-all-items/00005.png | Bin 0 -> 523 bytes .../x-tx-cond-with-all-items/00006.png | Bin 0 -> 491 bytes .../x-tx-cond-with-all-items/00007.png | Bin 0 -> 504 bytes .../x-tx-cond-with-all-items/00008.png | Bin 0 -> 500 bytes .../x-tx-cond-with-all-items/00009.png | Bin 0 -> 467 bytes .../x-tx-cond-with-all-items/00010.png | Bin 0 -> 438 bytes .../x-tx-cond-with-all-items/00011.png | Bin 0 -> 472 bytes .../x-tx-cond-with-all-items/00012.png | Bin 0 -> 332 bytes .../x-tx-cond-with-all-items/00013.png | Bin 0 -> 915 bytes .../x-tx-cond-with-all-items/00014.png | Bin 0 -> 522 bytes .../x-tx-cond-with-all-items/00015.png | Bin 0 -> 469 bytes .../x-tx-cond-with-all-items/00016.png | Bin 0 -> 451 bytes .../x-tx-cond-with-all-items/00017.png | Bin 0 -> 473 bytes .../snapshots/x-tx-custom-base-fee/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-custom-base-fee/00001.png | Bin 0 -> 405 bytes .../snapshots/x-tx-custom-base-fee/00002.png | Bin 0 -> 419 bytes .../snapshots/x-tx-custom-base-fee/00003.png | Bin 0 -> 503 bytes .../snapshots/x-tx-custom-base-fee/00004.png | Bin 0 -> 523 bytes .../snapshots/x-tx-custom-base-fee/00005.png | Bin 0 -> 472 bytes .../snapshots/x-tx-custom-base-fee/00006.png | Bin 0 -> 355 bytes .../snapshots/x-tx-custom-base-fee/00007.png | Bin 0 -> 332 bytes .../snapshots/x-tx-custom-base-fee/00008.png | Bin 0 -> 915 bytes .../snapshots/x-tx-custom-base-fee/00009.png | Bin 0 -> 522 bytes .../snapshots/x-tx-custom-base-fee/00010.png | Bin 0 -> 469 bytes .../snapshots/x-tx-custom-base-fee/00011.png | Bin 0 -> 359 bytes .../snapshots/x-tx-custom-base-fee/00012.png | Bin 0 -> 332 bytes .../snapshots/x-tx-custom-base-fee/00013.png | Bin 0 -> 944 bytes .../snapshots/x-tx-custom-base-fee/00014.png | Bin 0 -> 519 bytes .../snapshots/x-tx-custom-base-fee/00015.png | Bin 0 -> 469 bytes .../snapshots/x-tx-custom-base-fee/00016.png | Bin 0 -> 451 bytes .../snapshots/x-tx-custom-base-fee/00017.png | Bin 0 -> 473 bytes .../snapshots/x-tx-hide-sequence/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-hide-sequence/00001.png | Bin 0 -> 405 bytes .../snapshots/x-tx-hide-sequence/00002.png | Bin 0 -> 385 bytes .../snapshots/x-tx-hide-sequence/00003.png | Bin 0 -> 523 bytes .../snapshots/x-tx-hide-sequence/00004.png | Bin 0 -> 472 bytes .../snapshots/x-tx-hide-sequence/00005.png | Bin 0 -> 501 bytes .../snapshots/x-tx-hide-sequence/00006.png | Bin 0 -> 435 bytes .../snapshots/x-tx-hide-sequence/00007.png | Bin 0 -> 469 bytes .../snapshots/x-tx-hide-sequence/00008.png | Bin 0 -> 451 bytes .../snapshots/x-tx-hide-sequence/00009.png | Bin 0 -> 473 bytes tests_zemu/snapshots/x-tx-memo-hash/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/x-tx-memo-hash/00001.png | Bin 0 -> 921 bytes tests_zemu/snapshots/x-tx-memo-hash/00002.png | Bin 0 -> 519 bytes tests_zemu/snapshots/x-tx-memo-hash/00003.png | Bin 0 -> 385 bytes tests_zemu/snapshots/x-tx-memo-hash/00004.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-tx-memo-hash/00005.png | Bin 0 -> 523 bytes tests_zemu/snapshots/x-tx-memo-hash/00006.png | Bin 0 -> 472 bytes tests_zemu/snapshots/x-tx-memo-hash/00007.png | Bin 0 -> 332 bytes tests_zemu/snapshots/x-tx-memo-hash/00008.png | Bin 0 -> 915 bytes tests_zemu/snapshots/x-tx-memo-hash/00009.png | Bin 0 -> 522 bytes tests_zemu/snapshots/x-tx-memo-hash/00010.png | Bin 0 -> 469 bytes tests_zemu/snapshots/x-tx-memo-hash/00011.png | Bin 0 -> 451 bytes tests_zemu/snapshots/x-tx-memo-hash/00012.png | Bin 0 -> 473 bytes tests_zemu/snapshots/x-tx-memo-id/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/x-tx-memo-id/00001.png | Bin 0 -> 517 bytes tests_zemu/snapshots/x-tx-memo-id/00002.png | Bin 0 -> 385 bytes tests_zemu/snapshots/x-tx-memo-id/00003.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-tx-memo-id/00004.png | Bin 0 -> 523 bytes tests_zemu/snapshots/x-tx-memo-id/00005.png | Bin 0 -> 472 bytes tests_zemu/snapshots/x-tx-memo-id/00006.png | Bin 0 -> 332 bytes tests_zemu/snapshots/x-tx-memo-id/00007.png | Bin 0 -> 915 bytes tests_zemu/snapshots/x-tx-memo-id/00008.png | Bin 0 -> 522 bytes tests_zemu/snapshots/x-tx-memo-id/00009.png | Bin 0 -> 469 bytes tests_zemu/snapshots/x-tx-memo-id/00010.png | Bin 0 -> 451 bytes tests_zemu/snapshots/x-tx-memo-id/00011.png | Bin 0 -> 473 bytes tests_zemu/snapshots/x-tx-memo-none/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/x-tx-memo-none/00001.png | Bin 0 -> 385 bytes tests_zemu/snapshots/x-tx-memo-none/00002.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-tx-memo-none/00003.png | Bin 0 -> 523 bytes tests_zemu/snapshots/x-tx-memo-none/00004.png | Bin 0 -> 472 bytes tests_zemu/snapshots/x-tx-memo-none/00005.png | Bin 0 -> 332 bytes tests_zemu/snapshots/x-tx-memo-none/00006.png | Bin 0 -> 915 bytes tests_zemu/snapshots/x-tx-memo-none/00007.png | Bin 0 -> 522 bytes tests_zemu/snapshots/x-tx-memo-none/00008.png | Bin 0 -> 469 bytes tests_zemu/snapshots/x-tx-memo-none/00009.png | Bin 0 -> 451 bytes tests_zemu/snapshots/x-tx-memo-none/00010.png | Bin 0 -> 473 bytes .../snapshots/x-tx-memo-return-hash/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-memo-return-hash/00001.png | Bin 0 -> 932 bytes .../snapshots/x-tx-memo-return-hash/00002.png | Bin 0 -> 527 bytes .../snapshots/x-tx-memo-return-hash/00003.png | Bin 0 -> 385 bytes .../snapshots/x-tx-memo-return-hash/00004.png | Bin 0 -> 503 bytes .../snapshots/x-tx-memo-return-hash/00005.png | Bin 0 -> 523 bytes .../snapshots/x-tx-memo-return-hash/00006.png | Bin 0 -> 472 bytes .../snapshots/x-tx-memo-return-hash/00007.png | Bin 0 -> 332 bytes .../snapshots/x-tx-memo-return-hash/00008.png | Bin 0 -> 915 bytes .../snapshots/x-tx-memo-return-hash/00009.png | Bin 0 -> 522 bytes .../snapshots/x-tx-memo-return-hash/00010.png | Bin 0 -> 469 bytes .../snapshots/x-tx-memo-return-hash/00011.png | Bin 0 -> 451 bytes .../snapshots/x-tx-memo-return-hash/00012.png | Bin 0 -> 473 bytes .../x-tx-memo-text-unprintable/00000.png | Bin 0 -> 419 bytes .../x-tx-memo-text-unprintable/00001.png | Bin 0 -> 576 bytes .../x-tx-memo-text-unprintable/00002.png | Bin 0 -> 385 bytes .../x-tx-memo-text-unprintable/00003.png | Bin 0 -> 503 bytes .../x-tx-memo-text-unprintable/00004.png | Bin 0 -> 523 bytes .../x-tx-memo-text-unprintable/00005.png | Bin 0 -> 472 bytes .../x-tx-memo-text-unprintable/00006.png | Bin 0 -> 332 bytes .../x-tx-memo-text-unprintable/00007.png | Bin 0 -> 915 bytes .../x-tx-memo-text-unprintable/00008.png | Bin 0 -> 522 bytes .../x-tx-memo-text-unprintable/00009.png | Bin 0 -> 469 bytes .../x-tx-memo-text-unprintable/00010.png | Bin 0 -> 451 bytes .../x-tx-memo-text-unprintable/00011.png | Bin 0 -> 473 bytes tests_zemu/snapshots/x-tx-memo-text/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/x-tx-memo-text/00001.png | Bin 0 -> 546 bytes tests_zemu/snapshots/x-tx-memo-text/00002.png | Bin 0 -> 385 bytes tests_zemu/snapshots/x-tx-memo-text/00003.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-tx-memo-text/00004.png | Bin 0 -> 523 bytes tests_zemu/snapshots/x-tx-memo-text/00005.png | Bin 0 -> 472 bytes tests_zemu/snapshots/x-tx-memo-text/00006.png | Bin 0 -> 332 bytes tests_zemu/snapshots/x-tx-memo-text/00007.png | Bin 0 -> 915 bytes tests_zemu/snapshots/x-tx-memo-text/00008.png | Bin 0 -> 522 bytes tests_zemu/snapshots/x-tx-memo-text/00009.png | Bin 0 -> 469 bytes tests_zemu/snapshots/x-tx-memo-text/00010.png | Bin 0 -> 451 bytes tests_zemu/snapshots/x-tx-memo-text/00011.png | Bin 0 -> 473 bytes .../snapshots/x-tx-multi-operations/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-multi-operations/00001.png | Bin 0 -> 405 bytes .../snapshots/x-tx-multi-operations/00002.png | Bin 0 -> 389 bytes .../snapshots/x-tx-multi-operations/00003.png | Bin 0 -> 503 bytes .../snapshots/x-tx-multi-operations/00004.png | Bin 0 -> 523 bytes .../snapshots/x-tx-multi-operations/00005.png | Bin 0 -> 472 bytes .../snapshots/x-tx-multi-operations/00006.png | Bin 0 -> 353 bytes .../snapshots/x-tx-multi-operations/00007.png | Bin 0 -> 531 bytes .../snapshots/x-tx-multi-operations/00008.png | Bin 0 -> 915 bytes .../snapshots/x-tx-multi-operations/00009.png | Bin 0 -> 522 bytes .../snapshots/x-tx-multi-operations/00010.png | Bin 0 -> 469 bytes .../snapshots/x-tx-multi-operations/00011.png | Bin 0 -> 360 bytes .../snapshots/x-tx-multi-operations/00012.png | Bin 0 -> 620 bytes .../snapshots/x-tx-multi-operations/00013.png | Bin 0 -> 915 bytes .../snapshots/x-tx-multi-operations/00014.png | Bin 0 -> 522 bytes .../snapshots/x-tx-multi-operations/00015.png | Bin 0 -> 469 bytes .../snapshots/x-tx-multi-operations/00016.png | Bin 0 -> 351 bytes .../snapshots/x-tx-multi-operations/00017.png | Bin 0 -> 484 bytes .../snapshots/x-tx-multi-operations/00018.png | Bin 0 -> 437 bytes .../snapshots/x-tx-multi-operations/00019.png | Bin 0 -> 451 bytes .../snapshots/x-tx-multi-operations/00020.png | Bin 0 -> 473 bytes .../snapshots/x-tx-network-custom/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-network-custom/00001.png | Bin 0 -> 387 bytes .../snapshots/x-tx-network-custom/00002.png | Bin 0 -> 405 bytes .../snapshots/x-tx-network-custom/00003.png | Bin 0 -> 413 bytes .../snapshots/x-tx-network-custom/00004.png | Bin 0 -> 503 bytes .../snapshots/x-tx-network-custom/00005.png | Bin 0 -> 523 bytes .../snapshots/x-tx-network-custom/00006.png | Bin 0 -> 472 bytes .../snapshots/x-tx-network-custom/00007.png | Bin 0 -> 501 bytes .../snapshots/x-tx-network-custom/00008.png | Bin 0 -> 435 bytes .../snapshots/x-tx-network-custom/00009.png | Bin 0 -> 469 bytes .../snapshots/x-tx-network-custom/00010.png | Bin 0 -> 451 bytes .../snapshots/x-tx-network-custom/00011.png | Bin 0 -> 473 bytes .../snapshots/x-tx-network-public/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-network-public/00001.png | Bin 0 -> 405 bytes .../snapshots/x-tx-network-public/00002.png | Bin 0 -> 385 bytes .../snapshots/x-tx-network-public/00003.png | Bin 0 -> 503 bytes .../snapshots/x-tx-network-public/00004.png | Bin 0 -> 523 bytes .../snapshots/x-tx-network-public/00005.png | Bin 0 -> 472 bytes .../snapshots/x-tx-network-public/00006.png | Bin 0 -> 501 bytes .../snapshots/x-tx-network-public/00007.png | Bin 0 -> 435 bytes .../snapshots/x-tx-network-public/00008.png | Bin 0 -> 469 bytes .../snapshots/x-tx-network-public/00009.png | Bin 0 -> 451 bytes .../snapshots/x-tx-network-public/00010.png | Bin 0 -> 473 bytes .../snapshots/x-tx-network-testnet/00000.png | Bin 0 -> 419 bytes .../snapshots/x-tx-network-testnet/00001.png | Bin 0 -> 399 bytes .../snapshots/x-tx-network-testnet/00002.png | Bin 0 -> 405 bytes .../snapshots/x-tx-network-testnet/00003.png | Bin 0 -> 385 bytes .../snapshots/x-tx-network-testnet/00004.png | Bin 0 -> 503 bytes .../snapshots/x-tx-network-testnet/00005.png | Bin 0 -> 523 bytes .../snapshots/x-tx-network-testnet/00006.png | Bin 0 -> 472 bytes .../snapshots/x-tx-network-testnet/00007.png | Bin 0 -> 501 bytes .../snapshots/x-tx-network-testnet/00008.png | Bin 0 -> 435 bytes .../snapshots/x-tx-network-testnet/00009.png | Bin 0 -> 469 bytes .../snapshots/x-tx-network-testnet/00010.png | Bin 0 -> 451 bytes .../snapshots/x-tx-network-testnet/00011.png | Bin 0 -> 473 bytes tests_zemu/snapshots/x-tx-reject/00000.png | Bin 0 -> 419 bytes tests_zemu/snapshots/x-tx-reject/00001.png | Bin 0 -> 405 bytes tests_zemu/snapshots/x-tx-reject/00002.png | Bin 0 -> 385 bytes tests_zemu/snapshots/x-tx-reject/00003.png | Bin 0 -> 503 bytes tests_zemu/snapshots/x-tx-reject/00004.png | Bin 0 -> 523 bytes tests_zemu/snapshots/x-tx-reject/00005.png | Bin 0 -> 472 bytes tests_zemu/snapshots/x-tx-reject/00006.png | Bin 0 -> 501 bytes tests_zemu/snapshots/x-tx-reject/00007.png | Bin 0 -> 435 bytes tests_zemu/snapshots/x-tx-reject/00008.png | Bin 0 -> 469 bytes tests_zemu/snapshots/x-tx-reject/00009.png | Bin 0 -> 451 bytes tests_zemu/snapshots/x-tx-reject/00010.png | Bin 0 -> 347 bytes tests_zemu/snapshots/x-tx-reject/00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 925 bytes .../00006.png | Bin 0 -> 592 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 925 bytes .../00010.png | Bin 0 -> 503 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 501 bytes .../00007.png | Bin 0 -> 435 bytes .../00008.png | Bin 0 -> 469 bytes .../00009.png | Bin 0 -> 451 bytes .../00010.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 912 bytes .../00006.png | Bin 0 -> 497 bytes .../00007.png | Bin 0 -> 501 bytes .../00008.png | Bin 0 -> 435 bytes .../00009.png | Bin 0 -> 908 bytes .../00010.png | Bin 0 -> 502 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../x-tx-with-muxed-source/00000.png | Bin 0 -> 419 bytes .../x-tx-with-muxed-source/00001.png | Bin 0 -> 405 bytes .../x-tx-with-muxed-source/00002.png | Bin 0 -> 385 bytes .../x-tx-with-muxed-source/00003.png | Bin 0 -> 503 bytes .../x-tx-with-muxed-source/00004.png | Bin 0 -> 523 bytes .../x-tx-with-muxed-source/00005.png | Bin 0 -> 925 bytes .../x-tx-with-muxed-source/00006.png | Bin 0 -> 592 bytes .../x-tx-with-muxed-source/00007.png | Bin 0 -> 332 bytes .../x-tx-with-muxed-source/00008.png | Bin 0 -> 915 bytes .../x-tx-with-muxed-source/00009.png | Bin 0 -> 522 bytes .../x-tx-with-muxed-source/00010.png | Bin 0 -> 925 bytes .../x-tx-with-muxed-source/00011.png | Bin 0 -> 503 bytes .../x-tx-with-muxed-source/00012.png | Bin 0 -> 451 bytes .../x-tx-with-muxed-source/00013.png | Bin 0 -> 473 bytes tests_zemu/tests/common.ts | 15 + tests_zemu/tests/main.test.ts | 292 + tests_zemu/tests/zemu.ts | 67 + tests_zemu/tsconfig.json | 15 + 5284 files changed, 22374 insertions(+), 7194 deletions(-) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .github/workflows/swap-ci-workflow.yml delete mode 100644 blue_app_stellar.gif create mode 100755 build_elfs.sh create mode 100644 docs/APDU.md create mode 100644 docs/COMMANDS.md create mode 100644 docs/TRANSACTION.md create mode 100644 fuzz/CMakeLists.txt create mode 100644 fuzz/README.md delete mode 100755 fuzz/build.sh create mode 100644 fuzz/fuzz_tx.c delete mode 100755 fuzz/run.sh rename nanos_app_stellar.gif => icons/nanos_app_stellar.gif (100%) rename nanox_app_stellar.gif => icons/nanox_app_stellar.gif (100%) create mode 100644 src/apdu/apdu_parser.c create mode 100644 src/apdu/apdu_parser.h create mode 100644 src/apdu/dispatcher.c create mode 100644 src/apdu/dispatcher.h create mode 100644 src/common/base32.c create mode 100644 src/common/base32.h create mode 100644 src/common/base58.c create mode 100644 src/common/base58.h create mode 100644 src/common/bip32.c create mode 100644 src/common/bip32.h create mode 100644 src/common/buffer.c create mode 100644 src/common/buffer.h create mode 100644 src/common/format.c create mode 100644 src/common/format.h create mode 100644 src/common/macros.h create mode 100644 src/common/read.c create mode 100644 src/common/read.h create mode 100644 src/common/varint.c create mode 100644 src/common/varint.h create mode 100644 src/common/write.c create mode 100644 src/common/write.h create mode 100644 src/crypto.c create mode 100644 src/crypto.h create mode 100644 src/globals.c create mode 100644 src/globals.h create mode 100644 src/handler/get_app_configuration.c create mode 100644 src/handler/get_public_key.c create mode 100644 src/handler/handler.h create mode 100644 src/handler/sign_transaction.c create mode 100644 src/handler/sign_transaction_hash.c create mode 100644 src/io.c create mode 100644 src/io.h create mode 100644 src/send_reponse.c create mode 100644 src/send_response.h create mode 100644 src/settings.h delete mode 100644 src/stellar.c delete mode 100644 src/stellar_api.h delete mode 100644 src/stellar_format.c delete mode 100644 src/stellar_format.h delete mode 100644 src/stellar_nvram.c delete mode 100644 src/stellar_parser.c delete mode 100644 src/stellar_ram.c delete mode 100644 src/stellar_types.h delete mode 100644 src/stellar_utils.c delete mode 100644 src/stellar_ux.h delete mode 100644 src/stellar_ux_common.c delete mode 100644 src/stellar_ux_nanox.c delete mode 100644 src/stellar_vars.h create mode 100644 src/sw.h create mode 100644 src/transaction/transaction_formatter.c create mode 100644 src/transaction/transaction_formatter.h create mode 100644 src/transaction/transaction_parser.c create mode 100644 src/transaction/transaction_parser.h create mode 100644 src/transaction/transaction_types.h create mode 100644 src/types.h create mode 100644 src/ui/action/validate.c create mode 100644 src/ui/action/validate.h create mode 100644 src/ui/ui.h create mode 100644 src/ui/ui_address.c create mode 100644 src/ui/ui_menu.c create mode 100644 src/ui/ui_transaction.c create mode 100644 src/ui/ui_transaction_hash.c create mode 100644 src/utils.c create mode 100644 src/utils.h delete mode 100755 stellar.png delete mode 100644 tests/CMakeLists.txt delete mode 100644 tests/README.md delete mode 100644 tests/automation.json delete mode 100644 tests/conftest.py delete mode 100755 tests/functional_test.py delete mode 100644 tests/include/bolos_target.h delete mode 100644 tests/include/os.h delete mode 100644 tests/include/os_io_seproxyhal.h delete mode 100644 tests/requirements.txt delete mode 100644 tests/src/fuzz_tx.c delete mode 100644 tests/src/test_printers.c delete mode 100644 tests/src/test_swap.c delete mode 100644 tests/src/test_tx.c delete mode 100644 tests/testcases/feeBumpTxFeeSourceEqualSigner.raw delete mode 100644 tests/testcases/feeBumpTxFeeSourceEqualSigner.txt delete mode 100644 tests/testcases/feeBumpTxFeeSourceMuxedAccountEqualSigner.raw delete mode 100644 tests/testcases/feeBumpTxFeeSourceMuxedAccountEqualSigner.txt delete mode 100644 tests/testcases/feeBumpTxInnerSourceEqualSigner.raw delete mode 100644 tests/testcases/feeBumpTxInnerSourceEqualSigner.txt delete mode 100644 tests/testcases/feeBumpTxSimple.raw delete mode 100644 tests/testcases/feeBumpTxSimple.txt delete mode 100644 tests/testcases/feeBumpTxSimpleMuxedFeeSource.raw delete mode 100644 tests/testcases/feeBumpTxSimpleMuxedFeeSource.txt delete mode 100644 tests/testcases/txAccountMerge.raw delete mode 100644 tests/testcases/txAccountMerge.txt delete mode 100644 tests/testcases/txAccountMergeMuxedDestination.raw delete mode 100644 tests/testcases/txAccountMergeMuxedDestination.txt delete mode 100644 tests/testcases/txAllowTrustAuthorized.raw delete mode 100644 tests/testcases/txAllowTrustAuthorized.txt delete mode 100644 tests/testcases/txAllowTrustAuthorizedToMaintainLiabilities.raw delete mode 100644 tests/testcases/txAllowTrustAuthorizedToMaintainLiabilities.txt delete mode 100644 tests/testcases/txAllowTrustUnauthorized.raw delete mode 100644 tests/testcases/txAllowTrustUnauthorized.txt delete mode 100644 tests/testcases/txBeginSponsoringFutureReserves.raw delete mode 100644 tests/testcases/txBeginSponsoringFutureReserves.txt delete mode 100644 tests/testcases/txBumpSequence.raw delete mode 100644 tests/testcases/txBumpSequence.txt delete mode 100644 tests/testcases/txChangeOffer.raw delete mode 100644 tests/testcases/txChangeOffer.txt delete mode 100644 tests/testcases/txChangeTrust.raw delete mode 100644 tests/testcases/txChangeTrust.txt delete mode 100644 tests/testcases/txChangeTrustLiquidityPoolAsset.raw delete mode 100644 tests/testcases/txChangeTrustLiquidityPoolAsset.txt delete mode 100644 tests/testcases/txClaimClaimableBalance.raw delete mode 100644 tests/testcases/txClaimClaimableBalance.txt delete mode 100644 tests/testcases/txClawback.raw delete mode 100644 tests/testcases/txClawback.txt delete mode 100644 tests/testcases/txClawbackClaimableBalance.raw delete mode 100644 tests/testcases/txClawbackClaimableBalance.txt delete mode 100644 tests/testcases/txClawbackMuxedFrom.raw delete mode 100644 tests/testcases/txClawbackMuxedFrom.txt delete mode 100644 tests/testcases/txCondExtraSigners.raw delete mode 100644 tests/testcases/txCondExtraSigners.txt delete mode 100644 tests/testcases/txCondFull.raw delete mode 100644 tests/testcases/txCondFull.txt delete mode 100644 tests/testcases/txCondLedgerBounds.raw delete mode 100644 tests/testcases/txCondLedgerBounds.txt delete mode 100644 tests/testcases/txCondLedgerBoundsMaxIsZero.raw delete mode 100644 tests/testcases/txCondLedgerBoundsMaxIsZero.txt delete mode 100644 tests/testcases/txCondLedgerBoundsMinIsZero.raw delete mode 100644 tests/testcases/txCondLedgerBoundsMinIsZero.txt delete mode 100644 tests/testcases/txCondMinSeqAge.raw delete mode 100644 tests/testcases/txCondMinSeqAge.txt delete mode 100644 tests/testcases/txCondMinSeqLedgerGap.raw delete mode 100644 tests/testcases/txCondMinSeqLedgerGap.txt delete mode 100644 tests/testcases/txCondMinSeqNum.raw delete mode 100644 tests/testcases/txCondMinSeqNum.txt delete mode 100644 tests/testcases/txCondTimeBounds.raw delete mode 100644 tests/testcases/txCondTimeBounds.txt delete mode 100644 tests/testcases/txCondTimeBoundsMaxIsZero.raw delete mode 100644 tests/testcases/txCondTimeBoundsMaxIsZero.txt delete mode 100644 tests/testcases/txCondTimeBoundsMinIsZero.raw delete mode 100644 tests/testcases/txCondTimeBoundsMinIsZero.txt delete mode 100644 tests/testcases/txCondWithoutLedgerBounds.raw delete mode 100644 tests/testcases/txCondWithoutLedgerBounds.txt delete mode 100644 tests/testcases/txCreateAccount.raw delete mode 100644 tests/testcases/txCreateAccount.txt delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateAnd.raw delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateAnd.txt delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateBeforeAbs.raw delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateBeforeAbs.txt delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateBeforeRel.raw delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateBeforeRel.txt delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateMultiClaimant.raw delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateMultiClaimant.txt delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateNot.raw delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateNot.txt delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateOr.raw delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateOr.txt delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateUnconditional.raw delete mode 100644 tests/testcases/txCreateClaimableBalancePredicateUnconditional.txt delete mode 100644 tests/testcases/txCreateOffer.raw delete mode 100644 tests/testcases/txCreateOffer.txt delete mode 100644 tests/testcases/txCreateOffer2.raw delete mode 100644 tests/testcases/txCreateOffer2.txt delete mode 100644 tests/testcases/txCustomAsset12.raw delete mode 100644 tests/testcases/txCustomAsset12.txt delete mode 100644 tests/testcases/txCustomAsset4.raw delete mode 100644 tests/testcases/txCustomAsset4.txt delete mode 100644 tests/testcases/txEndSponsoringFutureReserves.raw delete mode 100644 tests/testcases/txEndSponsoringFutureReserves.txt delete mode 100644 tests/testcases/txInflation.raw delete mode 100644 tests/testcases/txInflation.txt delete mode 100644 tests/testcases/txLiquidityPoolDeposit.raw delete mode 100644 tests/testcases/txLiquidityPoolDeposit.txt delete mode 100644 tests/testcases/txLiquidityPoolWithdraw.raw delete mode 100644 tests/testcases/txLiquidityPoolWithdraw.txt delete mode 100644 tests/testcases/txManageBuyOffer.raw delete mode 100644 tests/testcases/txManageBuyOffer.txt delete mode 100644 tests/testcases/txMemoHash.raw delete mode 100644 tests/testcases/txMemoHash.txt delete mode 100644 tests/testcases/txMemoId.raw delete mode 100644 tests/testcases/txMemoId.txt delete mode 100644 tests/testcases/txMemoText.raw delete mode 100644 tests/testcases/txMemoText.txt delete mode 100644 tests/testcases/txMultiOp.raw delete mode 100644 tests/testcases/txMultiOp.txt delete mode 100644 tests/testcases/txMultiOpWithSource.raw delete mode 100644 tests/testcases/txMultiOpWithSource.txt delete mode 100644 tests/testcases/txOpSource.raw delete mode 100644 tests/testcases/txOpSource.txt delete mode 100644 tests/testcases/txOpSourceMuxedDestination.raw delete mode 100644 tests/testcases/txOpSourceMuxedDestination.txt delete mode 100644 tests/testcases/txPassiveOffer.raw delete mode 100644 tests/testcases/txPassiveOffer.txt delete mode 100644 tests/testcases/txPathPaymentStrictReceive.raw delete mode 100644 tests/testcases/txPathPaymentStrictReceive.txt delete mode 100644 tests/testcases/txPathPaymentStrictReceiveEmptyPath.raw delete mode 100644 tests/testcases/txPathPaymentStrictReceiveEmptyPath.txt delete mode 100644 tests/testcases/txPathPaymentStrictReceiveMuxedDestination.raw delete mode 100644 tests/testcases/txPathPaymentStrictReceiveMuxedDestination.txt delete mode 100644 tests/testcases/txPathPaymentStrictSend.raw delete mode 100644 tests/testcases/txPathPaymentStrictSend.txt delete mode 100644 tests/testcases/txPathPaymentStrictSendEmptyPath.raw delete mode 100644 tests/testcases/txPathPaymentStrictSendEmptyPath.txt delete mode 100644 tests/testcases/txPathPaymentStrictSendMuxedDestination.raw delete mode 100644 tests/testcases/txPathPaymentStrictSendMuxedDestination.txt delete mode 100644 tests/testcases/txPaymentMuxedDestination.raw delete mode 100644 tests/testcases/txPaymentMuxedDestination.txt delete mode 100644 tests/testcases/txRemoveData.raw delete mode 100644 tests/testcases/txRemoveData.txt delete mode 100644 tests/testcases/txRemoveOffer.raw delete mode 100644 tests/testcases/txRemoveOffer.txt delete mode 100644 tests/testcases/txRemoveTrust.raw delete mode 100644 tests/testcases/txRemoveTrust.txt delete mode 100644 tests/testcases/txRemoveTrustLiquidityPoolAsset.raw delete mode 100644 tests/testcases/txRemoveTrustLiquidityPoolAsset.txt delete mode 100644 tests/testcases/txRevokeSponsorshipAccount.raw delete mode 100644 tests/testcases/txRevokeSponsorshipAccount.txt delete mode 100644 tests/testcases/txRevokeSponsorshipClaimableBalance.raw delete mode 100644 tests/testcases/txRevokeSponsorshipClaimableBalance.txt delete mode 100644 tests/testcases/txRevokeSponsorshipData.raw delete mode 100644 tests/testcases/txRevokeSponsorshipData.txt delete mode 100644 tests/testcases/txRevokeSponsorshipLiquidityPool.raw delete mode 100644 tests/testcases/txRevokeSponsorshipLiquidityPool.txt delete mode 100644 tests/testcases/txRevokeSponsorshipOffer.raw delete mode 100644 tests/testcases/txRevokeSponsorshipOffer.txt delete mode 100644 tests/testcases/txRevokeSponsorshipSignerEd25519PublicKey.raw delete mode 100644 tests/testcases/txRevokeSponsorshipSignerEd25519PublicKey.txt delete mode 100644 tests/testcases/txRevokeSponsorshipSignerHashX.raw delete mode 100644 tests/testcases/txRevokeSponsorshipSignerHashX.txt delete mode 100644 tests/testcases/txRevokeSponsorshipSignerPreAuth.raw delete mode 100644 tests/testcases/txRevokeSponsorshipSignerPreAuth.txt delete mode 100644 tests/testcases/txRevokeSponsorshipTrustLine.raw delete mode 100644 tests/testcases/txRevokeSponsorshipTrustLine.txt delete mode 100644 tests/testcases/txRevokeSponsorshipTrustLineLiquidityPoolID.raw delete mode 100644 tests/testcases/txRevokeSponsorshipTrustLineLiquidityPoolID.txt delete mode 100644 tests/testcases/txSetAllOptions.raw delete mode 100644 tests/testcases/txSetAllOptions.txt delete mode 100644 tests/testcases/txSetData.raw delete mode 100644 tests/testcases/txSetData.txt delete mode 100644 tests/testcases/txSetOptionsEmptyBody.raw delete mode 100644 tests/testcases/txSetOptionsEmptyBody.txt delete mode 100644 tests/testcases/txSetOptionsNoSigner.raw delete mode 100644 tests/testcases/txSetOptionsNoSigner.txt delete mode 100644 tests/testcases/txSetOptionsRemoveHomeDomain.raw delete mode 100644 tests/testcases/txSetOptionsRemoveHomeDomain.txt delete mode 100644 tests/testcases/txSetSomeOptions.raw delete mode 100644 tests/testcases/txSetSomeOptions.txt delete mode 100644 tests/testcases/txSetTrustLineFlags.raw delete mode 100644 tests/testcases/txSetTrustLineFlags.txt delete mode 100644 tests/testcases/txSimple.raw delete mode 100644 tests/testcases/txSimple.txt delete mode 100644 tests/testcases/txSimpleMuxedSource.raw delete mode 100644 tests/testcases/txSimpleMuxedSource.txt delete mode 100644 tests/testcases/txSourceEqualOpSourceEqualSigner.raw delete mode 100644 tests/testcases/txSourceEqualOpSourceEqualSigner.txt delete mode 100644 tests/testcases/txSourceEqualSigner.raw delete mode 100644 tests/testcases/txSourceEqualSigner.txt delete mode 100644 tests/testcases/txSourceMuxedAccountEqualSigner.raw delete mode 100644 tests/testcases/txSourceMuxedAccountEqualSigner.txt create mode 100644 tests_common_js/package-lock.json create mode 100644 tests_common_js/package.json create mode 100644 tests_common_js/src/index.ts create mode 100644 tests_common_js/tsconfig.json create mode 100644 tests_generate_binary/index.js create mode 100644 tests_generate_binary/package-lock.json create mode 100644 tests_generate_binary/package.json create mode 100644 tests_unit/CMakeLists.txt create mode 100644 tests_unit/README.md create mode 100644 tests_unit/gen_coverage.sh create mode 100644 tests_unit/mock_includes/bolos_target.h rename {tests/include => tests_unit/mock_includes}/cx.h (100%) create mode 100644 tests_unit/mock_includes/os.h create mode 100644 tests_unit/mock_includes/ux.h create mode 100644 tests_unit/test_swap.c create mode 100644 tests_unit/test_tx_formatter.c create mode 100644 tests_unit/test_tx_parser.c create mode 100644 tests_unit/test_utils.c create mode 100644 tests_unit/testcases/feeBumpTx.txt create mode 100644 tests_unit/testcases/feeBumpTxOmitFeeSourceEqualSigner.txt create mode 100644 tests_unit/testcases/feeBumpTxOmitFeeSourceNotEqualSigner.txt create mode 100644 tests_unit/testcases/feeBumpTxOmitMuxedFeeSourceEqualSigner.txt create mode 100644 tests_unit/testcases/feeBumpTxWithMuxedFeeSource.txt create mode 100644 tests_unit/testcases/opAccountMerge.txt create mode 100644 tests_unit/testcases/opAccountMergeWithMuxedDestination.txt create mode 100644 tests_unit/testcases/opAllowTrustAuthorize.txt create mode 100644 tests_unit/testcases/opAllowTrustAuthorizeToMaintainLiabilities.txt create mode 100644 tests_unit/testcases/opAllowTrustDeauthorize.txt create mode 100644 tests_unit/testcases/opBeginSponsoringFutureReserves.txt create mode 100644 tests_unit/testcases/opBumpSequence.txt create mode 100644 tests_unit/testcases/opChangeTrustAddTrustLine.txt create mode 100644 tests_unit/testcases/opChangeTrustRemoveTrustLine.txt create mode 100644 tests_unit/testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.txt create mode 100644 tests_unit/testcases/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.txt create mode 100644 tests_unit/testcases/opClaimClaimableBalance.txt create mode 100644 tests_unit/testcases/opClawback.txt create mode 100644 tests_unit/testcases/opClawbackClaimableBalance.txt create mode 100644 tests_unit/testcases/opClawbackWithMuxedFrom.txt create mode 100644 tests_unit/testcases/opCreateAccount.txt create mode 100644 tests_unit/testcases/opCreateClaimableBalance.txt create mode 100644 tests_unit/testcases/opCreatePassiveSellOffer.txt create mode 100644 tests_unit/testcases/opEndSponsoringFutureReserves.txt create mode 100644 tests_unit/testcases/opInflation.txt create mode 100644 tests_unit/testcases/opLiquidityPoolDeposit.txt create mode 100644 tests_unit/testcases/opLiquidityPoolWithdraw.txt create mode 100644 tests_unit/testcases/opManageBuyOfferCreate.txt create mode 100644 tests_unit/testcases/opManageBuyOfferDelete.txt create mode 100644 tests_unit/testcases/opManageBuyOfferUpdate.txt create mode 100644 tests_unit/testcases/opManageDataAdd.txt create mode 100644 tests_unit/testcases/opManageDataAddWithUnprintableData.txt create mode 100644 tests_unit/testcases/opManageDataRemove.txt create mode 100644 tests_unit/testcases/opManageSellOfferCreate.txt create mode 100644 tests_unit/testcases/opManageSellOfferDelete.txt create mode 100644 tests_unit/testcases/opManageSellOfferUpdate.txt create mode 100644 tests_unit/testcases/opPathPaymentStrictReceive.txt create mode 100644 tests_unit/testcases/opPathPaymentStrictReceiveWithEmptyPath.txt create mode 100644 tests_unit/testcases/opPathPaymentStrictReceiveWithMuxedDestination.txt create mode 100644 tests_unit/testcases/opPathPaymentStrictSend.txt create mode 100644 tests_unit/testcases/opPathPaymentStrictSendWithEmptyPath.txt create mode 100644 tests_unit/testcases/opPathPaymentStrictSendWithMuxedDestination.txt create mode 100644 tests_unit/testcases/opPaymentAssetAlphanum12.txt create mode 100644 tests_unit/testcases/opPaymentAssetAlphanum4.txt create mode 100644 tests_unit/testcases/opPaymentAssetNative.txt create mode 100644 tests_unit/testcases/opPaymentWithMuxedDestination.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipAccount.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipClaimableBalance.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipData.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipEd25519PublicKeySigner.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipHashXSigner.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipLiquidityPool.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipOffer.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipPreAuthTxSigner.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipTrustLineWithAsset.txt create mode 100644 tests_unit/testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.txt create mode 100644 tests_unit/testcases/opSetOptions.txt create mode 100644 tests_unit/testcases/opSetOptionsAddHashXSigner.txt create mode 100644 tests_unit/testcases/opSetOptionsAddPreAuthTxSigner.txt create mode 100644 tests_unit/testcases/opSetOptionsAddPublicKeySigner.txt create mode 100644 tests_unit/testcases/opSetOptionsWithEmptyBody.txt create mode 100644 tests_unit/testcases/opSetTrustLineFlagsAuthorized.txt create mode 100644 tests_unit/testcases/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.txt create mode 100644 tests_unit/testcases/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.txt create mode 100644 tests_unit/testcases/opSetTrustLineFlagsUnauthorized.txt create mode 100644 tests_unit/testcases/opSourceOmitOpSourceEqualSignerNotEqualTxSource.txt create mode 100644 tests_unit/testcases/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.txt create mode 100644 tests_unit/testcases/opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner.txt create mode 100644 tests_unit/testcases/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.txt create mode 100644 tests_unit/testcases/opSourceOmitTxSourceEqualOpSourceEqualSigner.txt create mode 100644 tests_unit/testcases/opSourceOmitTxSourceEqualOpSourceNotEqualSigner.txt create mode 100644 tests_unit/testcases/opSourceOmitTxSourceEqualSignerNotEqualOpSource.txt create mode 100644 tests_unit/testcases/opWithEmptySource.txt create mode 100644 tests_unit/testcases/opWithMuxedSource.txt create mode 100644 tests_unit/testcases/txCondExtraSignersWithOneSigner.txt create mode 100644 tests_unit/testcases/txCondExtraSignersWithTwoSigners.txt create mode 100644 tests_unit/testcases/txCondIsNone.txt create mode 100644 tests_unit/testcases/txCondLedgerBounds.txt create mode 100644 tests_unit/testcases/txCondLedgerBoundsAreZero.txt create mode 100644 tests_unit/testcases/txCondLedgerBoundsMaxIsZero.txt create mode 100644 tests_unit/testcases/txCondLedgerBoundsMinIsZero.txt create mode 100644 tests_unit/testcases/txCondMinAccountSequence.txt create mode 100644 tests_unit/testcases/txCondMinAccountSequenceAge.txt create mode 100644 tests_unit/testcases/txCondMinAccountSequenceLedgerGap.txt create mode 100644 tests_unit/testcases/txCondTimeBounds.txt create mode 100644 tests_unit/testcases/txCondTimeBoundsAreZero.txt create mode 100644 tests_unit/testcases/txCondTimeBoundsIsNone.txt create mode 100644 tests_unit/testcases/txCondTimeBoundsMaxIsZero.txt create mode 100644 tests_unit/testcases/txCondTimeBoundsMinIsZero.txt create mode 100644 tests_unit/testcases/txCondWithAllItems.txt create mode 100644 tests_unit/testcases/txCustomBaseFee.txt create mode 100644 tests_unit/testcases/txMemoHash.txt create mode 100644 tests_unit/testcases/txMemoId.txt create mode 100644 tests_unit/testcases/txMemoNone.txt create mode 100644 tests_unit/testcases/txMemoReturnHash.txt create mode 100644 tests_unit/testcases/txMemoText.txt create mode 100644 tests_unit/testcases/txMemoTextUnprintable.txt create mode 100644 tests_unit/testcases/txMultiOperations.txt create mode 100644 tests_unit/testcases/txNetworkCustom.txt create mode 100644 tests_unit/testcases/txNetworkPublic.txt create mode 100644 tests_unit/testcases/txNetworkTestnet.txt create mode 100644 tests_unit/testcases/txSourceOmitMuxedSourceEqualSigner.txt create mode 100644 tests_unit/testcases/txSourceOmitSourceEqualSigner.txt create mode 100644 tests_unit/testcases/txSourceOmitSourceNotEqualSigner.txt create mode 100644 tests_unit/testcases/txWithMuxedSource.txt create mode 100644 tests_zemu/elfs/.gitkeep create mode 100644 tests_zemu/jest.config.js create mode 100644 tests_zemu/jest.js create mode 100644 tests_zemu/package-lock.json create mode 100644 tests_zemu/package.json create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00000.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00001.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00002.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00003.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00004.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00005.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00006.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00007.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00008.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00009.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00010.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00011.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00012.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00013.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00014.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00015.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00016.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00017.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00018.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00019.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00020.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00021.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00022.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00023.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00024.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00025.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00026.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00027.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00028.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00029.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00030.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00031.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00032.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00033.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00018.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00019.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00020.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00018.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00019.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00020.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00021.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00022.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00023.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00018.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00019.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00020.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00021.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00022.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00023.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00024.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00000.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00001.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00002.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00003.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00004.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00005.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00006.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00007.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00008.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00009.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00010.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00011.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00012.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00013.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00014.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00015.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00016.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00017.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00018.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00019.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00020.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00021.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00022.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00023.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00024.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00025.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00026.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00027.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00028.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00029.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00030.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00031.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00032.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00033.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00034.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-reject/00035.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00000.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00001.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00002.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00003.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00004.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00005.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00006.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00007.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00008.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00009.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00010.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00011.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00012.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00013.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00014.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00015.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00016.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00017.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00018.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00019.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00020.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00021.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00022.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00023.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00024.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00025.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00026.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00027.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00028.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00029.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00030.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00031.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00032.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00033.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00034.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00035.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00036.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00037.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00038.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00000.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00001.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00002.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00003.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00004.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00005.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00006.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00007.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00008.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00009.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00010.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00011.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00012.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00013.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00014.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00015.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00016.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00017.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00018.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00019.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00020.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00021.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00022.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00023.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00024.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00025.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00026.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00027.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00028.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00029.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00030.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00031.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00032.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00033.png create mode 100644 tests_zemu/snapshots/s-fee-bump-tx/00034.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00000.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00001.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00002.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00003.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00004.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00005.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00006.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00007.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00008.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00009.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00010.png create mode 100644 tests_zemu/snapshots/s-hash-signing-approve/00011.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00000.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00001.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00002.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00003.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00004.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00005.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00006.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00007.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00008.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00009.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00010.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00011.png create mode 100644 tests_zemu/snapshots/s-hash-signing-reject/00012.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00013.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00014.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00015.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00016.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00017.png create mode 100644 tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00018.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00000.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00001.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00002.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00003.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00004.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00005.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00006.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00007.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00008.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00009.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00010.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00011.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00012.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00013.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00014.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00015.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00016.png create mode 100644 tests_zemu/snapshots/s-op-account-merge/00017.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00000.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00001.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00002.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00003.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00004.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00005.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00006.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00007.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00008.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00009.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00010.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00011.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00012.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00013.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00014.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00015.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00016.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00017.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00000.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00001.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00002.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00003.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00004.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00005.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00006.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00007.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00008.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00009.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00010.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00011.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00012.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00013.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00014.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-authorize/00015.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00000.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00001.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00002.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00003.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00004.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00005.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00006.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00007.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00008.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00009.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00010.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00011.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00012.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00013.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00014.png create mode 100644 tests_zemu/snapshots/s-op-allow-trust-deauthorize/00015.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00000.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00001.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00002.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00003.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00004.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00005.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00006.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00007.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00008.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00009.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00010.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00011.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00012.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00013.png create mode 100644 tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00014.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00000.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00001.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00002.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00003.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00004.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00005.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00006.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00007.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00008.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00009.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00010.png create mode 100644 tests_zemu/snapshots/s-op-bump-sequence/00011.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00000.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00001.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00002.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00003.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00004.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00005.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00006.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00007.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00008.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00009.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00010.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-add-trust-line/00011.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00000.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00001.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00002.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00003.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00004.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00005.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00006.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00007.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00008.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00009.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00000.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00004.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00006.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00007.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00008.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00009.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00011.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00012.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00014.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00000.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00004.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00006.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00007.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00008.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00009.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00011.png create mode 100644 tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/s-op-claim-claimable-balance/00012.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00012.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00013.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00014.png create mode 100644 tests_zemu/snapshots/s-op-clawback-claimable-balance/00015.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00000.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00001.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00002.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00003.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00004.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00005.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00006.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00007.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00008.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00009.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00010.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00011.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00012.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00013.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00014.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00015.png create mode 100644 tests_zemu/snapshots/s-op-clawback-with-muxed-from/00016.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00000.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00001.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00002.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00003.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00004.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00005.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00006.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00007.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00008.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00009.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00010.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00011.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00012.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00013.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00014.png create mode 100644 tests_zemu/snapshots/s-op-clawback/00015.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00000.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00001.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00002.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00003.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00004.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00005.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00006.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00007.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00008.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00009.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00010.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00011.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00012.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00013.png create mode 100644 tests_zemu/snapshots/s-op-create-account/00014.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00012.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00013.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00014.png create mode 100644 tests_zemu/snapshots/s-op-create-claimable-balance/00015.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00000.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00001.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00002.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00003.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00004.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00005.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00006.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00007.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00008.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00009.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00010.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00011.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00012.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00013.png create mode 100644 tests_zemu/snapshots/s-op-create-passive-sell-offer/00014.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00000.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00001.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00002.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00003.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00004.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00005.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00006.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00007.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00008.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00009.png create mode 100644 tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00010.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00000.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00001.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00002.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00003.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00004.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00005.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00006.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00007.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00008.png create mode 100644 tests_zemu/snapshots/s-op-inflation/00009.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00000.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00001.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00002.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00003.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00004.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00005.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00006.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00007.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00008.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00009.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00010.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00011.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00012.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00013.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00014.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00015.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00016.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00017.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-deposit/00018.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00000.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00001.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00002.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00003.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00004.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00005.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00006.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00007.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00008.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00009.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00010.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00011.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00012.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00013.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00014.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00015.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00016.png create mode 100644 tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00017.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00010.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00011.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00012.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-create/00013.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-delete/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00010.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00011.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00012.png create mode 100644 tests_zemu/snapshots/s-op-manage-buy-offer-update/00013.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00010.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00011.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00012.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00013.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00010.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00011.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00012.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00013.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00014.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00015.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-add/00016.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00010.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00011.png create mode 100644 tests_zemu/snapshots/s-op-manage-data-remove/00012.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00010.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00011.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00012.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-create/00013.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-delete/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00000.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00001.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00002.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00003.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00004.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00005.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00006.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00007.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00008.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00009.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00010.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00011.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00012.png create mode 100644 tests_zemu/snapshots/s-op-manage-sell-offer-update/00013.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00000.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00001.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00002.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00003.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00004.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00005.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00006.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00007.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00008.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00009.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00010.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00011.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00012.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00013.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00014.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00013.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00014.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00015.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00000.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00001.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00002.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00003.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00004.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00005.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00006.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00007.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00008.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00009.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00010.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00011.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00012.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00013.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-receive/00014.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00000.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00001.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00002.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00003.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00004.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00005.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00006.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00007.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00008.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00009.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00010.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00011.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00012.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00013.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00014.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00015.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00013.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00014.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00015.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00016.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00000.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00001.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00002.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00003.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00004.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00005.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00006.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00007.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00008.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00009.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00010.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00011.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00012.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00013.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00014.png create mode 100644 tests_zemu/snapshots/s-op-path-payment-strict-send/00015.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00000.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00001.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00002.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00003.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00004.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00005.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00006.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00007.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00008.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00009.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00010.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00011.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00012.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00013.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00014.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00015.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum12/00016.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00000.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00001.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00002.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00003.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00004.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00005.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00006.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00007.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00008.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00009.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00010.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00011.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00012.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00013.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-alphanum4/00014.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00000.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00001.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00002.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00003.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00004.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00005.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00006.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00007.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00008.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00009.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00010.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00011.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00012.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00013.png create mode 100644 tests_zemu/snapshots/s-op-payment-asset-native/00014.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00013.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00014.png create mode 100644 tests_zemu/snapshots/s-op-payment-with-muxed-destination/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-account/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00016.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00016.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00017.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-data/00018.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00016.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00017.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00018.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00019.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00016.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00017.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00018.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00019.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00016.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00017.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00018.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00019.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00000.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00004.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00006.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00007.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00008.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00009.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00010.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00012.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00014.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00015.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00016.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00017.png create mode 100644 tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00018.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-with-empty-body/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00015.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00016.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00017.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00018.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00019.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00020.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00021.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00022.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00023.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00024.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00025.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00026.png create mode 100644 tests_zemu/snapshots/s-op-set-options/00027.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00016.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00017.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00018.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00019.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00020.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00021.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00016.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00017.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00018.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00019.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00020.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00021.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00015.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00016.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00017.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00018.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00019.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00020.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00021.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00015.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00016.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00017.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00018.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00019.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00020.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00021.png create mode 100644 tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00022.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00000.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00004.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00007.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00010.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00013.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00014.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00015.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00016.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00018.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00000.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00004.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00006.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00007.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00012.png create mode 100644 tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00013.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00000.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00001.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00002.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00003.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00004.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00005.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00006.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00007.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00008.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00009.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00010.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00011.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00012.png create mode 100644 tests_zemu/snapshots/s-op-with-empty-source/00013.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00000.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00001.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00002.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00003.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00004.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00005.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00006.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00007.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00008.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00009.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00010.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00011.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00012.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00013.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00014.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00015.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00016.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00017.png create mode 100644 tests_zemu/snapshots/s-op-with-muxed-source/00018.png create mode 100644 tests_zemu/snapshots/s-public-key-approve/00000.png create mode 100644 tests_zemu/snapshots/s-public-key-approve/00001.png create mode 100644 tests_zemu/snapshots/s-public-key-approve/00002.png create mode 100644 tests_zemu/snapshots/s-public-key-approve/00003.png create mode 100644 tests_zemu/snapshots/s-public-key-approve/00004.png create mode 100644 tests_zemu/snapshots/s-public-key-approve/00005.png create mode 100644 tests_zemu/snapshots/s-public-key-approve/00006.png create mode 100644 tests_zemu/snapshots/s-public-key-reject/00000.png create mode 100644 tests_zemu/snapshots/s-public-key-reject/00001.png create mode 100644 tests_zemu/snapshots/s-public-key-reject/00002.png create mode 100644 tests_zemu/snapshots/s-public-key-reject/00003.png create mode 100644 tests_zemu/snapshots/s-public-key-reject/00004.png create mode 100644 tests_zemu/snapshots/s-public-key-reject/00005.png create mode 100644 tests_zemu/snapshots/s-public-key-reject/00006.png create mode 100644 tests_zemu/snapshots/s-public-key-reject/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00014.png create mode 100644 tests_zemu/snapshots/s-tx-cond-is-none/00015.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-ledger-bounds/00014.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-min-account-sequence/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00014.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00015.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00016.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00017.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-time-bounds/00014.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00000.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00001.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00002.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00003.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00004.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00005.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00006.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00007.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00008.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00009.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00010.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00011.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00012.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00013.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00014.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00015.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00016.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00017.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00018.png create mode 100644 tests_zemu/snapshots/s-tx-cond-with-all-items/00019.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00000.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00001.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00002.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00003.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00004.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00005.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00006.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00007.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00008.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00009.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00010.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00011.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00012.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00013.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00014.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00015.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00016.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00017.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00018.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00019.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00020.png create mode 100644 tests_zemu/snapshots/s-tx-custom-base-fee/00021.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00000.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00001.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00002.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00003.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00004.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00005.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00006.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00007.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00008.png create mode 100644 tests_zemu/snapshots/s-tx-hide-sequence/00009.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00000.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00001.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00002.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00003.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00004.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00005.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00006.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00007.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00008.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00009.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00010.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00011.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00012.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00013.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00014.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00015.png create mode 100644 tests_zemu/snapshots/s-tx-memo-hash/00016.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00000.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00001.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00002.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00003.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00004.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00005.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00006.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00007.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00008.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00009.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00010.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00011.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00012.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00013.png create mode 100644 tests_zemu/snapshots/s-tx-memo-id/00014.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00000.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00001.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00002.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00003.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00004.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00005.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00006.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00007.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00008.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00009.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00010.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00011.png create mode 100644 tests_zemu/snapshots/s-tx-memo-none/00012.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00000.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00001.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00002.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00003.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00004.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00005.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00006.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00007.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00008.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00009.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00010.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00011.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00012.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00013.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00014.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00015.png create mode 100644 tests_zemu/snapshots/s-tx-memo-return-hash/00016.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00000.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00001.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00002.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00003.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00004.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00005.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00006.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00007.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00008.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00009.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00010.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00011.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00012.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text-unprintable/00013.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00000.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00001.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00002.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00003.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00004.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00005.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00006.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00007.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00008.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00009.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00010.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00011.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00012.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00013.png create mode 100644 tests_zemu/snapshots/s-tx-memo-text/00014.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00000.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00001.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00002.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00003.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00004.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00005.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00006.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00007.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00008.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00009.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00010.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00011.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00012.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00013.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00014.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00015.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00016.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00017.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00018.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00019.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00020.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00021.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00022.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00023.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00024.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00025.png create mode 100644 tests_zemu/snapshots/s-tx-multi-operations/00026.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00000.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00001.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00002.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00003.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00004.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00005.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00006.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00007.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00008.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00009.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00010.png create mode 100644 tests_zemu/snapshots/s-tx-network-custom/00011.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00000.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00001.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00002.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00003.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00004.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00005.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00006.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00007.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00008.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00009.png create mode 100644 tests_zemu/snapshots/s-tx-network-public/00010.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00000.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00001.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00002.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00003.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00004.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00005.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00006.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00007.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00008.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00009.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00010.png create mode 100644 tests_zemu/snapshots/s-tx-network-testnet/00011.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00000.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00001.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00002.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00003.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00004.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00005.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00006.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00007.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00008.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00009.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00010.png create mode 100644 tests_zemu/snapshots/s-tx-reject/00011.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00000.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00001.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00002.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00003.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00004.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00005.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00006.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00007.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00008.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00009.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00010.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00011.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00012.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00013.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00014.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00015.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00016.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00017.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00018.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00019.png create mode 100644 tests_zemu/snapshots/s-tx-with-muxed-source/00020.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00000.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00001.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00002.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00003.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00004.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00005.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00006.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00007.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00008.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00009.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00010.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00011.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00012.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00013.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00014.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00015.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00016.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00017.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00018.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00019.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00020.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00021.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00022.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00023.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00000.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00001.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00002.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00003.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00004.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00005.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00006.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00007.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00008.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00009.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00010.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00011.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00012.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00013.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00014.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00015.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00016.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00017.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00018.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00019.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00020.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00021.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00022.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00023.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00024.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-reject/00025.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00000.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00001.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00002.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00003.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00004.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00005.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00006.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00007.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00008.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00009.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00010.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00011.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00012.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00013.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00014.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00015.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00016.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00017.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00018.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00019.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00020.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00021.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00022.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00023.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00024.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00025.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00000.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00001.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00002.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00003.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00004.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00005.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00006.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00007.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00008.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00009.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00010.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00011.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00012.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00013.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00014.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00015.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00016.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00017.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00018.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00019.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00020.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00021.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00022.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00023.png create mode 100644 tests_zemu/snapshots/sp-fee-bump-tx/00024.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-approve/00000.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-approve/00001.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-approve/00002.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-approve/00003.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-approve/00004.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-approve/00005.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-approve/00006.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-approve/00007.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00000.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00001.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00002.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00003.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00004.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00005.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00006.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00007.png create mode 100644 tests_zemu/snapshots/sp-hash-signing-reject/00008.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00013.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00000.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00001.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00002.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00003.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00004.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00005.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00006.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00007.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00008.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00009.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00010.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00011.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00012.png create mode 100644 tests_zemu/snapshots/sp-op-account-merge/00013.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00000.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00001.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00002.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00003.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00004.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00005.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00006.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00007.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00008.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00009.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00010.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00011.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00012.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00013.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00000.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00001.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00002.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00003.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00004.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00005.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00006.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00007.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00008.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00009.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00010.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00011.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00012.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-authorize/00013.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00000.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00001.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00002.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00003.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00004.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00005.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00006.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00007.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00008.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00009.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00010.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00011.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00012.png create mode 100644 tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00013.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00000.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00001.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00002.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00003.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00004.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00005.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00006.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00007.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00008.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00009.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00010.png create mode 100644 tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00011.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00000.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00001.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00002.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00003.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00004.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00005.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00006.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00007.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00008.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00009.png create mode 100644 tests_zemu/snapshots/sp-op-bump-sequence/00010.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00000.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00001.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00002.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00003.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00004.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00005.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00006.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00007.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00008.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00009.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00010.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00000.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00001.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00002.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00003.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00004.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00005.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00006.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00007.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00008.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00009.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00000.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00004.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00006.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00007.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00008.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00009.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00011.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00012.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00000.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00004.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00006.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00007.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00008.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00009.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00011.png create mode 100644 tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/sp-op-claim-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00000.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00001.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00002.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00003.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00004.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00005.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00006.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00007.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00008.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00009.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00010.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00011.png create mode 100644 tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00012.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00000.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00001.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00002.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00003.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00004.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00005.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00006.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00007.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00008.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00009.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00010.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00011.png create mode 100644 tests_zemu/snapshots/sp-op-clawback/00012.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00000.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00001.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00002.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00003.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00004.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00005.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00006.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00007.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00008.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00009.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00010.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00011.png create mode 100644 tests_zemu/snapshots/sp-op-create-account/00012.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/sp-op-create-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-create-passive-sell-offer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00000.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00001.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00002.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00003.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00004.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00005.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00006.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00007.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00008.png create mode 100644 tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00009.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00000.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00001.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00002.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00003.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00004.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00005.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00006.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00007.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00008.png create mode 100644 tests_zemu/snapshots/sp-op-inflation/00009.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00000.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00001.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00002.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00003.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00004.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00005.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00006.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00007.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00008.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00009.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00010.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00011.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00012.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00013.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00014.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00015.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00000.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00001.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00002.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00003.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00004.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00005.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00006.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00007.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00008.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00009.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00010.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00011.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00012.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00013.png create mode 100644 tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00014.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00010.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00011.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-create/00012.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00010.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00011.png create mode 100644 tests_zemu/snapshots/sp-op-manage-buy-offer-update/00012.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00010.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00011.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00010.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00011.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-add/00012.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-data-remove/00010.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00010.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00011.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-create/00012.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00000.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00001.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00002.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00003.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00004.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00005.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00006.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00007.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00008.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00009.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00010.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00011.png create mode 100644 tests_zemu/snapshots/sp-op-manage-sell-offer-update/00012.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00000.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00001.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00002.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00003.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00004.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00005.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00006.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00007.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00008.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00009.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00010.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00011.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00012.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00000.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00001.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00002.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00003.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00004.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00005.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00006.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00007.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00008.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00009.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00010.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00011.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-receive/00012.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00000.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00001.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00002.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00003.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00004.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00005.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00006.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00007.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00008.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00009.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00010.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00011.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00012.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00000.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00001.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00002.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00003.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00004.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00005.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00006.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00007.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00008.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00009.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00010.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00011.png create mode 100644 tests_zemu/snapshots/sp-op-path-payment-strict-send/00012.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00000.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00001.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00002.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00003.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00004.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00005.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00006.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00007.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00008.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00009.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00010.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00011.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00012.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00000.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00001.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00002.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00003.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00004.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00005.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00006.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00007.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00008.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00009.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00010.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00011.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00000.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00001.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00002.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00003.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00004.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00005.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00006.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00007.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00008.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00009.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00010.png create mode 100644 tests_zemu/snapshots/sp-op-payment-asset-native/00011.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00012.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00013.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00014.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00014.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00014.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00012.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00000.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00004.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00006.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00007.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00008.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00009.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00010.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00012.png create mode 100644 tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-with-empty-body/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00014.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00015.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00016.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00017.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00018.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00019.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00020.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00021.png create mode 100644 tests_zemu/snapshots/sp-op-set-options/00022.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00014.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00014.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00015.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00013.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00014.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00015.png create mode 100644 tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00016.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00000.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00004.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00007.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00010.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00000.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00004.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00006.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00007.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png create mode 100644 tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00000.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00001.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00002.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00003.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00004.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00005.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00006.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00007.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00008.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00009.png create mode 100644 tests_zemu/snapshots/sp-op-with-empty-source/00010.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00000.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00001.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00002.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00003.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00004.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00005.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00006.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00007.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00008.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00009.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00010.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00011.png create mode 100644 tests_zemu/snapshots/sp-op-with-muxed-source/00012.png create mode 100644 tests_zemu/snapshots/sp-public-key-approve/00000.png create mode 100644 tests_zemu/snapshots/sp-public-key-approve/00001.png create mode 100644 tests_zemu/snapshots/sp-public-key-approve/00002.png create mode 100644 tests_zemu/snapshots/sp-public-key-approve/00003.png create mode 100644 tests_zemu/snapshots/sp-public-key-approve/00004.png create mode 100644 tests_zemu/snapshots/sp-public-key-reject/00000.png create mode 100644 tests_zemu/snapshots/sp-public-key-reject/00001.png create mode 100644 tests_zemu/snapshots/sp-public-key-reject/00002.png create mode 100644 tests_zemu/snapshots/sp-public-key-reject/00003.png create mode 100644 tests_zemu/snapshots/sp-public-key-reject/00004.png create mode 100644 tests_zemu/snapshots/sp-public-key-reject/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-is-none/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00013.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-time-bounds/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00013.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00014.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00015.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00016.png create mode 100644 tests_zemu/snapshots/sp-tx-cond-with-all-items/00017.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00013.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00014.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00015.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00016.png create mode 100644 tests_zemu/snapshots/sp-tx-custom-base-fee/00017.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-hide-sequence/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-hash/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-id/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-none/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-return-hash/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text-unprintable/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-memo-text/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00013.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00014.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00015.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00016.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00017.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00018.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00019.png create mode 100644 tests_zemu/snapshots/sp-tx-multi-operations/00020.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-network-custom/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-network-public/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-network-testnet/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-reject/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00000.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00001.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00002.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00003.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00004.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00005.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00006.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00007.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00008.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00009.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00010.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00011.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00012.png create mode 100644 tests_zemu/snapshots/sp-tx-with-muxed-source/00013.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00000.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00001.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00002.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00003.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00004.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00005.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00006.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00007.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00008.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00009.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00010.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00011.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00012.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00013.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00014.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00015.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00016.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00017.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00018.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00019.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00020.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00021.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00022.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00023.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00000.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00001.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00002.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00003.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00004.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00005.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00006.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00007.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00008.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00009.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00010.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00011.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00012.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00013.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00014.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00015.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00016.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00017.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00018.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00019.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00020.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00021.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00022.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00023.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00024.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-reject/00025.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00000.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00001.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00002.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00003.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00004.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00005.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00006.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00007.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00008.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00009.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00010.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00011.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00012.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00013.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00014.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00015.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00016.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00017.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00018.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00019.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00020.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00021.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00022.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00023.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00024.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00025.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00000.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00001.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00002.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00003.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00004.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00005.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00006.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00007.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00008.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00009.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00010.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00011.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00012.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00013.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00014.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00015.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00016.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00017.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00018.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00019.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00020.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00021.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00022.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00023.png create mode 100644 tests_zemu/snapshots/x-fee-bump-tx/00024.png create mode 100644 tests_zemu/snapshots/x-hash-signing-approve/00000.png create mode 100644 tests_zemu/snapshots/x-hash-signing-approve/00001.png create mode 100644 tests_zemu/snapshots/x-hash-signing-approve/00002.png create mode 100644 tests_zemu/snapshots/x-hash-signing-approve/00003.png create mode 100644 tests_zemu/snapshots/x-hash-signing-approve/00004.png create mode 100644 tests_zemu/snapshots/x-hash-signing-approve/00005.png create mode 100644 tests_zemu/snapshots/x-hash-signing-approve/00006.png create mode 100644 tests_zemu/snapshots/x-hash-signing-approve/00007.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00000.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00001.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00002.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00003.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00004.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00005.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00006.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00007.png create mode 100644 tests_zemu/snapshots/x-hash-signing-reject/00008.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00013.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00000.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00001.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00002.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00003.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00004.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00005.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00006.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00007.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00008.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00009.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00010.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00011.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00012.png create mode 100644 tests_zemu/snapshots/x-op-account-merge/00013.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00000.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00001.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00002.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00003.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00004.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00005.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00006.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00007.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00008.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00009.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00010.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00011.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00012.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00013.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00000.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00001.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00002.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00003.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00004.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00005.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00006.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00007.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00008.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00009.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00010.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00011.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00012.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-authorize/00013.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00000.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00001.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00002.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00003.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00004.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00005.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00006.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00007.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00008.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00009.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00010.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00011.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00012.png create mode 100644 tests_zemu/snapshots/x-op-allow-trust-deauthorize/00013.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00000.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00001.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00002.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00003.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00004.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00005.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00006.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00007.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00008.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00009.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00010.png create mode 100644 tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00011.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00000.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00001.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00002.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00003.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00004.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00005.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00006.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00007.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00008.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00009.png create mode 100644 tests_zemu/snapshots/x-op-bump-sequence/00010.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00000.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00001.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00002.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00003.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00004.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00005.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00006.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00007.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00008.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00009.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-add-trust-line/00010.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00000.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00001.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00002.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00003.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00004.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00005.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00006.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00007.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00008.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00009.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00000.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00004.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00006.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00007.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00008.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00009.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00011.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00012.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00000.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00004.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00006.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00007.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00008.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00009.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00011.png create mode 100644 tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/x-op-claim-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/x-op-clawback-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00000.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00001.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00002.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00003.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00004.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00005.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00006.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00007.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00008.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00009.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00010.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00011.png create mode 100644 tests_zemu/snapshots/x-op-clawback-with-muxed-from/00012.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00000.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00001.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00002.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00003.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00004.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00005.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00006.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00007.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00008.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00009.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00010.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00011.png create mode 100644 tests_zemu/snapshots/x-op-clawback/00012.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00000.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00001.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00002.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00003.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00004.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00005.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00006.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00007.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00008.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00009.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00010.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00011.png create mode 100644 tests_zemu/snapshots/x-op-create-account/00012.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/x-op-create-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00000.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00001.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00002.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00003.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00004.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00005.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00006.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00007.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00008.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00009.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00010.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00011.png create mode 100644 tests_zemu/snapshots/x-op-create-passive-sell-offer/00012.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00000.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00001.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00002.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00003.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00004.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00005.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00006.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00007.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00008.png create mode 100644 tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00009.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00000.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00001.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00002.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00003.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00004.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00005.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00006.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00007.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00008.png create mode 100644 tests_zemu/snapshots/x-op-inflation/00009.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00000.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00001.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00002.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00003.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00004.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00005.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00006.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00007.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00008.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00009.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00010.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00011.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00012.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00013.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00014.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-deposit/00015.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00000.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00001.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00002.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00003.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00004.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00005.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00006.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00007.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00008.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00009.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00010.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00011.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00012.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00013.png create mode 100644 tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00014.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00010.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00011.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-create/00012.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-delete/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00010.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00011.png create mode 100644 tests_zemu/snapshots/x-op-manage-buy-offer-update/00012.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00010.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00011.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00010.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00011.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-add/00012.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-data-remove/00010.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00010.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00011.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-create/00012.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-delete/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00000.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00001.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00002.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00003.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00004.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00005.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00006.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00007.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00008.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00009.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00010.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00011.png create mode 100644 tests_zemu/snapshots/x-op-manage-sell-offer-update/00012.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00000.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00001.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00002.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00003.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00004.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00005.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00006.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00007.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00008.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00009.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00010.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00011.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00012.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00000.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00001.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00002.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00003.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00004.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00005.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00006.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00007.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00008.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00009.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00010.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00011.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-receive/00012.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00000.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00001.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00002.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00003.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00004.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00005.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00006.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00007.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00008.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00009.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00010.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00011.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00012.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00012.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00000.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00001.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00002.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00003.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00004.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00005.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00006.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00007.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00008.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00009.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00010.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00011.png create mode 100644 tests_zemu/snapshots/x-op-path-payment-strict-send/00012.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00000.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00001.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00002.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00003.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00004.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00005.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00006.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00007.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00008.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00009.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00010.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00011.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum12/00012.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00000.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00001.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00002.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00003.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00004.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00005.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00006.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00007.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00008.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00009.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00010.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-alphanum4/00011.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00000.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00001.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00002.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00003.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00004.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00005.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00006.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00007.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00008.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00009.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00010.png create mode 100644 tests_zemu/snapshots/x-op-payment-asset-native/00011.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00000.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00001.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00002.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00003.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00004.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00005.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00006.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00007.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00008.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00009.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00010.png create mode 100644 tests_zemu/snapshots/x-op-payment-with-muxed-destination/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-account/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00012.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-data/00013.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00013.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00014.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00013.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00014.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00012.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00013.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00014.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00012.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00000.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00004.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00006.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00007.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00008.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00009.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00010.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00012.png create mode 100644 tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-with-empty-body/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00014.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00015.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00016.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00017.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00018.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00019.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00020.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00021.png create mode 100644 tests_zemu/snapshots/x-op-set-options/00022.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00014.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00014.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00015.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00013.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00014.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00015.png create mode 100644 tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00016.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00000.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00004.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00007.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00010.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00000.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00004.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00006.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00007.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png create mode 100644 tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00000.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00001.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00002.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00003.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00004.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00005.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00006.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00007.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00008.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00009.png create mode 100644 tests_zemu/snapshots/x-op-with-empty-source/00010.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00000.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00001.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00002.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00003.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00004.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00005.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00006.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00007.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00008.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00009.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00010.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00011.png create mode 100644 tests_zemu/snapshots/x-op-with-muxed-source/00012.png create mode 100644 tests_zemu/snapshots/x-public-key-approve/00000.png create mode 100644 tests_zemu/snapshots/x-public-key-approve/00001.png create mode 100644 tests_zemu/snapshots/x-public-key-approve/00002.png create mode 100644 tests_zemu/snapshots/x-public-key-approve/00003.png create mode 100644 tests_zemu/snapshots/x-public-key-approve/00004.png create mode 100644 tests_zemu/snapshots/x-public-key-reject/00000.png create mode 100644 tests_zemu/snapshots/x-public-key-reject/00001.png create mode 100644 tests_zemu/snapshots/x-public-key-reject/00002.png create mode 100644 tests_zemu/snapshots/x-public-key-reject/00003.png create mode 100644 tests_zemu/snapshots/x-public-key-reject/00004.png create mode 100644 tests_zemu/snapshots/x-public-key-reject/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-is-none/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-ledger-bounds/00012.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-min-account-sequence/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00012.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00013.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-time-bounds/00012.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00000.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00001.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00002.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00003.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00004.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00005.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00006.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00007.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00008.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00009.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00010.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00011.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00012.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00013.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00014.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00015.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00016.png create mode 100644 tests_zemu/snapshots/x-tx-cond-with-all-items/00017.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00000.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00001.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00002.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00003.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00004.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00005.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00006.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00007.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00008.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00009.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00010.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00011.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00012.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00013.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00014.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00015.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00016.png create mode 100644 tests_zemu/snapshots/x-tx-custom-base-fee/00017.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00000.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00001.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00002.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00003.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00004.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00005.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00006.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00007.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00008.png create mode 100644 tests_zemu/snapshots/x-tx-hide-sequence/00009.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00000.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00001.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00002.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00003.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00004.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00005.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00006.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00007.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00008.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00009.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00010.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00011.png create mode 100644 tests_zemu/snapshots/x-tx-memo-hash/00012.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00000.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00001.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00002.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00003.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00004.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00005.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00006.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00007.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00008.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00009.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00010.png create mode 100644 tests_zemu/snapshots/x-tx-memo-id/00011.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00000.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00001.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00002.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00003.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00004.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00005.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00006.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00007.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00008.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00009.png create mode 100644 tests_zemu/snapshots/x-tx-memo-none/00010.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00000.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00001.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00002.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00003.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00004.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00005.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00006.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00007.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00008.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00009.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00010.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00011.png create mode 100644 tests_zemu/snapshots/x-tx-memo-return-hash/00012.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00000.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00001.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00002.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00003.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00004.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00005.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00006.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00007.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00008.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00009.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00010.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text-unprintable/00011.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00000.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00001.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00002.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00003.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00004.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00005.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00006.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00007.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00008.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00009.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00010.png create mode 100644 tests_zemu/snapshots/x-tx-memo-text/00011.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00000.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00001.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00002.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00003.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00004.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00005.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00006.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00007.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00008.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00009.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00010.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00011.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00012.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00013.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00014.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00015.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00016.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00017.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00018.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00019.png create mode 100644 tests_zemu/snapshots/x-tx-multi-operations/00020.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00000.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00001.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00002.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00003.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00004.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00005.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00006.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00007.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00008.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00009.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00010.png create mode 100644 tests_zemu/snapshots/x-tx-network-custom/00011.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00000.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00001.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00002.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00003.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00004.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00005.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00006.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00007.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00008.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00009.png create mode 100644 tests_zemu/snapshots/x-tx-network-public/00010.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00000.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00001.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00002.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00003.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00004.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00005.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00006.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00007.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00008.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00009.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00010.png create mode 100644 tests_zemu/snapshots/x-tx-network-testnet/00011.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00000.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00001.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00002.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00003.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00004.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00005.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00006.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00007.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00008.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00009.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00010.png create mode 100644 tests_zemu/snapshots/x-tx-reject/00011.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00000.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00001.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00002.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00003.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00004.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00005.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00006.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00007.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00008.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00009.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00010.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00011.png create mode 100644 tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00012.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00000.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00001.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00002.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00003.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00004.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00005.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00006.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00007.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00008.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00009.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00010.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00011.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00012.png create mode 100644 tests_zemu/snapshots/x-tx-with-muxed-source/00013.png create mode 100644 tests_zemu/tests/common.ts create mode 100644 tests_zemu/tests/main.test.ts create mode 100644 tests_zemu/tests/zemu.ts create mode 100644 tests_zemu/tsconfig.json diff --git a/.clang-format b/.clang-format index b4abfa06..c76e9fc2 100644 --- a/.clang-format +++ b/.clang-format @@ -12,7 +12,6 @@ SortIncludes: false SpaceAfterCStyleCast: true AllowShortCaseLabelsOnASingleLine: false AllowAllArgumentsOnNextLine: false -AllowAllParametersOfDeclarationOnNextLine: false AllowShortBlocksOnASingleLine: Never AllowShortFunctionsOnASingleLine: None BinPackArguments: false diff --git a/.clusterfuzzlite/build.sh b/.clusterfuzzlite/build.sh index 65568903..29f41cd5 100755 --- a/.clusterfuzzlite/build.sh +++ b/.clusterfuzzlite/build.sh @@ -3,7 +3,7 @@ # build fuzzers pushd fuzz -./build.sh -mv ./cmake-build-fuzz/fuzz_tx $OUT/app-stellar-fuzz-tx -popd - +cmake -DCMAKE_C_COMPILER=clang -Bbuild -H. +make -C build +mv ./build/fuzz_tx $OUT/app-stellar-fuzz-tx +popd \ No newline at end of file diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..61a1fffd --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,7 @@ +# We provide a pre-built image to save you time, but if you want to build it yourself, +# you can copy https://github.com/overcat/ledger-devcontainer/blob/main/Dockerfile to the current +# folder to overwrite this file. +# +# More information: https://github.com/overcat/ledger-devcontainer + +FROM ghcr.io/overcat/ledger-devcontainer:latest \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..b658ed46 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,66 @@ +// For format details, see https://aka.ms/vscode-remote/devcontainer.json or the definition README at +// https://github.com/microsoft/vscode-dev-containers/tree/master/containers/ubuntu-18.04-git +{ + "name": "Ledger Dev", + "dockerFile": "Dockerfile", + "build": { + "args": {} + }, + // https://code.visualstudio.com/remote/advancedcontainers/environment-variables + // BOLOS_SDK can be one of NANOS_SDK, NANOX_SDK and NANOSPLUS_SDK + "remoteEnv": { + "BOLOS_SDK": "${containerEnv:NANOS_SDK}", + "MNEMONIC": "other base behind follow wet put glad muscle unlock sell income october", // "${localEnv:MNEMONIC}" + "CTEST_OUTPUT_ON_FAILURE": "1", + "PIP_INDEX_URL": "https://mirrors.ustc.edu.cn/pypi/web/simple" + }, + // The optional 'runArgs' property can be used to specify additional runtime arguments. + "runArgs": [ + // Uncomment the line if you will use a ptrace-based debugger like C++, Go, and Rust. + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined" + ], + // Use 'settings' to set *default* container specific settings.json values on container create. + // You can edit these settings after create using File > Preferences > Settings > Remote. + "settings": { + "terminal.integrated.profiles.linux": { + "bash": { + "path": "/bin/bash" + }, + "fish": { + "path": "/bin/fish" + } + }, + "terminal.integrated.defaultProfile.linux": "fish" + }, + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [3000], + // Use 'portsAttributes' to set default properties for specific forwarded ports. More info: https://code.visualstudio.com/docs/remote/devcontainerjson-reference. + "portsAttributes": { + "5000": { + "label": "Speculos Restful API", + "onAutoForward": "notify" + }, + "9999": { + "label": "Speculos APDU Server TCP port", + "onAutoForward": "silent" + }, + }, + // Use 'otherPortsAttributes' to configure any ports that aren't configured using 'portsAttributes'. + "otherPortsAttributes": { + "onAutoForward": "silent" + }, + // Uncomment the next line to run commands after the container is created. + // "postCreateCommand": "", + // Add the IDs of extensions you want installed when the container is created in the array below. + "extensions": [ + "ms-vscode.cpptools-extension-pack", + "spmeesseman.vscode-taskexplorer", + "webfreak.debug" + ], + // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + // On Linux, this will prevent new files getting created as root, but you may need to update the USER_UID + // and USER_GID in .devcontainer/Dockerfile to match your user if not 1000. + "remoteUser": "ledgerdev" +} \ No newline at end of file diff --git a/.github/workflows/cflite_batch.yml b/.github/workflows/cflite_batch.yml index b1c7861b..5a4f77be 100644 --- a/.github/workflows/cflite_batch.yml +++ b/.github/workflows/cflite_batch.yml @@ -30,4 +30,3 @@ jobs: #storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/LedgerHQ/fuzzers-corpus.git #storage-repo-branch: main # Optional. Defaults to "main" #storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages". - diff --git a/.github/workflows/cflite_pr.yml b/.github/workflows/cflite_pr.yml index 03873f48..a9e4f451 100644 --- a/.github/workflows/cflite_pr.yml +++ b/.github/workflows/cflite_pr.yml @@ -42,4 +42,3 @@ jobs: #storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/LedgerHQ/fuzzers-corpus.git #storage-repo-branch: main # Optional. Defaults to "main" #storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages". - diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 0f4bd7b5..1a93b2b9 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -4,84 +4,51 @@ on: workflow_dispatch: push: branches: - - master - develop pull_request: branches: - - master - develop jobs: - nanos_build_debug: - name: Build NanoS debug + build_debug_app: + name: Build debug app runs-on: ubuntu-latest + strategy: + matrix: + device: + - path: $NANOS_SDK + name: nanos + - path: $NANOX_SDK + name: nanox + - path: $NANOSP_SDK + name: nanosp container: image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest steps: - name: Clone uses: actions/checkout@v2 - - name: Install dependancies - run: | - apt-get install libbsd-dev - - name: Build Stellar - run: | - make clean - make DEBUG=1 - - name: Upload app binary - uses: actions/upload-artifact@v2 - with: - name: stellar-nanos-debug - path: bin - nanox_build_debug: - name: Build NanoX debug - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest - steps: - - name: Clone - uses: actions/checkout@v2 - - name: Install dependancies - run: | - apt-get install libbsd-dev - - name: Build Stellar + - name: Build for ${{ matrix.device.name }} run: | - make clean - make DEBUG=1 BOLOS_SDK=$NANOX_SDK - - name: Upload app binary - uses: actions/upload-artifact@v2 - with: - name: stellar-nanox-debug - path: bin + make BOLOS_SDK=${{ matrix.device.path }} DEBUG=1 - nanosp_build_debug: - name: Build NanoS+ debug - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest - steps: - - name: Clone - uses: actions/checkout@v2 - - name: Install dependancies - run: | - apt-get install libbsd-dev - - name: Build Stellar - run: | - make clean - make DEBUG=1 BOLOS_SDK=$NANOSP_SDK - name: Upload app binary uses: actions/upload-artifact@v2 with: - name: stellar-nanosp-debug + name: stellar-app-${{ matrix.device.name }}-debug path: bin - job_scan_build: + scan_build: name: Clang Static Analyzer runs-on: ubuntu-latest + needs: build_debug_app + container: image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + steps: - uses: actions/checkout@v2 + - name: Build with Clang Static Analyzer run: | make clean @@ -92,79 +59,90 @@ jobs: name: scan-build path: scan-build - job_coverity_scan: - name: Coverity Scan - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-scanner:latest - steps: - - uses: actions/checkout@v2 - - name: Build with cov-build - run: | - make clean - cov-build --dir cov-int make default - - name: Submit the result to Coverity Scan - run: | - tar czvf cov-int.tar.gz cov-int - curl \ - --form token=$TOKEN \ - --form email=$EMAIL \ - --form file=@cov-int.tar.gz \ - --form version=master \ - --form description="Stellar app" \ - https://scan.coverity.com/builds?project=LedgerHQ%2Fapp-stellar - env: - EMAIL: ${{ secrets.COVERITY_SCAN_EMAIL }} - TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} - - job_unit_test: - name: Unit tests + unit_tests: + name: Unit test runs-on: ubuntu-latest + container: image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + steps: - name: Clone uses: actions/checkout@v2 - - name: Install dependancies - run: | - apt-get update -y - apt-get install libssl-dev libbsd-dev -y + + - name: Install node + uses: actions/setup-node@v2 + with: + node-version: "16" + - name: Build unit tests run: | - cmake -Btests/build -Htests/ && make -C tests/build/ && make -C tests/build test + make tests-unit - job_test: - name: Functional tests - needs: nanos_build_debug + - name: Generate code coverage + run: | + cd tests_unit/ + lcov --directory . -b "$(realpath build/)" --capture --initial -o coverage.base && \ + lcov --rc lcov_branch_coverage=1 --directory . -b "$(realpath build/)" --capture -o coverage.capture && \ + lcov --directory . -b "$(realpath build/)" --add-tracefile coverage.base --add-tracefile coverage.capture -o coverage.info && \ + lcov --directory . -b "$(realpath build/)" --remove coverage.info '*/tests_unit/*' -o coverage.info && \ + genhtml coverage.info -o coverage + + - uses: actions/upload-artifact@v2 + with: + name: code-coverage + path: tests_unit/coverage + + - name: Upload to codecov.io + uses: codecov/codecov-action@v2 + with: + files: ./tests_unit/coverage.info + flags: unittests + name: codecov-app-stellar + fail_ci_if_error: true + verbose: true + + e2e_tests: + name: e2e tests + strategy: + matrix: + device: ["nanos", "nanox", "nanosp"] + fail-fast: false + needs: + - build_debug_app + - unit_tests runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/speculos:latest - ports: - - 1234:1234 - - 9999:9999 - - 40000:40000 - - 41000:41000 - - 42000:42000 - - 43000:43000 - options: --entrypoint /bin/bash steps: - - name: Clone + - name: Checkout uses: actions/checkout@v2 - - name: Install dependancies - run: | - apt-get update && apt-get install build-essential -y libudev-dev libusb-1.0-0-dev libfox-1.6-dev - - name: Download app binary + + - name: Install node + uses: actions/setup-node@v2 + with: + node-version: "16" + + - name: Build common js + run: cd tests_common_js && npm install && npm run build + + - name: Build/Install build js deps + run: cd tests_zemu && npm install + + - name: Download app binaries uses: actions/download-artifact@v2 with: - name: stellar-nanos-debug - path: bin - - name: Run test + name: stellar-app-${{ matrix.device }}-debug + path: stellar-app-${{ matrix.device }}-debug + + - name: Gather elf run: | - nohup bash -c "python /speculos/speculos.py bin/app.elf --log-level automation:DEBUG --automation file:tests/automation.json --display headless" > speculos.log 2<&1 & - sleep 4 - cd tests && pip install -r requirements.txt && LEDGER_PROXY_ADDRESS=127.0.0.1 LEDGER_PROXY_PORT=9999 pytest -v -s - - name: Upload Speculos log + cp ./stellar-app-${{ matrix.device }}-debug/app.elf ./tests_zemu/elfs/stellar_${{ matrix.device }}.elf + + - name: Run zemu tests + run: cd tests_zemu && npm run test -- -t "\(${{ matrix.device }}\)" + + - name: Upload snapshots + if: always() uses: actions/upload-artifact@v2 with: - name: speculos-log - path: speculos.log + name: zemu-snapshots + path: tests_zemu/snapshots-tmp/ \ No newline at end of file diff --git a/.github/workflows/lint-workflow.yml b/.github/workflows/lint-workflow.yml index 6d07bc91..0c80e047 100644 --- a/.github/workflows/lint-workflow.yml +++ b/.github/workflows/lint-workflow.yml @@ -1,9 +1,16 @@ name: Code style check -on: [push, pull_request] +on: + workflow_dispatch: + push: + branches: + - develop + pull_request: + branches: + - develop jobs: - job_lint: + lint: name: Lint runs-on: ubuntu-latest @@ -12,8 +19,8 @@ jobs: uses: actions/checkout@v2 - name: Lint - uses: DoozyX/clang-format-lint-action@v0.11 + uses: DoozyX/clang-format-lint-action@v0.13 with: - source: "./" - extensions: "h,c" - clangFormatVersion: 10 + source: 'src tests_unit' + extensions: 'h,c' + clangFormatVersion: 12 diff --git a/.github/workflows/swap-ci-workflow.yml b/.github/workflows/swap-ci-workflow.yml new file mode 100644 index 00000000..edba4491 --- /dev/null +++ b/.github/workflows/swap-ci-workflow.yml @@ -0,0 +1,162 @@ +# https://github.com/LedgerHQ/app-exchange/blob/develop/.github/workflows/ci-workflow.yml +name: Swap function tests + +on: + workflow_dispatch: + push: + branches: + - develop + pull_request: + branches: + - develop + + +jobs: + build_sideloaded_apps: + strategy: + matrix: + sdk: + - path: $NANOS_SDK + name: nanos + - path: $NANOX_SDK + name: nanox + - path: $NANOSP_SDK + name: nanosp + coin: + - name: tezos + repo: LedgerHQ/app-tezos + - name: xrp + repo: LedgerHQ/app-xrp + - name: ethereum + repo: LedgerHQ/app-ethereum + - name: litecoin + repo: LedgerHQ/app-bitcoin-new + - name: bitcoin + repo: LedgerHQ/app-bitcoin-new + + name: Build App + runs-on: ubuntu-latest + container: + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + + steps: + - name: Clone ${{ matrix.coin.repo }} for coin ${{ matrix.coin.name }} + uses: actions/checkout@v3 + with: + repository: ${{ matrix.coin.repo }} + ref: develop + + - name: Build in ${{ matrix.coin.repo }} coin ${{ matrix.coin.name }} for SDK ${{ matrix.sdk.name }} + run: | + make clean ; make COIN=${{ matrix.coin.name }} BOLOS_SDK=${{ matrix.sdk.path }} + cp bin/app.elf ${{ matrix.coin.name }}_${{ matrix.sdk.name }}.elf + - name: Upload ${{ matrix.coin.name }} binaries + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.coin.name }}_binaries + path: ./*.elf + if-no-files-found: error + + build_stellar_app: + strategy: + matrix: + sdk: + - path: $NANOS_SDK + name: nanos + - path: $NANOX_SDK + name: nanox + - path: $NANOSP_SDK + name: nanosp + + name: Build Stellar App + runs-on: ubuntu-latest + container: + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + + steps: + - name: Clone + uses: actions/checkout@v3 + + - name: Build for SDK ${{ matrix.sdk.name }} + run: | + make clean ; make BOLOS_SDK=${{ matrix.sdk.path }} + cp bin/app.elf stellar_${{ matrix.sdk.name }}.elf + - name: Upload stellar binaries + uses: actions/upload-artifact@v2 + with: + name: stellar_binaries + path: ./*.elf + if-no-files-found: error + + build_exchange: + name: Build Exchange + runs-on: ubuntu-latest + strategy: + matrix: + sdk: [{path: $NANOS_SDK, name: nanos}, {path: $NANOX_SDK, name: nanox}, {path: $NANOSP_SDK, name: nanosp}] + + container: + image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + + steps: + - name: Clone + uses: actions/checkout@v2 + with: + repository: "LedgerHQ/app-exchange" + ref: "b3bf722138c19453bc9bef59e1b421cf0f5e8328" + + - name: Build Exchange + run: | + make clean ; make BOLOS_SDK=${{ matrix.sdk.path }} TESTING=1 TEST_PUBLIC_KEY=1 + cp bin/app.elf exchange_${{ matrix.sdk.name }}.elf + - name: Upload Exchange binaries + uses: actions/upload-artifact@v2 + with: + name: exchange_binaries + path: ./*.elf + if-no-files-found: error + + e2e_tests: + name: e2e tests + strategy: + matrix: + device: ["Nano S", "Nano X", "Nano SP"] + needs: + - build_exchange + - build_sideloaded_apps + - build_stellar_app + runs-on: ubuntu-latest + + steps: + - name: Clone + uses: actions/checkout@v2 + with: + repository: "LedgerHQ/app-exchange" + ref: "b3bf722138c19453bc9bef59e1b421cf0f5e8328" + + - name: Install APT dependencies + run: sudo apt-get update -y && sudo apt-get install -y libusb-1.0.0 libudev-dev + + - name: Install Node + uses: actions/setup-node@v2 + with: + node-version: 16 + + - name: Install Yarn + run: npm install -g yarn + + - name: Install JS dependencies + run: cd test && yarn install + + - name: Upgrade @zondax/zemu + run: cd test && yarn upgrade @zondax/zemu@0.32.0 + + - name: Download all binaries + uses: actions/download-artifact@v2 + + - name: Gather artifacts + run: | + mkdir test/elfs + mv *_binaries/*.elf test/elfs + - name: Run zemu tests for device ${{ matrix.device }} + run: cd test && yarn test -t "\[${{ matrix.device }}\]" diff --git a/.gitignore b/.gitignore index 0194db0a..01969a04 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,19 @@ -bin -debug -dep -obj +# Compilation of Ledger's app src/glyphs.c src/glyphs.h -.idea -nano-sdk -tests/build -tests/__pycache__ -# Python virtual environment -.venv \ No newline at end of file +bin/ +elfs/ +debug/ +dep/ +obj/ +tests_unit/build/ +tests_unit/testcases/*.raw +tests_zemu/node_modules/ +tests_zemu/snapshots-tmp/ +tests_zemu/elfs/stellar_*.elf +tests_common_js/dist/ +tests_common_js/node_modules/ +fuzz/build +fuzz/testcases/ +tests_generate_binary/node_modules/ +.DS_Store \ No newline at end of file diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 7fdbf7f3..9462df46 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -1,16 +1,14 @@ { "env": { - "BOLOS_SDK": "/opt/nanos-secure-sdk", - "BOLOS_ENV": "/opt/bolos-devenv" + "ARM_EMBEDDED_TOOLCHAIN": "/opt/gcc-arm-none-eabi-10.3-2021.10" }, "configurations": [ { "name": "Nano S", "includePath": [ - "/usr/include", - "${workspaceFolder}/src", - "${env:BOLOS_SDK}/include/*", - "${env:BOLOS_SDK}/lib_ux/include/*" + "/usr/include/**", + "${workspaceFolder}/src/**", + "${env:BOLOS_SDK}/**" ], "defines": [ "TARGET_NANOS", @@ -25,7 +23,7 @@ "USB_SEGMENT_SIZE=64", "UNUSED(x)=(void)x", "APPVERSION=\"1.0.0\"", - "APPNAME=\"Boilerplate\"", + "APPNAME=\"Stellar\"", "MAJOR_VERSION=1", "MINOR_VERSION=0", "PATCH_VERSION=0", @@ -33,9 +31,13 @@ "HAVE_UX_FLOW", "DEBUG=1", "HAVE_PRINTF", - "PRINTF=screen_printf" + "PRINTF=screen_printf", + "HAVE_ECC=1", + "HAVE_ECC_TWISTED_EDWARDS=1", + "HAVE_ED25519_CURVE=1", + "HAVE_HASH=1" ], - "compilerPath": "${env:BOLOS_ENV}/gcc-arm-none-eabi-5_3-2016q1/bin/arm-none-eabi-gcc", + "compilerPath": "${env:ARM_EMBEDDED_TOOLCHAIN}/bin/arm-none-eabi-gcc", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "gcc-arm", diff --git a/.vscode/settings.json b/.vscode/settings.json index 34f721f3..c4ca565c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,7 @@ { "files.associations": { "*.h": "c", - "vector": "c", - "memory": "c", - "thread": "c", - "string": "c" + "random": "c" }, "C_Cpp.clang_format_path": "/usr/bin/clang-format", "editor.formatOnSave": true diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 167e70c4..d9234efe 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -49,22 +49,10 @@ "$gcc" ] }, - { - "label": "run unit tests", - "type": "shell", - "command": "cd unit-tests && rm -rf build && cmake -Bbuild -H. && make -C build && CTEST_OUTPUT_ON_FAILURE=1 make -C build test", - "group": { - "kind": "build", - "isDefault": true - }, - "problemMatcher": [ - "$gcc" - ] - }, { "label": "run Speculos", "type": "shell", - "command": "python /path/to/speculos/speculos.py ${workspaceFolder}/bin/app.elf --ontop --sdk 1.6 --apdu-port 9999 --button-port 42000 --automation-port 43000", + "command": "speculos -m nanos -s $MNEMONIC --apdu-port 9999 --display headless ${workspaceFolder}/bin/app.elf", "group": { "kind": "build", "isDefault": true @@ -77,7 +65,7 @@ { "label": "[debug] run Speculos", "type": "shell", - "command": "python /path/to/speculos/speculos.py -d ${workspaceFolder}/bin/app.elf --ontop --sdk 1.6 --apdu-port 9999 --button-port 42000 --automation-port 43000", + "command": "speculos -m nanos -s $MNEMONIC --apdu-port 9999 --display headless -d ${workspaceFolder}/bin/app.elf", "group": { "kind": "build", "isDefault": true @@ -88,19 +76,21 @@ "problemMatcher": [] }, { - "label": "run tests", + "label": "run unit tests", "type": "shell", - "command": "cd tests && pytest", + "command": "make tests-unit", "group": { "kind": "build", "isDefault": true }, - "problemMatcher": [] + "problemMatcher": [ + "$gcc" + ] }, { "label": "kill Speculos", "type": "shell", - "command": "pkill -f speculos.py", + "command": "pkill -f speculos", "group": { "kind": "build", "isDefault": true diff --git a/LICENSE b/LICENSE index bc192ca7..98f617af 100644 --- a/LICENSE +++ b/LICENSE @@ -208,21 +208,21 @@ to the terms and conditions of the following licenses. ------------------------------------------------------------------------------------------------------------------------ -src/stellar_utils.c +src/common/base32.h +src/common/base32.c -The base32 encoding algorithm was adapted from: -https://stash.forgerock.org/projects/OPENAM/repos/forgerock-authenticator-ios/browse/ForgeRock-Authenticator/base32.h -https://stash.forgerock.org/projects/OPENAM/repos/forgerock-authenticator-ios/browse/ForgeRock-Authenticator/base32.c +The base32 algorithm was adapted from: +https://github.com/heapsource/google-authenticator/blob/master/libpam/base32.h +https://github.com/heapsource/google-authenticator/blob/master/libpam/base32.c - - Copyright 2015-2016 ForgeRock AS. - Portions Copyright 2010 Markus Gutschke, Google Inc. + Copyright 2010 Google Inc. + Author: Markus Gutschke Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/Makefile b/Makefile index b9eab111..f18c056f 100755 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ #******************************************************************************* # Ledger Stellar App -# (c) 2017-2018 Ledger +# (c) 2017-2022 Ledger # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,6 +21,10 @@ endif include $(BOLOS_SDK)/Makefile.defines APPNAME = Stellar +APPVERSION_M=4 +APPVERSION_N=0 +APPVERSION_P=0 +APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) ifeq ($(TARGET_NAME), TARGET_NANOS) APP_LOAD_FLAGS=--appFlags 0x800 # APPLICATION_FLAG_LIBRARY @@ -29,16 +33,11 @@ APP_LOAD_FLAGS=--appFlags 0xa00 # APPLICATION_FLAG_LIBRARY + APPLICATION_FLAG_B endif APP_LOAD_PARAMS=$(APP_LOAD_FLAGS) --path "44'/148'" --curve ed25519 $(COMMON_LOAD_PARAMS) -APPVERSION_M=3 -APPVERSION_N=4 -APPVERSION_P=0 -APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) - #prepare hsm generation ifeq ($(TARGET_NAME),TARGET_NANOS) - ICONNAME=nanos_app_stellar.gif + ICONNAME=icons/nanos_app_stellar.gif else - ICONNAME=nanox_app_stellar.gif + ICONNAME=icons/nanox_app_stellar.gif endif ################ @@ -53,7 +52,7 @@ all: default DEFINES += OS_IO_SEPROXYHAL DEFINES += HAVE_BAGL HAVE_SPRINTF DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64 HAVE_USB_APDU -DEFINES += LEDGER_MAJOR_VERSION=$(APPVERSION_M) LEDGER_MINOR_VERSION=$(APPVERSION_N) LEDGER_PATCH_VERSION=$(APPVERSION_P) +DEFINES += MAJOR_VERSION=$(APPVERSION_M) MINOR_VERSION=$(APPVERSION_N) PATCH_VERSION=$(APPVERSION_P) DEFINES += USB_SEGMENT_SIZE=64 DEFINES += BLE_SEGMENT_SIZE=32 #max MTU, min 20 @@ -85,16 +84,16 @@ ifneq ($(NOCONSENT),) DEFINES += NO_CONSENT endif -# Enabling debug PRINTF DEBUG = 0 ifneq ($(DEBUG),0) - ifeq ($(TARGET_NAME),TARGET_NANOS) - DEFINES += HAVE_PRINTF PRINTF=screen_printf - else - DEFINES += HAVE_PRINTF PRINTF=mcu_usb_printf - endif + DEFINES += HAVE_PRINTF + ifeq ($(TARGET_NAME),TARGET_NANOS) + DEFINES += PRINTF=screen_printf + else + DEFINES += PRINTF=mcu_usb_printf + endif else - DEFINES += PRINTF\(...\)= + DEFINES += PRINTF\(...\)= endif ############## @@ -118,9 +117,7 @@ CC := $(CLANGPATH)clang #CFLAGS += -O0 CFLAGS += -O3 -Os - -AS := $(GCCPATH)arm-none-eabi-gcc - +AS := $(GCCPATH)arm-none-eabi-gcc LD := $(GCCPATH)arm-none-eabi-gcc LDFLAGS += -O3 -Os LDLIBS += -lm -lgcc -lc @@ -154,3 +151,18 @@ dep/%.d: %.c Makefile.genericwallet listvariants: @echo VARIANTS COIN stellar + +tests-unit: + cd tests_common_js && npm install && npm run build + cd tests_generate_binary && npm install && npm run generate unit + rm -rf tests_unit/build && cmake -Btests_unit/build -Htests_unit/ && make -C tests_unit/build/ && make -C tests_unit/build test + +tests-zemu: + ./build_elfs.sh && rm -rf ./tests_zemu/elfs/stellar_nano*.elf && cp ./elfs/stellar_nano*.elf ./tests_zemu/elfs + cd tests_common_js && npm install && npm run build + cd tests_zemu && npm install && rm -rf snapshots-tmp && npm run test + +fuzzing: + cd tests_common_js && npm install && npm run build + rm -rf fuzz/testcases && mkdir -p fuzz/testcases && cd tests_generate_binary && npm install && npm run generate fuzz + cd fuzz && rm -rf build && cmake -DCMAKE_C_COMPILER=clang -Bbuild -H. && make -C build && ./build/fuzz_tx testcases diff --git a/README.md b/README.md index 07aafdf3..15e6a9b4 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,85 @@ -# Stellar app for the Ledger Nano S and Ledger Blue +# Ledger Stellar App + +[![Compilation & tests](https://github.com/LedgerHQ/app-stellar/actions/workflows/ci-workflow.yml/badge.svg?branch=develop)](https://github.com/LedgerHQ/app-stellar/actions/workflows/ci-workflow.yml) +[![Swap function tests](https://github.com/LedgerHQ/app-stellar/actions/workflows/swap-ci-workflow.yml/badge.svg?branch=develop)](https://github.com/LedgerHQ/app-stellar/actions/workflows/swap-ci-workflow.yml) ## Introduction -This is the wallet app for the [Ledger Nano S](https://www.ledgerwallet.com/products/ledger-nano-s) and [Ledger Nano X](https://www.ledgerwallet.com/products/ledger-nano-x) that makes it possible to store [Stellar](https://www.stellar.org/)-based assets on those devices and generally sign any transaction for the Stellar network. +This is the wallet app for the [Ledger Nano S](https://shop.ledger.com/products/ledger-nano-s), [Ledger Nano S Plus](https://shop.ledger.com/pages/ledger-nano-s-plus) and [Ledger Nano X](https://shop.ledger.com/pages/ledger-nano-x) that makes it possible to store [Stellar](https://www.stellar.org/)-based assets on those devices and generally sign any transaction for the Stellar network. + +## Documentation + +This app follows the specification available in the [`./docs`](./docs/) folder. + +## SDK -A companion [Javascript library](https://github.com/LedgerHQ/ledgerjs) is available to communicate with this app. To learn how to use this library and generate a browserified version of it you can take look at the [demo project](https://github.com/lenondupe/ledgerjs-stellar). +You can communicate with the app through the following libraries: + +- [JavaScript library](https://github.com/LedgerHQ/ledger-live/blob/develop/libs/ledgerjs/packages/hw-app-str/README.md) +- [Python library](https://github.com/overcat/strledger) ## Building and installing -To build and install the app on your Nano S or X you must set up the Ledger Nano S or X build environments. Please follow the Getting Started instructions at the [Ledger Nano S github repository](https://github.com/LedgerHQ/ledger-nano-s). +If not for development purposes, you should install this app via [Ledger Live](https://www.ledger.com/ledger-live). + +To build and install the app on your Nano S or Nano S Plus you must set up the Ledger build environments. Please follow [the load the application instructions](https://developers.ledger.com/docs/nano-app/load/) at the Ledger developer portal. -Additionaly, install this dependancy: +Additionaly, install this dependency: -```shell script +```shell sudo apt install libbsd-dev ``` -Alternatively, you can set up the Vagrant Virtualbox Ledger environment maintained [here](https://github.com/fix/ledger-vagrant). This sets up an Ubuntu virtual machine with the Ledger build environment already set up. - The command to compile and load the app onto the device is: -```shell script +```shell make load ``` To remove the app from the device do: -```shell script +```shell make delete ``` ## Testing -The `./test` directory contains files for testing the xdr transaction parser and the screen formatter. +This project provides unit tests, integration tests and end-to-end tests, unit tests are located under the [`./tests_unit`](./tests_unit) folder, and the integration tests and end-to-end tests are located under the [`./tests_zemu`](./tests_zemu) folder. -They require the [cmocka](https://cmocka.org/) unit testing framework, [CMake](https://cmake.org/) and [libbsd](https://libbsd.freedesktop.org/wiki/) to be installed: +During development, we recommend that you run the unit test first, as it takes less time to run, and then run the other tests after the unit test has run successfully. -```shell script -sudo apt install libcmocka-dev cmake -``` +### Unit testing -To build and execute the tests, run the following commands: +The `./tests_unit` directory contains files for testing the utils, the xdr transaction parser, the screen formatter and the swap function. -```shell script -mkdir test/build -cd test/build -cmake .. -make && make test +They require the [Node.js](https://nodejs.org/), [cmocka](https://cmocka.org/) unit testing framework, [CMake](https://cmake.org/) and [libbsd](https://libbsd.freedesktop.org/wiki/) to be installed: + +```shell +sudo apt install libcmocka-dev cmake libbsd-dev ``` -### XDR parsing +It is recommended to use [nvm](https://github.com/nvm-sh/nvm) to install the latest LTS version of Node.js -When a transaction is to be signed it is sent to the device as an [XDR](https://tools.ietf.org/html/rfc1832) serialized binary object. To show the transaction details to the user on the device this binary object must be read. This is done by a purpose-built parser shipped with this app. +To build and execute the tests, run the following command: -Due to memory limitations the transaction maximum size is set to 1kb. This should be sufficient for most usages, including multi-operation transactions up to 15 operations depending on the size of the operations. +```shell +make tests-unit +``` -Alternatively the user can enable hash signing. In this mode the transaction XDR is not sent to the device but only the hash of the transaction, which is the basis for a valid signature. In this case details for the transaction cannot be displayed and verified which is why this is not the preferred mode of operation. In fact, setting hash signing mode is not persistent and needs be set again whenever the user needs it. +### Integration testing and end-to-end testing +Testing is done via the open-source framework [zemu](https://github.com/Zondax/zemu). -## Key pair validation +In order to run these tests, you need to install [Docker](https://www.docker.com/) in addition to the dependencies mentioned in *Unit testing*. -The operation to retrieve the public key implements an optional keypair verification method. Along with the request to retrieve the public key a small message is sent that is to be signed by the device. Back on the host the returned signature can be checked against the returned public key. This is to guard against incompatibility between the keypairs generated by the Ledger device and the ones expected by the Stellar network, whatever the reason for this might be. The extra precaution prevents users from sending funds to an address they are not able to sign transactions for. +To build and execute the tests, run the following commands: -## Building on Mac OS +```shell +make tests-zemu +``` -Currently there are some tweaks that need to be made to the Makefile in order to be able to build and load the app on Mac OS. I added the following before the line `include $(BOLOS_SDK)/Makefile.rules`: +To run a specific test first, please run the following commands: -``` -GLYPH_SRC_DIR = /Users/lenondupe/Code/ledger/ledger-app-stellar/src -SOURCE_PATH += $(BOLOS_SDK)/lib_stusb -SOURCE_PATH += $(BOLOS_SDK)/lib_u2f -INCLUDES_PATH += $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/lib/gcc/arm-none-eabi/5.3.1/include-fixed -INCLUDES_PATH += $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/arm-none-eabi/include +```shell +cd tests_zemu +npm run test -- -t "{testCaseName}" ``` diff --git a/blue_app_stellar.gif b/blue_app_stellar.gif deleted file mode 100644 index 6d00c226c78f2791412dc41f0fb494bbaa41662e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcmZ?wbhEHbG-5Df*v!Ci_3G7Ar%p9DHzy?}Nk~Y{nlZ~yb>&(ft!O-)VT zym|BZ@#CLAfBygfpMilv@jrKjZ-9bJVo4&9wz01$NKDR7Em25HP0!4;ReHaBzmh^` zimg((sjq==fpcm`rbks#YH*cbNODznvSo^ry`6$hg;hmvL2hbEqC!P(PF}H9g{@Lz zN`6wR6_5=Q)>l#hD=EpgRdNJLD1hvA&M!(;Fx4~DO*S+!RWP^IGc+?cv9#1tFfuT- z&^NHqH#F8YG_x`>ure}IfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1y>er{{GxPy zLrY6beFGzXBO_g)3fZE`@j@ zw*YQzUa=n7J9^3ax%w4}1^R}11|ToN6#Dw&SDKp(S6y5Zl!|aKR)dQ}DhpEegHnt0 zON)|Ify$LZRuxz|7o{eaQ#zd*s+85C-k3L3tN$(eZ|K~1nO zUtcTFyyB9?yyR3*7h5HuIeM9yDOS!#&aRej=9VsIZjOeAu9i;5CPvPtmd+-YMka2i z22L=&F8Rr&xv6<2Fuf@Vy^c8bf)Ye-0nlcb)S}F?)D*X({9FaF$E`APyTu%*c~HG6 zxZPrbQ?EYIG5VnBMT%~i5HJmanDE34-^T+pZU%!0* z^zp;{cW>Xke)aOj^Jh<=Jbv`>!To!8@7%t1^TzdSSFc>Ybn(LZb7#+-K6UcM@nc7i z96ogL!2W%E_w3%abI0~=Teoc9v~k1wb!*qGUbS+?@?}exEMBy5!Tfo1=ggipbH?;( zQ>RRxG;umQ)5GYU2RQuRb@qaS!qdeQDH%TUT#iyR%S+eT53vi zQer}UTx?8qRAfYWSZGLaP+)++pRbR%m#2rjo2!enlcR&Zovn?vm8FHbnW>4fk)eUU zp019zmZpZfnyQMjlA?mVoUDwrl%#~Xn5c-bke~oRA1@C#7bgch8!HPl6C<#M_{jn+ zCm0xXKm@3iVPN^c;iTozr)oP{Fzp6(OdP@9~4J#Et#eVxnO7fhJ4 z;fo4~JCj8Y8~g6Kpa*OCL>c6cI&Q7XXKCBE@XxGVE@r1k2?pm29J6g3Zo6u`KR8#< zqf=U2&cMx8u3FB@p03W$z{AbJ$SRx092>^P%BC|{jE6a&U)_937?U+0o1_L4XQbGS z#jLyxOWQ(S#hDh>O);4@hp*dAEtFM^eMk80`Fj%fn${ooV>!F~qTTxxZ1GA9T# zMb>Hd2d&ZdXJC}ESaM;zL$Tpmt{}HPr;>ctnZ5TcF;g~XWKI;f)8}h?`g-pLnKv8? z8ZY{eJu2W>;n;qM$H?g0tn{GE42(>dFS)N-a3G=l8~gd~6@TlT{rb)Bu|Aw#wS+b8 orPy_umFv_+{-k}5WzgBM@G$#*{y*tWoJ>qI8=7nMTo@Rv0i0=We*gdg diff --git a/build_elfs.sh b/build_elfs.sh new file mode 100755 index 00000000..9e5f69dd --- /dev/null +++ b/build_elfs.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +set -e + +BUILD_FULL_PATH=$(dirname "$(realpath "$0")") + +# FILL THESE WITH YOUR OWN SDKs PATHS +# NANOS_SDK= +# NANOSP_SDK= +# NANOX_SDK= + +APPNAME="stellar" + +# list of SDKS +NANO_SDKS=("$NANOS_SDK" "$NANOSP_SDK" "$NANOX_SDK") +# list of target elf file name suffix +FILE_SUFFIXES=("nanos" "nanosp" "nanox") + +# move to the build directory +cd "$BUILD_FULL_PATH" || exit 1 + +# Do it only now since before the cd command, we might not have been inside the repository +GIT_REPO_ROOT=$(git rev-parse --show-toplevel) +BUILD_REL_PATH=$(realpath --relative-to="$GIT_REPO_ROOT" "$BUILD_FULL_PATH") + +# create elfs directory if it doesn't exist +mkdir -p elfs + +# move to repo's root to build apps +cd "$GIT_REPO_ROOT" || exit 1 + +for ((sdk_idx=0; sdk_idx < "${#NANO_SDKS[@]}"; sdk_idx++)) +do + nano_sdk="${NANO_SDKS[$sdk_idx]}" + elf_suffix="${FILE_SUFFIXES[$sdk_idx]}" + echo "* Building elfs for $(basename "$nano_sdk")..." + + echo "** Building app $appname..." + make clean BOLOS_SDK="$nano_sdk" + make -j DEBUG=1 BOLOS_SDK="$nano_sdk" + cp bin/app.elf "$BUILD_REL_PATH/elfs/${APPNAME}_${elf_suffix}.elf" +done + +echo "done" diff --git a/docs/APDU.md b/docs/APDU.md new file mode 100644 index 00000000..86d07bc9 --- /dev/null +++ b/docs/APDU.md @@ -0,0 +1,28 @@ +# Application Protocol Data Unit (APDU) + +The communication protocol used by [BOLOS](https://www.ledger.com/introducing-bolos-blockchain-open-ledger-operating-system) to exchange [APDU](https://en.wikipedia.org/wiki/Smart_card_application_protocol_data_unit) is very close to [ISO 7816-4](https://www.iso.org/standard/77180.html) with a few differences: + +- `Lc` length is always exactly 1 byte +- No `Le` field in APDU command +- Maximum size of APDU command is 260 bytes: 5 bytes of header + 255 bytes of data +- Maximum size of APDU response is 260 bytes: 258 bytes of response data + 2 bytes of status word + +Status words tend to be similar to common [APDU responses](https://www.eftlab.com/knowledge-base/complete-list-of-apdu-responses/) in the industry. + +## Command APDU + +| Field name | Length (bytes) | Description | +| ---------- | -------------- | --------------------------------------------------------------------- | +| CLA | 1 | Instruction class - indicates the type of command | +| INS | 1 | Instruction code - indicates the specific command | +| P1 | 1 | Instruction parameter 1 for the command | +| P2 | 1 | Instruction parameter 2 for the command | +| Lc | 1 | The number of bytes of command data to follow (a value from 0 to 255) | +| CData | var | Command data with `Lc` bytes | + +## Response APDU + +| Field name | Length (bytes) | Description | +| ---------- | -------------- | ---------------------------------------------------------------------------- | +| RData | var | Reponse data (can be empty) | +| SW | 2 | Status word containing command processing status (e.g. `0x9000` for success) | diff --git a/docs/COMMANDS.md b/docs/COMMANDS.md new file mode 100644 index 00000000..77baeb40 --- /dev/null +++ b/docs/COMMANDS.md @@ -0,0 +1,90 @@ +# Stellar App Commands + +## Overview + +| Command name | INS | Description | +| ----------------------- | ---- | ------------------------------------------------------ | +| `GET_PUBLIC_KEY` | 0x02 | Get public key given BIP32 path | +| `SIGN_TX` | 0x04 | Sign transaction given BIP32 path and raw transaction | +| `GET_APP_CONFIGURATION` | 0x06 | Get application configuration information | +| `SIGN_TX_HASH` | 0x08 | Sign transaction given BIP32 path and transaction hash | + +## GET_PUBLIC_KEY + +### Command + +| CLA | INS | P1 | P2 | Lc | CData | +| ---- | ---- | ---- | ------------------------------------- | ------ | -------------------------------------------------------------------------------------------- | +| 0xE0 | 0x02 | 0x00 | 0x00 (no display)
0x01 (display) | 1 + 4n | `len(bip32_path) (1)` \|\|
`bip32_path{1} (4)` \|\|
`...` \|\|
`bip32_path{n} (4)` | + +### Response + +| Response length (bytes) | SW | RData | +| ----------------------- | ------ | ----------------------------- | +| 32 | 0x9000 | `raw_ed25519_public_key (32)` | + +## SIGN_TX + +### Command + +| CLA | INS | P1 | P2 | Lc | CData | +| ---- | ---- | ---------------------------------- | ---------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| 0xE0 | 0x04 | 0x00 (first)
0x80 (not_first) | 0x00 (last)
0x80 (more) | 1 + 4n + k
Only the first data chunk contains bip32 path data | `len(bip32_path) (1)` \|\|
`bip32_path{1} (4)` \|\|
`...` \|\|
`bip32_path{n} (4)` \|\|
`transaction_chunk(k)` | + +### Response + +| Response length (bytes) | SW | RData | +| ----------------------- | ------ | ---------------- | +| 64 | 0x9000 | `signature (64)` | + +## GET_APP_CONFIGURATION + +### Command + +| CLA | INS | P1 | P2 | Lc | CData | +| ---- | ---- | ---- | ---- | ---- | ----- | +| 0xE0 | 0x06 | 0x00 | 0x00 | 0x00 | - | + +### Response + +| Response length (bytes) | SW | RData | +| ----------------------- | ------ | ---------------------------------------------------------------------------- | +| 4 | 0x9000 | `MAJOR (1)` \|\| `MINOR (1)` \|\| `PATCH (1)`\|\| `HASH_SIGNING_ENABLED (1)` | + +## SIGN_TX_HASH + +### Command + +| CLA | INS | P1 | P2 | Lc | CData | +| ---- | ---- | ---- | ---- | ----------- | ----------------------------------------------------------------------------------------------------------------------- | +| 0xE0 | 0x08 | 0x00 | 0x00 | 1 + 4n + 32 | `len(bip32_path) (1)` \|\|
`bip32_path{1} (4)` \|\|
`...` \|\|
`bip32_path{n} (4)`
`transaction_hash (32)` | + +### Response + +| Response length (bytes) | SW | RData | +| ----------------------- | ------ | ---------------- | +| 64 | 0x9000 | `signature (64)` | + +## Status Words + +| SW | SW name | Description | +| ------ | ------------------------------------- | ------------------------------------------------------- | +| 0x6125 | `SW_TX_FORMATTING_FAIL` | Failed to format transaction data | +| 0x6985 | `SW_DENY` | Rejected by user | +| 0x6A87 | `SW_WRONG_DATA_LENGTH` | `Lc` or minimum APDU lenght is incorrect | +| 0x6B00 | `SW_WRONG_P1P2` | Either `P1` or `P2` is incorrect | +| 0x6C24 | `SW_UNKNOWN_OP` | Unknown Stellar operation | +| 0x6C25 | `SW_UNKNOWN_ENVELOPE_TYPE` | Unknown Stellar envelope type | +| 0x6C66 | `SW_TX_HASH_SIGNING_MODE_NOT_ENABLED` | Hash signing model not enabled | +| 0x6D00 | `SW_INS_NOT_SUPPORTED` | No command exists with `INS` | +| 0x6E00 | `SW_CLA_NOT_SUPPORTED` | Bad `CLA` used for this application | +| 0xB000 | `SW_WRONG_RESPONSE_LENGTH` | Wrong response length (buffer too small or too big) | +| 0xB002 | `SW_DISPLAY_ADDRESS_FAIL` | Failed to display address | +| 0xB003 | `SW_DISPLAY_TRANSACTION_HASH_FAIL` | Failed to display transaction hash | +| 0xB004 | `SW_WRONG_TX_LENGTH` | Wrong raw transaction length | +| 0xB005 | `SW_TX_PARSING_FAIL` | Failed to parse raw transaction | +| 0xB006 | `SW_TX_HASH_FAIL` | Failed to compute hash digest of raw transaction | +| 0xB007 | `SW_BAD_STATE` | Security issue with bad state | +| 0xB008 | `SW_SIGNATURE_FAIL` | Signature of raw transaction or transaction hash failed | +| 0xB009 | `SW_SWAP_CHECKING_FAIL` | Failed to check swap params (maybe the data is invalid) | +| 0x9000 | `SW_OK` | Success | diff --git a/docs/TRANSACTION.md b/docs/TRANSACTION.md new file mode 100644 index 00000000..83f026a5 --- /dev/null +++ b/docs/TRANSACTION.md @@ -0,0 +1,9 @@ +# Stellar Transaction Serialization + +## XDR parsing + +When a transaction is to be signed it is sent to the device as an [XDR](https://tools.ietf.org/html/rfc1832) serialized binary object. To show the transaction details to the user on the device this binary object must be read. This is done by a purpose-built parser shipped with this app. + +Due to memory limitations the maximum transaction size is set to 1kb on Nano S and 5kb on Nano S Plus and Nano X. This should be sufficient for most usages, including multi-operation transactions up to 35 operations depending on the size of the operations. + +Alternatively the user can enable hash signing. In this mode the transaction XDR is not sent to the device but only the hash of the transaction, which is the basis for a valid signature. In this case details for the transaction cannot be displayed and verified. \ No newline at end of file diff --git a/fuzz/CMakeLists.txt b/fuzz/CMakeLists.txt new file mode 100644 index 00000000..4fe4a499 --- /dev/null +++ b/fuzz/CMakeLists.txt @@ -0,0 +1,65 @@ +cmake_minimum_required(VERSION 3.10) + +if (${CMAKE_VERSION} VERSION_LESS 3.10) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) +endif () + +# project information +project(tests_unit + VERSION 0.1 + DESCRIPTION "Fuzzing of transaction parser and foramtter" + LANGUAGES C) + +# guard against bad build-type strings +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Debug") +endif () + +if (NOT CMAKE_C_COMPILER_ID MATCHES "Clang") + message(FATAL_ERROR "Fuzzer needs to be built with Clang") +endif () + +include(CTest) +ENABLE_TESTING() + +# specify C standard +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED True) +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -pedantic -g -O0") + + +# guard against in-source builds +if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt. ") +endif () + +add_compile_definitions(TEST) +add_definitions("-DIO_SEPROXYHAL_BUFFER_SIZE_B=128") # cmake -DIO_SEPROXYHAL_BUFFER_SIZE_B=128 +add_definitions("-DTARGET_NANOS=1") + +include_directories(../src) +include_directories(../tests_unit/mock_includes) + +add_library(bsd STATIC IMPORTED) +set_property(TARGET bsd PROPERTY IMPORTED_LOCATION /lib/x86_64-linux-gnu/libbsd.a) + +file(GLOB src_common "../src/common/*.c") + +add_library(common STATIC ${src_common}) +add_library(utils STATIC ../src/utils.c) +add_library(globals STATIC ../src/globals.c) +add_library(tx_parser STATIC ../src/transaction/transaction_parser.c) +add_library(tx_formatter STATIC ../src/transaction/transaction_formatter.c) + +# compatible with ClusterFuzzLite +if (NOT DEFINED ENV{LIB_FUZZING_ENGINE}) + set(COMPILATION_FLAGS_ "-fsanitize=address,fuzzer -g") +else () + set(COMPILATION_FLAGS_ "$ENV{LIB_FUZZING_ENGINE} $ENV{CXXFLAGS}") +endif () +string(REPLACE " " ";" COMPILATION_FLAGS ${COMPILATION_FLAGS_}) +message(${COMPILATION_FLAGS}) +add_executable(fuzz_tx fuzz_tx.c) +target_compile_options(fuzz_tx PRIVATE ${COMPILATION_FLAGS}) +target_link_options(fuzz_tx PRIVATE ${COMPILATION_FLAGS}) +target_link_libraries(fuzz_tx PRIVATE tx_parser tx_formatter utils common globals bsd) diff --git a/fuzz/README.md b/fuzz/README.md new file mode 100644 index 00000000..6b8ea33a --- /dev/null +++ b/fuzz/README.md @@ -0,0 +1,21 @@ +# Fuzzing on transaction parser and formatter + +## Compilation + +In `fuzz` folder + +``` +cmake -DCMAKE_C_COMPILER=clang -Bbuild -H. +``` + +then + +``` +make -C build +``` + +## Run + +``` +./build/fuzz_tx +``` \ No newline at end of file diff --git a/fuzz/build.sh b/fuzz/build.sh deleted file mode 100755 index 868f2e35..00000000 --- a/fuzz/build.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -SCRIPTDIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)" -BUILDDIR=$SCRIPTDIR/cmake-build-fuzz - -# Compile fuzzer -rm -rf "$BUILDDIR" -mkdir "$BUILDDIR" -cd "$BUILDDIR" || exit - -cmake -DCMAKE_C_COMPILER=clang -DFUZZ=1 ../../tests -make clean -make fuzz_tx diff --git a/fuzz/fuzz_tx.c b/fuzz/fuzz_tx.c new file mode 100644 index 00000000..98ee078f --- /dev/null +++ b/fuzz/fuzz_tx.c @@ -0,0 +1,32 @@ +#include +#include +#include +#include + +#include "transaction/transaction_parser.h" +#include "transaction/transaction_formatter.h" + +int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + memset(&G_context, 0, sizeof(global_ctx_t)); + if (Size > sizeof(G_context.tx_info.raw)) { + return 0; + } + memcpy(&G_context.tx_info.raw, Data, Size); + G_context.req_type = CONFIRM_TRANSACTION; + G_context.tx_info.raw_size = Size; + if (!parse_tx_xdr(G_context.tx_info.raw, G_context.tx_info.raw_size, &G_context.tx_info)) { + return 0; + } + G_context.state = STATE_PARSED; + + set_state_data(true); + while (formatter_stack[formatter_index] != NULL) { + printf("%s: %s\n", G_ui_detail_caption, G_ui_detail_value); + formatter_index++; + + if (formatter_stack[formatter_index] != NULL) { + set_state_data(true); + } + } + return 0; +} diff --git a/fuzz/run.sh b/fuzz/run.sh deleted file mode 100755 index e3a1d04e..00000000 --- a/fuzz/run.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -BUILDDIR=$SCRIPTDIR/cmake-build-fuzz -CORPUSDIR=$SCRIPTDIR/../tests/testcases -INPUTDIR=$SCRIPTDIR/inputs - -mkdir -p "$INPUTDIR" -cp "$CORPUSDIR"/*.raw "$INPUTDIR" - -"$BUILDDIR"/fuzz_tx "$INPUTDIR" > /dev/null diff --git a/glyphs/icon_warning.gif b/glyphs/icon_warning.gif index 1393e053ef0d7bc1c9b7e26e2fc93088bc5b0085..08bd4a739c348f3655d195210e9f2d72e4f7c533 100644 GIT binary patch literal 1130 zcmZ?wbhEHbh+i z#(Mch>H3D2mX`VkM*2oZxP`3=Lf^oD9vKom`v^ z4IGV}EX^$3V0vBhlS^|`^GaZPQxJMhaOwpmh};68%`T}$nPsUdZbkXI3Sf_0W#V>= zAx`t4dQ)(_#R#WfeV}9XLD7p8-7q0w8Uiuli5JL$C;!wuV45!iCT_<6|Nj2@{p;tC z@87({PcxqRv3h4bgmo;iK$ z#u35cm<%;FYmM&SmXyJnS^XAT( zJ!|HS>C>i8nLKIYg#NzXp6;&Bj`p_Jmgc6$hWfhNn(C^`it@73lH#Jmg8aPPob0U3 zjP$hBl;otug!s7FnCPg;i14t`kl>)e0DnJUA8#*D4|g|L7iT9&2YWkP8*3{|3v)A5 z6JsMo1ARSR9c?X54RtkD6=fww1$jAH8EGj=32`w|5n&-g0e(JS9&Rp94t6$H7G@?! zU `10,000,000 XLM`) +- Optimized the display of offer price. +- Optimize the display of `Memo Text` and `Manage Data Value`, if they are printable ASCII characters, they will be printed directly, otherwise display the base64 encoded summary. +- In some common operations, the prompt for the operation type was removed. +- Other UX improvements. +- Other bugfixes. +- Refactored this app based on [app-boilerplate](https://github.com/ledgerhq/app-boilerplate). +- Refactored unit tests and added full e2e tests. +- Added APDU documentation. + +### Breaking Changes +- Removed keypair validation in `GET_PUBLIC_KEY` command. If necessary, we recommend that you ask the user to confirm the address on the device. +- Removed support for the `KEEP_ALIVE` command at the app layer. + ## v3.0 Multi-operation details support and U2F connection keep-alive Support for showing details of multi-operation transactions has been added. Previously, multi-operation transactions could only be signed using the hash-signing method. Transaction envelopes of up to 1.5kb in size are supported*, covering most Stellar usage scenarios. @@ -15,6 +33,7 @@ The native asset is no longer assumed to be XLM when showing amounts. Instead, a This release also uses the new SDK built-in U2F support which means that the user no longer needs to set the browser mode when switching between host applications that use different transport protocols. \*To give an idea: this allows for 25 XLM payment, 23 change trust operations, 17 manage offer operations where one of the assets is native, 15 set options operations where the master weight, a threshold and a signer are specified, 9 set options operations where all the options are specified, or 5 path payment operations where both send and receive assets are non-native and two hops are specified. + ## v2.1 Hash signing support This release adds a mode to sign the hash of the transaction. Transaction details are not shown in this mode. diff --git a/src/apdu/apdu_parser.c b/src/apdu/apdu_parser.c new file mode 100644 index 00000000..93d53305 --- /dev/null +++ b/src/apdu/apdu_parser.c @@ -0,0 +1,63 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // size_t +#include // uint*_t +#include // bool + +#include "./apdu_parser.h" + +/** + * Offset of instruction class. + */ +#define OFFSET_CLA 0 +/** + * Offset of instruction code. + */ +#define OFFSET_INS 1 +/** + * Offset of instruction parameter 1. + */ +#define OFFSET_P1 2 +/** + * Offset of instruction parameter 2. + */ +#define OFFSET_P2 3 +/** + * Offset of command data length. + */ +#define OFFSET_LC 4 +/** + * Offset of command data. + */ +#define OFFSET_CDATA 5 + +bool apdu_parser(command_t *cmd, uint8_t *buf, size_t buf_len) { + // Check minimum length and Lc field of APDU command + if (buf_len < OFFSET_CDATA || buf_len - OFFSET_CDATA != buf[OFFSET_LC]) { + return false; + } + + cmd->cla = buf[OFFSET_CLA]; + cmd->ins = (command_e) buf[OFFSET_INS]; + cmd->p1 = buf[OFFSET_P1]; + cmd->p2 = buf[OFFSET_P2]; + cmd->lc = buf[OFFSET_LC]; + cmd->data = (buf[OFFSET_LC] > 0) ? buf + OFFSET_CDATA : NULL; + + return true; +} diff --git a/src/apdu/apdu_parser.h b/src/apdu/apdu_parser.h new file mode 100644 index 00000000..dfba3fd6 --- /dev/null +++ b/src/apdu/apdu_parser.h @@ -0,0 +1,22 @@ +#pragma once + +#include // size_t +#include // uint*_t +#include // bool + +#include "../types.h" + +/** + * Parse APDU command from byte buffer. + * + * @param[out] cmd + * Structured APDU command (CLA, INS, P1, P2, Lc, Command data). + * @param[in] buf + * Byte buffer with raw APDU command. + * @param[in] buf_len + * Length of byte buffer. + * + * @return true if success, false otherwise. + * + */ +bool apdu_parser(command_t *cmd, uint8_t *buf, size_t buf_len); diff --git a/src/apdu/dispatcher.c b/src/apdu/dispatcher.c new file mode 100644 index 00000000..bb95c701 --- /dev/null +++ b/src/apdu/dispatcher.c @@ -0,0 +1,82 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include + +#include "./dispatcher.h" +#include "../globals.h" +#include "../sw.h" +#include "../io.h" +#include "../handler/handler.h" + +int apdu_dispatcher(const command_t *cmd) { + if (cmd->cla != CLA) { + return io_send_sw(SW_CLA_NOT_SUPPORTED); + } + + buffer_t buf = {0}; + + switch (cmd->ins) { + case INS_GET_APP_CONFIGURATION: + if (cmd->p1 != 0 || cmd->p2 != 0) { + return io_send_sw(SW_WRONG_P1P2); + } + return handler_get_app_configuration(); + case INS_GET_PUBLIC_KEY: + if (cmd->p1 != 0 || cmd->p2 > 1) { + return io_send_sw(SW_WRONG_P1P2); + } + + if (!cmd->data) { + return io_send_sw(SW_WRONG_DATA_LENGTH); + } + + buf.ptr = cmd->data; + buf.size = cmd->lc; + buf.offset = 0; + return handler_get_public_key(&buf, (bool) cmd->p2); + case INS_SIGN_TX_HASH: + if (cmd->p1 != 0 || cmd->p2 != 0) { + return io_send_sw(SW_WRONG_P1P2); + } + if (!cmd->data) { + return io_send_sw(SW_WRONG_DATA_LENGTH); + } + + buf.ptr = cmd->data; + buf.size = cmd->lc; + buf.offset = 0; + return handler_sign_tx_hash(&buf); + case INS_SIGN_TX: + if ((cmd->p1 != P1_FIRST && cmd->p1 != P1_MORE) || + (cmd->p2 != P2_LAST && cmd->p2 != P2_MORE)) { + return io_send_sw(SW_WRONG_P1P2); + } + + if (!cmd->data) { + return io_send_sw(SW_WRONG_DATA_LENGTH); + } + + buf.ptr = cmd->data; + buf.size = cmd->lc; + buf.offset = 0; + + return handler_sign_tx(&buf, !cmd->p1, (bool) (cmd->p2 & P2_MORE)); + default: + return io_send_sw(SW_INS_NOT_SUPPORTED); + } +} diff --git a/src/apdu/dispatcher.h b/src/apdu/dispatcher.h new file mode 100644 index 00000000..30b612a0 --- /dev/null +++ b/src/apdu/dispatcher.h @@ -0,0 +1,31 @@ +#pragma once + +#include "../types.h" + +/** + * Parameter 2 for last APDU to receive. + */ +#define P2_LAST 0x00 +/** + * Parameter 2 for more APDU to receive. + */ +#define P2_MORE 0x80 +/** + * Parameter 1 for first APDU number. + */ +#define P1_FIRST 0x00 +/** + * Parameter 1 for more APDU to receive. + */ +#define P1_MORE 0x80 + +/** + * Dispatch APDU command received to the right handler. + * + * @param[in] cmd + * Structured APDU command (CLA, INS, P1, P2, Lc, Command data). + * + * @return zero or positive integer if success, negative integer otherwise. + * + */ +int apdu_dispatcher(const command_t *cmd); diff --git a/src/common/base32.c b/src/common/base32.c new file mode 100644 index 00000000..7855f5e7 --- /dev/null +++ b/src/common/base32.c @@ -0,0 +1,94 @@ +// Base32 implementation +// +// Copyright 2010 Google Inc. +// Author: Markus Gutschke +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include "base32.h" + +int base32_decode(const uint8_t *encoded, uint8_t *result, int buf_size) { + int buffer = 0; + int bits_left = 0; + int count = 0; + for (const uint8_t *ptr = encoded; count < buf_size && *ptr; ++ptr) { + uint8_t ch = *ptr; + if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '-') { + continue; + } + buffer <<= 5; + + // Deal with commonly mistyped characters + if (ch == '0') { + ch = 'O'; + } else if (ch == '1') { + ch = 'L'; + } else if (ch == '8') { + ch = 'B'; + } + + // Look up one base32 digit + if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) { + ch = (ch & 0x1F) - 1; + } else if (ch >= '2' && ch <= '7') { + ch -= '2' - 26; + } else { + return -1; + } + + buffer |= ch; + bits_left += 5; + if (bits_left >= 8) { + result[count++] = buffer >> (bits_left - 8); + bits_left -= 8; + } + } + if (count < buf_size) { + result[count] = '\000'; + } + return count; +} + +int base32_encode(const uint8_t *data, int length, uint8_t *result, int buf_size) { + if (length < 0 || length > (1 << 28)) { + return -1; + } + int count = 0; + if (length > 0) { + uint32_t buffer = data[0]; + int next = 1; + int bits_left = 8; + while (count < buf_size && (bits_left > 0 || next < length)) { + if (bits_left < 5) { + if (next < length) { + buffer <<= 8; + buffer |= data[next++] & 0xFF; + bits_left += 8; + } else { + int pad = 5 - bits_left; + buffer <<= pad; + bits_left += pad; + } + } + int index = 0x1F & (buffer >> (bits_left - 5)); + bits_left -= 5; + result[count++] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"[index]; + } + } + if (count < buf_size) { + result[count] = '\000'; + } + return count; +} diff --git a/src/common/base32.h b/src/common/base32.h new file mode 100644 index 00000000..06b36193 --- /dev/null +++ b/src/common/base32.h @@ -0,0 +1,33 @@ +// Base32 implementation +// +// Copyright 2010 Google Inc. +// Author: Markus Gutschke +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Encode and decode from base32 encoding using the following alphabet: +// ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 +// This alphabet is documented in RFC 4648/3548 +// +// We allow white-space and hyphens, but all other characters are considered +// invalid. +// +// All functions return the number of output bytes or -1 on error. If the +// output buffer is too small, the result will silently be truncated. +#pragma once + +#include + +int base32_decode(const uint8_t *encoded, uint8_t *result, int buf_size); + +int base32_encode(const uint8_t *data, int length, uint8_t *result, int buf_size); diff --git a/src/common/base58.c b/src/common/base58.c new file mode 100644 index 00000000..d14c8434 --- /dev/null +++ b/src/common/base58.c @@ -0,0 +1,155 @@ +/***************************************************************************** + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // size_t +#include // uint*_t +#include // memmove, memset +#include // bool + +#include "base58.h" + +uint8_t const BASE58_TABLE[] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // + 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0xFF, 0xFF, // + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, // + 0x10, 0xFF, 0x11, 0x12, 0x13, 0x14, 0x15, 0xFF, 0x16, 0x17, 0x18, 0x19, // + 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // + 0xFF, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, // + 0xFF, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, // + 0x37, 0x38, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF // +}; + +char const BASE58_ALPHABET[] = { + '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', // + 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', // + 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', // + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' // +}; + +int base58_decode(const char *in, size_t in_len, uint8_t *out, size_t out_len) { + uint8_t tmp[MAX_DEC_INPUT_SIZE] = {0}; + uint8_t buffer[MAX_DEC_INPUT_SIZE] = {0}; + uint8_t j; + uint8_t start_at; + uint8_t zero_count = 0; + + if (in_len > MAX_DEC_INPUT_SIZE || in_len < 2) { + return -1; + } + + memmove(tmp, in, in_len); + + for (uint8_t i = 0; i < in_len; i++) { + if (in[i] >= sizeof(BASE58_TABLE)) { + return -1; + } + + tmp[i] = BASE58_TABLE[(int) in[i]]; + + if (tmp[i] == 0xFF) { + return -1; + } + } + + while ((zero_count < in_len) && (tmp[zero_count] == 0)) { + ++zero_count; + } + + j = in_len; + start_at = zero_count; + while (start_at < in_len) { + uint16_t remainder = 0; + for (uint8_t div_loop = start_at; div_loop < in_len; div_loop++) { + uint16_t digit256 = (uint16_t) (tmp[div_loop] & 0xFF); + uint16_t tmp_div = remainder * 58 + digit256; + tmp[div_loop] = (uint8_t) (tmp_div / 256); + remainder = tmp_div % 256; + } + + if (tmp[start_at] == 0) { + ++start_at; + } + + buffer[--j] = (uint8_t) remainder; + } + + while ((j < in_len) && (buffer[j] == 0)) { + ++j; + } + + int length = in_len - (j - zero_count); + + if ((int) out_len < length) { + return -1; + } + + memmove(out, buffer + j - zero_count, length); + + return length; +} + +int base58_encode(const uint8_t *in, size_t in_len, char *out, size_t out_len) { + uint8_t buffer[MAX_ENC_INPUT_SIZE * 138 / 100 + 1] = {0}; + size_t i, j; + size_t stop_at; + size_t zero_count = 0; + size_t output_size; + + if (in_len > MAX_ENC_INPUT_SIZE) { + return -1; + } + + while ((zero_count < in_len) && (in[zero_count] == 0)) { + ++zero_count; + } + + output_size = (in_len - zero_count) * 138 / 100 + 1; + stop_at = output_size - 1; + for (size_t start_at = zero_count; start_at < in_len; start_at++) { + int carry = in[start_at]; + for (j = output_size - 1; (int) j >= 0; j--) { + carry += 256 * buffer[j]; + buffer[j] = carry % 58; + carry /= 58; + + if (j <= stop_at - 1 && carry == 0) { + break; + } + } + stop_at = j; + } + + j = 0; + while (j < output_size && buffer[j] == 0) { + j += 1; + } + + if (out_len < zero_count + output_size - j) { + return -1; + } + + memset(out, BASE58_ALPHABET[0], zero_count); + + i = zero_count; + while (j < output_size) { + out[i++] = BASE58_ALPHABET[buffer[j++]]; + } + + return i; +} diff --git a/src/common/base58.h b/src/common/base58.h new file mode 100644 index 00000000..f214afd8 --- /dev/null +++ b/src/common/base58.h @@ -0,0 +1,52 @@ +#pragma once + +#include // size_t +#include // uint*_t +#include // bool + +/** + * Maximum length of input when decoding in base 58. + */ +#define MAX_DEC_INPUT_SIZE 164 +/** + * Maximum length of input when encoding in base 58. + */ +#define MAX_ENC_INPUT_SIZE 120 + +/** + * Decode input string in base 58. + * + * @see https://tools.ietf.org/html/draft-msporny-base58-02 + * + * @param[in] in + * Pointer to input string buffer. + * @param[in] in_len + * Length of the input string buffer. + * @param[out] out + * Pointer to output byte buffer. + * @param[in] out_len + * Maximum length to write in output byte buffer. + * + * @return number of bytes decoded, -1 otherwise. + * + */ +int base58_decode(const char *in, size_t in_len, uint8_t *out, size_t out_len); + +/** + * Encode input bytes in base 58. + * + * @see https://tools.ietf.org/html/draft-msporny-base58-02 + * + * @param[in] in + * Pointer to input byte buffer. + * @param[in] in_len + * Length of the input byte buffer. + * @param[out] out + * Pointer to output string buffer. + * @param[in] out_len + * Maximum length to write in output byte buffer. + * + * @return number of bytes encoded, -1 otherwise. + * + */ +int base58_encode(const uint8_t *in, size_t in_len, char *out, size_t out_len); diff --git a/src/common/bip32.c b/src/common/bip32.c new file mode 100644 index 00000000..800356a2 --- /dev/null +++ b/src/common/bip32.c @@ -0,0 +1,87 @@ +/***************************************************************************** + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // snprintf +#include // memset, strlen +#include // size_t +#include // uint*_t +#include // bool + +#include "bip32.h" +#include "read.h" + +bool bip32_path_read(const uint8_t *in, size_t in_len, uint32_t *out, size_t out_len) { + if (out_len == 0 || out_len > MAX_BIP32_PATH) { + return false; + } + + size_t offset = 0; + + for (size_t i = 0; i < out_len; i++) { + if (offset > in_len) { + return false; + } + out[i] = read_u32_be(in, offset); + offset += 4; + } + + return true; +} + +bool bip32_path_format(const uint32_t *bip32_path, + size_t bip32_path_len, + char *out, + size_t out_len) { + if (bip32_path_len == 0 || bip32_path_len > MAX_BIP32_PATH) { + return false; + } + + size_t offset = 0; + + for (uint16_t i = 0; i < bip32_path_len; i++) { + size_t written; + + snprintf(out + offset, out_len - offset, "%d", bip32_path[i] & 0x7FFFFFFFu); + written = strlen(out + offset); + if (written == 0 || written >= out_len - offset) { + memset(out, 0, out_len); + return false; + } + offset += written; + + if ((bip32_path[i] & 0x80000000u) != 0) { + snprintf(out + offset, out_len - offset, "'"); + written = strlen(out + offset); + if (written == 0 || written >= out_len - offset) { + memset(out, 0, out_len); + return false; + } + offset += written; + } + + if (i != bip32_path_len - 1) { + snprintf(out + offset, out_len - offset, "/"); + written = strlen(out + offset); + if (written == 0 || written >= out_len - offset) { + memset(out, 0, out_len); + return false; + } + offset += written; + } + } + + return true; +} diff --git a/src/common/bip32.h b/src/common/bip32.h new file mode 100644 index 00000000..3e2491e1 --- /dev/null +++ b/src/common/bip32.h @@ -0,0 +1,47 @@ +#pragma once + +#include // size_t +#include // uint*_t +#include // bool + +/** + * Maximum length of BIP32 path allowed. + */ +#define MAX_BIP32_PATH 10 + +/** + * Read BIP32 path from byte buffer. + * + * @param[in] in + * Pointer to input byte buffer. + * @param[in] in_len + * Length of input byte buffer. + * @param[out] out + * Pointer to output 32-bit integer buffer. + * @param[in] out_len + * Number of BIP32 paths read in the output buffer. + * + * @return true if success, false otherwise. + * + */ +bool bip32_path_read(const uint8_t *in, size_t in_len, uint32_t *out, size_t out_len); + +/** + * Format BIP32 path as string. + * + * @param[in] bip32_path + * Pointer to 32-bit integer input buffer. + * @param[in] bip32_path_len + * Maximum number of BIP32 paths in the input buffer. + * @param[out] out string + * Pointer to output string. + * @param[in] out_len + * Length of the output string. + * + * @return true if success, false otherwise. + * + */ +bool bip32_path_format(const uint32_t *bip32_path, + size_t bip32_path_len, + char *out, + size_t out_len); diff --git a/src/common/buffer.c b/src/common/buffer.c new file mode 100644 index 00000000..73c5751b --- /dev/null +++ b/src/common/buffer.c @@ -0,0 +1,165 @@ +/***************************************************************************** + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // uint*_t +#include // size_t +#include // bool +#include // memmove + +#include "buffer.h" +#include "read.h" +#include "varint.h" +#include "bip32.h" + +bool buffer_can_read(const buffer_t *buffer, size_t n) { + return buffer->size - buffer->offset >= n; +} + +bool buffer_seek_set(buffer_t *buffer, size_t offset) { + if (offset > buffer->size) { + return false; + } + + buffer->offset = offset; + + return true; +} + +bool buffer_seek_cur(buffer_t *buffer, size_t offset) { + if (buffer->offset + offset < buffer->offset || // overflow + buffer->offset + offset > buffer->size) { // exceed buffer size + return false; + } + + buffer->offset += offset; + + return true; +} + +bool buffer_seek_end(buffer_t *buffer, size_t offset) { + if (offset > buffer->size) { + return false; + } + + buffer->offset = buffer->size - offset; + + return true; +} + +bool buffer_read_u8(buffer_t *buffer, uint8_t *value) { + if (!buffer_can_read(buffer, 1)) { + *value = 0; + + return false; + } + + *value = buffer->ptr[buffer->offset]; + buffer_seek_cur(buffer, 1); + + return true; +} + +bool buffer_read_u16(buffer_t *buffer, uint16_t *value, endianness_t endianness) { + if (!buffer_can_read(buffer, 2)) { + *value = 0; + + return false; + } + + *value = ((endianness == BE) ? read_u16_be(buffer->ptr, buffer->offset) + : read_u16_le(buffer->ptr, buffer->offset)); + + buffer_seek_cur(buffer, 2); + + return true; +} + +bool buffer_read_u32(buffer_t *buffer, uint32_t *value, endianness_t endianness) { + if (!buffer_can_read(buffer, 4)) { + *value = 0; + + return false; + } + + *value = ((endianness == BE) ? read_u32_be(buffer->ptr, buffer->offset) + : read_u32_le(buffer->ptr, buffer->offset)); + + buffer_seek_cur(buffer, 4); + + return true; +} + +bool buffer_read_u64(buffer_t *buffer, uint64_t *value, endianness_t endianness) { + if (!buffer_can_read(buffer, 8)) { + *value = 0; + + return false; + } + + *value = ((endianness == BE) ? read_u64_be(buffer->ptr, buffer->offset) + : read_u64_le(buffer->ptr, buffer->offset)); + + buffer_seek_cur(buffer, 8); + + return true; +} + +bool buffer_read_varint(buffer_t *buffer, uint64_t *value) { + int length = varint_read(buffer->ptr + buffer->offset, buffer->size - buffer->offset, value); + + if (length < 0) { + *value = 0; + + return false; + } + + buffer_seek_cur(buffer, (size_t) length); + + return true; +} + +bool buffer_read_bip32_path(buffer_t *buffer, uint32_t *out, size_t out_len) { + if (!bip32_path_read(buffer->ptr + buffer->offset, + buffer->size - buffer->offset, + out, + out_len)) { + return false; + } + + buffer_seek_cur(buffer, sizeof(*out) * out_len); + + return true; +} + +bool buffer_copy(const buffer_t *buffer, uint8_t *out, size_t out_len) { + if (buffer->size - buffer->offset > out_len) { + return false; + } + + memmove(out, buffer->ptr + buffer->offset, buffer->size - buffer->offset); + + return true; +} + +bool buffer_move(buffer_t *buffer, uint8_t *out, size_t out_len) { + if (!buffer_copy(buffer, out, out_len)) { + return false; + } + + buffer_seek_cur(buffer, out_len); + + return true; +} diff --git a/src/common/buffer.h b/src/common/buffer.h new file mode 100644 index 00000000..f307cf71 --- /dev/null +++ b/src/common/buffer.h @@ -0,0 +1,192 @@ +#pragma once + +#include // uint*_t +#include // size_t +#include // bool + +/** + * Enumeration for endianness. + */ +typedef enum { + BE, // Big Endian + LE // Little Endian +} endianness_t; + +/** + * Struct for buffer with size and offset. + */ +typedef struct { + const uint8_t *ptr; // Pointer to byte buffer + size_t size; // Size of byte buffer + size_t offset; // Offset in byte buffer +} buffer_t; + +/** + * Tell whether buffer can read bytes or not. + * + * @param[in] buffer + * Pointer to input buffer struct. + * @param[in] n + * Number of bytes to read in buffer. + * + * @return true if success, false otherwise. + * + */ +bool buffer_can_read(const buffer_t *buffer, size_t n); + +/** + * Seek the buffer to specific offset. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[in] offset + * Specific offset to seek. + * + * @return true if success, false otherwise. + * + */ +bool buffer_seek_set(buffer_t *buffer, size_t offset); + +/** + * Seek buffer relatively to current offset. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[in] offset + * Offset to seek relatively to `buffer->offset`. + * + * @return true if success, false otherwise. + * + */ +bool buffer_seek_cur(buffer_t *buffer, size_t offset); + +/** + * Seek the buffer relatively to the end. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[in] offset + * Offset to seek relatively to `buffer->size`. + * + * @return true if success, false otherwise. + * + */ +bool buffer_seek_end(buffer_t *buffer, size_t offset); + +/** + * Read 1 byte from buffer into uint8_t. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[out] value + * Pointer to 8-bit unsigned integer read from buffer. + * + * @return true if success, false otherwise. + * + */ +bool buffer_read_u8(buffer_t *buffer, uint8_t *value); + +/** + * Read 2 bytes from buffer into uint16_t. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[out] value + * Pointer to 16-bit unsigned integer read from buffer. + * @param[in] endianness + * Either BE (Big Endian) or LE (Little Endian). + * + * @return true if success, false otherwise. + * + */ +bool buffer_read_u16(buffer_t *buffer, uint16_t *value, endianness_t endianness); + +/** + * Read 4 bytes from buffer into uint32_t. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[out] value + * Pointer to 32-bit unsigned integer read from buffer. + * @param[in] endianness + * Either BE (Big Endian) or LE (Little Endian). + * + * @return true if success, false otherwise. + * + */ +bool buffer_read_u32(buffer_t *buffer, uint32_t *value, endianness_t endianness); + +/** + * Read 8 bytes from buffer into uint64_t. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[out] value + * Pointer to 64-bit unsigned integer read from buffer. + * @param[in] endianness + * Either BE (Big Endian) or LE (Little Endian). + * + * @return true if success, false otherwise. + * + */ +bool buffer_read_u64(buffer_t *buffer, uint64_t *value, endianness_t endianness); + +/** + * Read Bitcoin-like varint from buffer into uint64_t. + * + * @see https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[out] value + * Pointer to 64-bit unsigned integer read from buffer. + * + * @return true if success, false otherwise. + * + */ +bool buffer_read_varint(buffer_t *buffer, uint64_t *value); + +/** + * Read BIP32 path from buffer. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[out] out + * Pointer to output 32-bit integer buffer. + * @param[in] out_len + * Number of BIP32 paths read in the output buffer. + * + * @return true if success, false otherwise. + * + */ +bool buffer_read_bip32_path(buffer_t *buffer, uint32_t *out, size_t out_len); + +/** + * Copy bytes from buffer without moving offset. + * + * @param[in] buffer + * Pointer to input buffer struct. + * @param[out] out + * Pointer to output byte buffer. + * @param[in] out_len + * Length of output byte buffer. + * + * @return true if success, false otherwise. + * + */ +bool buffer_copy(const buffer_t *buffer, uint8_t *out, size_t out_len); + +/** + * Move bytes from buffer. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[out] out + * Pointer to output byte buffer. + * @param[in] out_len + * Length of output byte buffer. + * + * @return true if success, false otherwise. + * + */ +bool buffer_move(buffer_t *buffer, uint8_t *out, size_t out_len); diff --git a/src/common/format.c b/src/common/format.c new file mode 100644 index 00000000..4c7a0756 --- /dev/null +++ b/src/common/format.c @@ -0,0 +1,157 @@ +/***************************************************************************** + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // size_t +#include // int*_t, uint*_t +#include // strncpy, memmove +#include // bool + +#include "format.h" + +bool format_i64(char *dst, size_t dst_len, const int64_t value) { + char temp[] = "-9223372036854775808"; + + char *ptr = temp; + int64_t num = value; + int sign = 1; + + if (value < 0) { + sign = -1; + } + + while (num != 0) { + *ptr++ = '0' + (num % 10) * sign; + num /= 10; + } + + if (value < 0) { + *ptr++ = '-'; + } else if (value == 0) { + *ptr++ = '0'; + } + + int distance = (ptr - temp) + 1; + + if ((int) dst_len < distance) { + return false; + } + + size_t index = 0; + + while (--ptr >= temp) { + dst[index++] = *ptr; + } + + dst[index] = '\0'; + + return true; +} + +bool format_u64(char *out, size_t outLen, uint64_t in) { + uint8_t i = 0; + + if (outLen == 0) { + return false; + } + outLen--; + + while (in > 9) { + out[i] = in % 10 + '0'; + in /= 10; + i++; + if (i + 1 > outLen) { + return false; + } + } + out[i] = in + '0'; + out[i + 1] = '\0'; + + uint8_t j = 0; + char tmp; + + // revert the string + while (j < i) { + // swap out[j] and out[i] + tmp = out[j]; + out[j] = out[i]; + out[i] = tmp; + + i--; + j++; + } + return true; +} + +bool format_fpu64(char *dst, size_t dst_len, const uint64_t value, uint8_t decimals) { + char buffer[21] = {0}; + + if (!format_u64(buffer, sizeof(buffer), value)) { + return false; + } + + size_t digits = strlen(buffer); + + if (digits <= decimals) { + if (dst_len <= 2 + decimals - digits) { + return false; + } + *dst++ = '0'; + *dst++ = '.'; + for (uint16_t i = 0; i < decimals - digits; i++, dst++) { + *dst = '0'; + } + dst_len -= 2 + decimals - digits; + strncpy(dst, buffer, dst_len); + } else { + if (dst_len <= digits + 1 + decimals) { + return false; + } + + const size_t shift = digits - decimals; + memmove(dst, buffer, shift); + dst[shift] = '.'; + strncpy(dst + shift + 1, buffer + shift, decimals); + } + + return true; +} + +int format_hex(const uint8_t *in, size_t in_len, char *out, size_t out_len) { + if (out_len < 2 * in_len + 1) { + return -1; + } + + const char hex[] = "0123456789abcdef"; + size_t i = 0; + int written = 0; + + while (i < in_len && (i * 2 + (2 + 1)) <= out_len) { + uint8_t high_nibble = (in[i] & 0xF0) >> 4; + *out = hex[high_nibble]; + out++; + + uint8_t low_nibble = in[i] & 0x0F; + *out = hex[low_nibble]; + out++; + + i++; + written += 2; + } + + *out = '\0'; + + return written + 1; +} diff --git a/src/common/format.h b/src/common/format.h new file mode 100644 index 00000000..8e6a21b0 --- /dev/null +++ b/src/common/format.h @@ -0,0 +1,69 @@ +#pragma once + +#include // size_t +#include // int*_t, uint*_t +#include // bool + +/** + * Format 64-bit signed integer as string. + * + * @param[out] dst + * Pointer to output string. + * @param[in] dst_len + * Length of output string. + * @param[in] value + * 64-bit signed integer to format. + * + * @return true if success, false otherwise. + * + */ +bool format_i64(char *dst, size_t dst_len, const int64_t value); + +/** + * Format 64-bit unsigned integer as string. + * + * @param[out] dst + * Pointer to output string. + * @param[in] dst_len + * Length of output string. + * @param[in] value + * 64-bit unsigned integer to format. + * + * @return true if success, false otherwise. + * + */ +bool format_u64(char *dst, size_t dst_len, uint64_t value); + +/** + * Format 64-bit unsigned integer as string with decimals. + * + * @param[out] dst + * Pointer to output string. + * @param[in] dst_len + * Length of output string. + * @param[in] value + * 64-bit unsigned integer to format. + * @param[in] decimals + * Number of digits after decimal separator. + * + * @return true if success, false otherwise. + * + */ +bool format_fpu64(char *dst, size_t dst_len, const uint64_t value, uint8_t decimals); + +/** + * Format byte buffer to lowercase hexadecimal string. + * + * @param[in] in + * Pointer to input byte buffer. + * @param[in] in_len + * Length of input byte buffer. + * @param[out] out + * Pointer to output string. + * @param[in] out_len + * Length of output string. + * + * @return number of bytes written if success, -1 otherwise. + * + */ +int format_hex(const uint8_t *in, size_t in_len, char *out, size_t out_len); diff --git a/src/common/macros.h b/src/common/macros.h new file mode 100644 index 00000000..13f75a3c --- /dev/null +++ b/src/common/macros.h @@ -0,0 +1,6 @@ +#pragma once + +/** + * Macro for the size of a specific structure field. + */ +#define MEMBER_SIZE(type, member) (sizeof(((type *) 0)->member)) diff --git a/src/common/read.c b/src/common/read.c new file mode 100644 index 00000000..62c4e71b --- /dev/null +++ b/src/common/read.c @@ -0,0 +1,64 @@ +/***************************************************************************** + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // uint*_t +#include // size_t + +uint16_t read_u16_be(const uint8_t *ptr, size_t offset) { + return (uint16_t) ptr[offset + 0] << 8 | // + (uint16_t) ptr[offset + 1] << 0; +} + +uint32_t read_u32_be(const uint8_t *ptr, size_t offset) { + return (uint32_t) ptr[offset + 0] << 24 | // + (uint32_t) ptr[offset + 1] << 16 | // + (uint32_t) ptr[offset + 2] << 8 | // + (uint32_t) ptr[offset + 3] << 0; +} + +uint64_t read_u64_be(const uint8_t *ptr, size_t offset) { + return (uint64_t) ptr[offset + 0] << 56 | // + (uint64_t) ptr[offset + 1] << 48 | // + (uint64_t) ptr[offset + 2] << 40 | // + (uint64_t) ptr[offset + 3] << 32 | // + (uint64_t) ptr[offset + 4] << 24 | // + (uint64_t) ptr[offset + 5] << 16 | // + (uint64_t) ptr[offset + 6] << 8 | // + (uint64_t) ptr[offset + 7] << 0; +} + +uint16_t read_u16_le(const uint8_t *ptr, size_t offset) { + return (uint16_t) ptr[offset + 0] << 0 | // + (uint16_t) ptr[offset + 1] << 8; +} + +uint32_t read_u32_le(const uint8_t *ptr, size_t offset) { + return (uint32_t) ptr[offset + 0] << 0 | // + (uint32_t) ptr[offset + 1] << 8 | // + (uint32_t) ptr[offset + 2] << 16 | // + (uint32_t) ptr[offset + 3] << 24; +} + +uint64_t read_u64_le(const uint8_t *ptr, size_t offset) { + return (uint64_t) ptr[offset + 0] << 0 | // + (uint64_t) ptr[offset + 1] << 8 | // + (uint64_t) ptr[offset + 2] << 16 | // + (uint64_t) ptr[offset + 3] << 24 | // + (uint64_t) ptr[offset + 4] << 32 | // + (uint64_t) ptr[offset + 5] << 40 | // + (uint64_t) ptr[offset + 6] << 48 | // + (uint64_t) ptr[offset + 7] << 56; +} diff --git a/src/common/read.h b/src/common/read.h new file mode 100644 index 00000000..61cfa8c0 --- /dev/null +++ b/src/common/read.h @@ -0,0 +1,82 @@ +#pragma once + +#include // uint*_t +#include // size_t + +/** + * Read 2 bytes as Big Endian from byte buffer. + * + * @param[in] ptr + * Pointer to byte buffer. + * @param[in] offset + * Offset in the byte buffer. + * + * @return 2 bytes value read from buffer. + * + */ +uint16_t read_u16_be(const uint8_t *ptr, size_t offset); + +/** + * Read 4 bytes as Big Endian from byte buffer. + * + * @param[in] ptr + * Pointer to byte buffer. + * @param[in] offset + * Offset in the byte buffer. + * + * @return 4 bytes value read from buffer. + * + */ +uint32_t read_u32_be(const uint8_t *ptr, size_t offset); + +/** + * Read 8 bytes as Big Endian from byte buffer. + * + * @param[in] ptr + * Pointer to byte buffer. + * @param[in] offset + * Offset in the byte buffer. + * + * @return 8 bytes value read from buffer. + * + */ +uint64_t read_u64_be(const uint8_t *ptr, size_t offset); + +/** + * Read 2 bytes as Little Endian from byte buffer. + * + * @param[in] ptr + * Pointer to byte buffer. + * @param[in] offset + * Offset in the byte buffer. + * + * @return 2 bytes value read from buffer. + * + */ +uint16_t read_u16_le(const uint8_t *ptr, size_t offset); + +/** + * Read 4 bytes as Little Endian from byte buffer. + * + * @param[in] ptr + * Pointer to byte buffer. + * @param[in] offset + * Offset in the byte buffer. + * + * @return 4 bytes value read from buffer. + * + */ +uint32_t read_u32_le(const uint8_t *ptr, size_t offset); + +/** + * Read 8 bytes as Little Endian from byte buffer. + * + * @param[in] ptr + * Pointer to byte buffer. + * @param[in] offset + * Offset in the byte buffer. + * + * @return 8 bytes value read from buffer. + * + */ +uint64_t read_u64_le(const uint8_t *ptr, size_t offset); diff --git a/src/common/varint.c b/src/common/varint.c new file mode 100644 index 00000000..f644862c --- /dev/null +++ b/src/common/varint.c @@ -0,0 +1,101 @@ +/***************************************************************************** + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // uint*_t +#include // size_t +#include // bool + +#include "varint.h" +#include "write.h" +#include "read.h" + +uint8_t varint_size(uint64_t value) { + if (value <= 0xFC) { + return 1; + } + + if (value <= UINT16_MAX) { + return 3; + } + + if (value <= UINT32_MAX) { + return 5; + } + + return 9; // <= UINT64_MAX +} + +int varint_read(const uint8_t *in, size_t in_len, uint64_t *value) { + if (in_len < 1) { + return -1; + } + + uint8_t prefix = in[0]; + + if (prefix == 0xFD) { + if (in_len < 3) { + return -1; + } + *value = (uint64_t) read_u16_le(in, 1); + return 3; + } + + if (prefix == 0xFE) { + if (in_len < 5) { + return -1; + } + *value = (uint64_t) read_u32_le(in, 1); + return 5; + } + + if (prefix == 0xFF) { + if (in_len < 9) { + return -1; + } + *value = (uint64_t) read_u64_le(in, 1); + return 9; + } + + *value = (uint64_t) prefix; // prefix <= 0xFC + + return 1; +} + +int varint_write(uint8_t *out, size_t offset, uint64_t value) { + uint8_t varint_len = varint_size(value); + + switch (varint_len) { + case 1: + out[offset] = (uint8_t) value; + break; + case 3: + out[offset++] = 0xFD; + write_u16_le(out, offset, (uint16_t) value); + break; + case 5: + out[offset++] = 0xFE; + write_u32_le(out, offset, (uint32_t) value); + break; + case 9: + out[offset++] = 0xFF; + write_u64_le(out, offset, (uint64_t) value); + break; + default: + return -1; + } + + return varint_len; +} diff --git a/src/common/varint.h b/src/common/varint.h new file mode 100644 index 00000000..80aeb430 --- /dev/null +++ b/src/common/varint.h @@ -0,0 +1,52 @@ +#pragma once + +#include // uint*_t +#include // size_t +#include // bool + +/** + * Size of value represented as Bitcoin-like varint. + * + * @see https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer + * + * @param[in] value + * 64-bit unsigned integer to compute varint size. + * + * @return number of bytes to write value as varint (1, 3, 5 or 9 bytes). + * + */ +uint8_t varint_size(uint64_t value); + +/** + * Read Bitcoin-like varint from byte buffer. + * + * @see https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer + * + * @param[in] in + * Pointer to input byte buffer. + * @param[in] in_len + * Length of the input byte buffer. + * @param[out] value + * Pointer to 64-bit unsigned integer to output varint. + * + * @return number of bytes read (1, 3, 5 or 9 bytes), -1 otherwise. + * + */ +int varint_read(const uint8_t *in, size_t in_len, uint64_t *value); + +/** + * Write Bitcoin-like varint to byte buffer. + * + * @see https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer + * + * @param[out] out + * Pointer to output byte buffer. + * @param[in] offset + * Offset in the output byte buffer. + * @param[in] value + * 64-bit unsigned integer to write as varint. + * + * @return number of bytes written (1, 3, 5 or 9 bytes), -1 otherwise. + * + */ +int varint_write(uint8_t *out, size_t offset, uint64_t value); diff --git a/src/common/write.c b/src/common/write.c new file mode 100644 index 00000000..ffcd25b7 --- /dev/null +++ b/src/common/write.c @@ -0,0 +1,64 @@ +/***************************************************************************** + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // uint*_t +#include // size_t + +void write_u16_be(uint8_t *ptr, size_t offset, uint16_t value) { + ptr[offset + 0] = (uint8_t) (value >> 8); + ptr[offset + 1] = (uint8_t) (value >> 0); +} + +void write_u32_be(uint8_t *ptr, size_t offset, uint32_t value) { + ptr[offset + 0] = (uint8_t) (value >> 24); + ptr[offset + 1] = (uint8_t) (value >> 16); + ptr[offset + 2] = (uint8_t) (value >> 8); + ptr[offset + 3] = (uint8_t) (value >> 0); +} + +void write_u64_be(uint8_t *ptr, size_t offset, uint64_t value) { + ptr[offset + 0] = (uint8_t) (value >> 56); + ptr[offset + 1] = (uint8_t) (value >> 48); + ptr[offset + 2] = (uint8_t) (value >> 40); + ptr[offset + 3] = (uint8_t) (value >> 32); + ptr[offset + 4] = (uint8_t) (value >> 24); + ptr[offset + 5] = (uint8_t) (value >> 16); + ptr[offset + 6] = (uint8_t) (value >> 8); + ptr[offset + 7] = (uint8_t) (value >> 0); +} + +void write_u16_le(uint8_t *ptr, size_t offset, uint16_t value) { + ptr[offset + 0] = (uint8_t) (value >> 0); + ptr[offset + 1] = (uint8_t) (value >> 8); +} + +void write_u32_le(uint8_t *ptr, size_t offset, uint32_t value) { + ptr[offset + 0] = (uint8_t) (value >> 0); + ptr[offset + 1] = (uint8_t) (value >> 8); + ptr[offset + 2] = (uint8_t) (value >> 16); + ptr[offset + 3] = (uint8_t) (value >> 24); +} + +void write_u64_le(uint8_t *ptr, size_t offset, uint64_t value) { + ptr[offset + 0] = (uint8_t) (value >> 0); + ptr[offset + 1] = (uint8_t) (value >> 8); + ptr[offset + 2] = (uint8_t) (value >> 16); + ptr[offset + 3] = (uint8_t) (value >> 24); + ptr[offset + 4] = (uint8_t) (value >> 32); + ptr[offset + 5] = (uint8_t) (value >> 40); + ptr[offset + 6] = (uint8_t) (value >> 48); + ptr[offset + 7] = (uint8_t) (value >> 56); +} diff --git a/src/common/write.h b/src/common/write.h new file mode 100644 index 00000000..0418f5c6 --- /dev/null +++ b/src/common/write.h @@ -0,0 +1,82 @@ +#pragma once + +#include // uint*_t +#include // size_t + +/** + * Write 16-bit unsigned integer value as Big Endian. + * + * @param[out] ptr + * Pointer to output byte buffer. + * @param[in] offset + * Offset in the output byte buffer. + * @param[in] value + * 16-bit unsigned integer to write in output byte buffer as Big Endian. + * + */ +void write_u16_be(const uint8_t *ptr, size_t offset, uint16_t value); + +/** + * Write 32-bit unsigned integer value as Big Endian. + * + * @param[out] ptr + * Pointer to output byte buffer. + * @param[in] offset + * Offset in the output byte buffer. + * @param[in] value + * 32-bit unsigned integer to write in output byte buffer as Big Endian. + * + */ +void write_u32_be(uint8_t *ptr, size_t offset, uint32_t value); + +/** + * Write 64-bit unsigned integer value as Big Endian. + * + * @param[out] ptr + * Pointer to output byte buffer. + * @param[in] offset + * Offset in the output byte buffer. + * @param[in] value + * 64-bit unsigned integer to write in output byte buffer as Big Endian. + * + */ +void write_u64_be(uint8_t *ptr, size_t offset, uint64_t value); + +/** + * Write 16-bit unsigned integer value as Little Endian. + * + * @param[out] ptr + * Pointer to output byte buffer. + * @param[in] offset + * Offset in the output byte buffer. + * @param[in] value + * 16-bit unsigned integer to write in output byte buffer as Little Endian. + * + */ +void write_u16_le(uint8_t *ptr, size_t offset, uint16_t value); + +/** + * Write 32-bit unsigned integer value as Little Endian. + * + * @param[out] ptr + * Pointer to output byte buffer. + * @param[in] offset + * Offset in the output byte buffer. + * @param[in] value + * 32-bit unsigned integer to write in output byte buffer as Little Endian. + * + */ +void write_u32_le(uint8_t *ptr, size_t offset, uint32_t value); + +/** + * Write 64-bit unsigned integer value as Little Endian. + * + * @param[out] ptr + * Pointer to output byte buffer. + * @param[in] offset + * Offset in the output byte buffer. + * @param[in] value + * 64-bit unsigned integer to write in output byte buffer as Little Endian. + * + */ +void write_u64_le(uint8_t *ptr, size_t offset, uint64_t value); diff --git a/src/crypto.c b/src/crypto.c new file mode 100644 index 00000000..b27e0a87 --- /dev/null +++ b/src/crypto.c @@ -0,0 +1,119 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // uint*_t +#include // explicit_bzero + +#include "./crypto.h" +#include "./globals.h" + +#define STELLAR_SEED_KEY "ed25519 seed" + +int crypto_derive_private_key(cx_ecfp_private_key_t *private_key, + const uint32_t *bip32_path, + uint8_t bip32_path_len) { + uint8_t raw_private_key[RAW_ED25519_PRIVATE_KEY_SIZE] = {0}; + + BEGIN_TRY { + TRY { + // derive the seed with bip32_path + os_perso_derive_node_with_seed_key(HDW_ED25519_SLIP10, + CX_CURVE_Ed25519, + bip32_path, + bip32_path_len, + raw_private_key, + NULL, + (unsigned char *) STELLAR_SEED_KEY, + sizeof(STELLAR_SEED_KEY)); + // new private_key from raw + cx_ecfp_init_private_key(CX_CURVE_Ed25519, + raw_private_key, + sizeof(raw_private_key), + private_key); + } + CATCH_OTHER(e) { + THROW(e); + } + FINALLY { + explicit_bzero(&raw_private_key, sizeof(raw_private_key)); + } + } + END_TRY; + + return 0; +} + +// converts little endian 32 byte public key to big endian 32 byte public key +void raw_public_key_le_to_be(cx_ecfp_public_key_t *public_key, + uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE]) { + // copy public key little endian to big endian + for (uint8_t i = 0; i < RAW_ED25519_PUBLIC_KEY_SIZE; i++) { + raw_public_key[i] = public_key->W[64 - i]; + } + // set sign bit + if ((public_key->W[32] & 1) != 0) { + raw_public_key[31] |= 0x80; + } +} + +int crypto_init_public_key(cx_ecfp_private_key_t *private_key, + cx_ecfp_public_key_t *public_key, + uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE]) { + // generate corresponding public key + cx_ecfp_generate_pair(CX_CURVE_Ed25519, public_key, private_key, 1); + raw_public_key_le_to_be(public_key, raw_public_key); + return 0; +} + +int crypto_sign_message(const uint8_t *message, + uint8_t message_len, + const uint8_t *signature, + uint8_t signature_len) { + cx_ecfp_private_key_t private_key = {0}; + int sig_len = 0; + + // derive private key according to BIP32 path + crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len); + + BEGIN_TRY { + TRY { + sig_len = cx_eddsa_sign(&private_key, + CX_LAST, + CX_SHA512, + message, + message_len, + NULL, + 0, + (unsigned char *) signature, + signature_len, + NULL); + PRINTF("Signature: %.*H\n", sig_len, signature); + } + CATCH_OTHER(e) { + THROW(e); + } + FINALLY { + explicit_bzero(&private_key, sizeof(private_key)); + } + } + END_TRY; + + if (sig_len < 0) { + return -1; + } + return 0; +} diff --git a/src/crypto.h b/src/crypto.h new file mode 100644 index 00000000..122fba87 --- /dev/null +++ b/src/crypto.h @@ -0,0 +1,58 @@ +#pragma once + +#include // uint*_t + +#include "os.h" +#include "cx.h" + +#include "./types.h" + +/** + * Derive private key given BIP32 path. + * + * @param[out] private_key + * Pointer to private key. + * @param[in] bip32_path + * Pointer to buffer with BIP32 path. + * @param[in] bip32_path_len + * Number of path in BIP32 path. + * + * @return 0 if success, -1 otherwise. + * + * @throw INVALID_PARAMETER + * + */ +int crypto_derive_private_key(cx_ecfp_private_key_t *private_key, + const uint32_t *bip32_path, + uint8_t bip32_path_len); +/** + * Initialize public key given private key. + * + * @param[in] private_key + * Pointer to private key. + * @param[out] public_key + * Pointer to public key. + * @param[out] raw_public_key + * Pointer to raw public key. + * + * @return 0 if success, -1 otherwise. + * + * @throw INVALID_PARAMETER + * + */ +int crypto_init_public_key(cx_ecfp_private_key_t *private_key, + cx_ecfp_public_key_t *public_key, + uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE]); + +/** + * Sign message. + * + * @return 0 if success, -1 otherwise. + * + * @throw INVALID_PARAMETER + * + */ +int crypto_sign_message(const uint8_t *message, + uint8_t message_len, + const uint8_t *signature, + uint8_t signature_len); diff --git a/src/globals.c b/src/globals.c new file mode 100644 index 00000000..c0f9b54d --- /dev/null +++ b/src/globals.c @@ -0,0 +1,18 @@ +#include "./globals.h" + +uint8_t G_io_seproxyhal_spi_buffer[IO_SEPROXYHAL_BUFFER_SIZE_B]; +ux_state_t G_ux; +bolos_ux_params_t G_ux_params; +io_state_e G_io_state; +uint32_t G_output_len; + +global_ctx_t G_context; +swap_values_t G_swap_values; +bool G_called_from_swap; + +// We define these variables as global variables to reduce memory usage. +char G_ui_detail_caption[DETAIL_CAPTION_MAX_LENGTH]; +char G_ui_detail_value[DETAIL_VALUE_MAX_LENGTH]; +volatile uint8_t G_ui_current_state; +uint8_t G_ui_current_data_index; +ui_action_validate_cb G_ui_validate_callback; diff --git a/src/globals.h b/src/globals.h new file mode 100644 index 00000000..91073a71 --- /dev/null +++ b/src/globals.h @@ -0,0 +1,58 @@ +#pragma once + +#include + +#include "ux.h" + +#include "./types.h" + +/** + * Global buffer for interactions between SE and MCU. + */ +extern uint8_t G_io_seproxyhal_spi_buffer[IO_SEPROXYHAL_BUFFER_SIZE_B]; + +/** + * Global variable with the lenght of APDU response to send back. + */ +extern uint32_t G_output_len; + +/** + * Global structure with the parameters to exchange with the BOLOS UX application. + */ +extern bolos_ux_params_t G_ux_params; + +/** + * Global enumeration with the state of IO (READY, RECEIVING, WAITING). + */ +extern io_state_e G_io_state; + +/** + * Global context for user requests. + */ +extern global_ctx_t G_context; + +/** + * Global context for swap requests. + */ +extern swap_values_t G_swap_values; + +/** + * Is it called through the exchange app + */ +extern bool G_called_from_swap; + +/** + * Global variable with the caption of the current UI detail. + */ +extern char G_ui_detail_caption[DETAIL_CAPTION_MAX_LENGTH]; + +/** + * Global variable with the value of the current UI detail. + */ +extern char G_ui_detail_value[DETAIL_VALUE_MAX_LENGTH]; + +extern volatile uint8_t G_ui_current_state; + +extern uint8_t G_ui_current_data_index; + +extern ui_action_validate_cb G_ui_validate_callback; diff --git a/src/handler/get_app_configuration.c b/src/handler/get_app_configuration.c new file mode 100644 index 00000000..f82fad6e --- /dev/null +++ b/src/handler/get_app_configuration.c @@ -0,0 +1,49 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // uint*_t +#include // UINT8_MAX +#include // _Static_assert + +#include "../io.h" +#include "../sw.h" +#include "../types.h" +#include "../settings.h" +#include "../common/buffer.h" + +int handler_get_app_configuration() { + PRINTF("handler_get_app_configuration invoked\n"); + + _Static_assert(APP_VERSION_SIZE == 3, "Length of (MAJOR || MINOR || PATCH) must be 3!"); + _Static_assert(MAJOR_VERSION >= 0 && MAJOR_VERSION <= UINT8_MAX, + "MAJOR version must be between 0 and 255!"); + _Static_assert(MINOR_VERSION >= 0 && MINOR_VERSION <= UINT8_MAX, + "MINOR version must be between 0 and 255!"); + _Static_assert(PATCH_VERSION >= 0 && PATCH_VERSION <= UINT8_MAX, + "PATCH version must be between 0 and 255!"); + + return io_send_response( + &(const buffer_t){.ptr = + (uint8_t[APP_CONFIGURATION_SIZE + APP_VERSION_SIZE]){ + (uint8_t) HAS_SETTING(S_HASH_SIGNING_ENABLED), + (uint8_t) MAJOR_VERSION, + (uint8_t) MINOR_VERSION, + (uint8_t) PATCH_VERSION}, + .size = APP_CONFIGURATION_SIZE + APP_VERSION_SIZE, + .offset = 0}, + SW_OK); +} diff --git a/src/handler/get_public_key.c b/src/handler/get_public_key.c new file mode 100644 index 00000000..c447cd45 --- /dev/null +++ b/src/handler/get_public_key.c @@ -0,0 +1,60 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // uint*_t +#include // bool +#include // size_t +#include // memset, explicit_bzero + +#include "./handler.h" +#include "../globals.h" +#include "../types.h" +#include "../io.h" +#include "../sw.h" +#include "../crypto.h" +#include "../send_response.h" +#include "../common/buffer.h" +#include "../ui/ui.h" + +int handler_get_public_key(buffer_t *cdata, bool display) { + PRINTF("handler_get_public_key invoked\n"); + + explicit_bzero(&G_context, sizeof(G_context)); + G_context.req_type = CONFIRM_ADDRESS; + G_context.state = STATE_NONE; + + cx_ecfp_private_key_t private_key = {0}; + cx_ecfp_public_key_t public_key = {0}; + + if (!buffer_read_u8(cdata, &G_context.bip32_path_len) || + !buffer_read_bip32_path(cdata, G_context.bip32_path, (size_t) G_context.bip32_path_len)) { + return io_send_sw(SW_WRONG_DATA_LENGTH); + } + + // derive private key according to BIP32 path + crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len); + // generate corresponding public key + crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key); + // reset private key + explicit_bzero(&private_key, sizeof(private_key)); + + if (display) { + return ui_display_address(); + } + + return send_response_pubkey(); +} diff --git a/src/handler/handler.h b/src/handler/handler.h new file mode 100644 index 00000000..940e77d1 --- /dev/null +++ b/src/handler/handler.h @@ -0,0 +1,57 @@ +#pragma once + +#include // bool +#include "../common/buffer.h" + +/** + * Handler for INS_INS_GET_APP_CONFIGURATION command. Send APDU response with version + * of the application. + * + * @see MAJOR_VERSION, MINOR_VERSION and PATCH_VERSION in Makefile. + * + * @return zero or positive integer if success, negative integer otherwise. + * + */ +int handler_get_app_configuration(void); + +/** + * Handler for INS_GET_PUBLIC_KEY command. If successfully parse BIP32 path, + * derive public key and send APDU response. + * + * @param[in,out] cdata + * Command data with BIP32 path. + * @param[in] display + * Whether to display address on screen or not. + * + * @return zero or positive integer if success, negative integer otherwise. + * + */ +int handler_get_public_key(buffer_t *cdata, bool display); + +/** + * Handler for INS_SIGN_TX command. If successfully parse BIP32 path + * and transaction, sign transaction and send APDU response. + * + * @param[in,out] cdata + * Command data with BIP32 path and raw transaction serialized. + * @param[in] is_first_chunk + * Is the first data chunk + * @param[in] more + * Whether more APDU chunk to be received or not. + * + * @return zero or positive integer if success, negative integer otherwise. + * + */ +int handler_sign_tx(buffer_t *cdata, bool is_first_chunk, bool more); + +/** + * Handler for INS_SIGN_TX_HASH command. If successfully parse BIP32 path + * and transaction hash, sign transaction hash and send APDU response. + * * + * @param[in,out] cdata + * Command data with BIP32 path and transaction hash. + * + * @return zero or positive integer if success, negative integer otherwise. + * + */ +int handler_sign_tx_hash(buffer_t *cdata); diff --git a/src/handler/sign_transaction.c b/src/handler/sign_transaction.c new file mode 100644 index 00000000..16892388 --- /dev/null +++ b/src/handler/sign_transaction.c @@ -0,0 +1,103 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include "./handler.h" +#include "../globals.h" +#include "../types.h" +#include "../sw.h" +#include "../send_response.h" +#include "../crypto.h" +#include "../ui/ui.h" +#include "../swap/swap_lib_calls.h" +#include "../transaction/transaction_parser.h" + +int handler_sign_tx(buffer_t *cdata, bool is_first_chunk, bool more) { + if (is_first_chunk) { + explicit_bzero(&G_context, sizeof(G_context)); + } + + if (G_context.tx_info.raw_size + cdata->size > RAW_TX_MAX_SIZE) { + return io_send_sw(SW_WRONG_TX_LENGTH); + } + + if (is_first_chunk) { + G_context.req_type = CONFIRM_TRANSACTION; + G_context.state = STATE_NONE; + + if (!buffer_read_u8(cdata, &G_context.bip32_path_len) || + !buffer_read_bip32_path(cdata, + G_context.bip32_path, + (size_t) G_context.bip32_path_len)) { + return io_send_sw(SW_WRONG_DATA_LENGTH); + } + size_t data_length = cdata->size - cdata->offset; + memcpy(G_context.tx_info.raw, cdata->ptr + cdata->offset, data_length); + G_context.tx_info.raw_size += data_length; + } else { + if (G_context.req_type != CONFIRM_TRANSACTION) { + return io_send_sw(SW_BAD_STATE); + } + memcpy(G_context.tx_info.raw + G_context.tx_info.raw_size, cdata->ptr, cdata->size); + G_context.tx_info.raw_size += cdata->size; + } + + PRINTF("data size: %d\n", G_context.tx_info.raw_size); + + if (more) { + return io_send_sw(SW_OK); + } + + if (cx_hash_sha256(G_context.tx_info.raw, + G_context.tx_info.raw_size, + G_context.hash, + HASH_SIZE) != HASH_SIZE) { + THROW(SW_TX_HASH_FAIL); + } + + if (!parse_tx_xdr(G_context.tx_info.raw, G_context.tx_info.raw_size, &G_context.tx_info)) { + THROW(SW_TX_PARSING_FAIL); + } + + G_context.state = STATE_PARSED; + PRINTF("tx parsed.\n"); + + if (G_called_from_swap) { + if (!swap_check()) { + return io_send_sw(SW_SWAP_CHECKING_FAIL); + } + uint8_t signature[SIGNATURE_SIZE]; + if (crypto_sign_message(G_context.hash, sizeof(G_context.hash), signature, SIGNATURE_SIZE) < + 0) { + G_context.state = STATE_NONE; + return io_send_sw(SW_SIGNATURE_FAIL); + } else { + return send_response_sig(signature, SIGNATURE_SIZE); + } + } + + cx_ecfp_private_key_t private_key = {0}; + cx_ecfp_public_key_t public_key = {0}; + + // derive private key according to BIP32 path + crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len); + // generate corresponding public key + crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key); + // reset private key + explicit_bzero(&private_key, sizeof(private_key)); + + return ui_approve_tx_init(); +}; diff --git a/src/handler/sign_transaction_hash.c b/src/handler/sign_transaction_hash.c new file mode 100644 index 00000000..610c7dd0 --- /dev/null +++ b/src/handler/sign_transaction_hash.c @@ -0,0 +1,57 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include "./handler.h" +#include "../globals.h" +#include "../settings.h" +#include "../sw.h" +#include "../crypto.h" +#include "../io.h" +#include "../ui/ui.h" + +int handler_sign_tx_hash(buffer_t *cdata) { + PRINTF("handler_sign_tx_hash invoked\n"); + if (!HAS_SETTING(S_HASH_SIGNING_ENABLED)) { + return io_send_sw(SW_TX_HASH_SIGNING_MODE_NOT_ENABLED); + } + explicit_bzero(&G_context, sizeof(G_context)); + G_context.req_type = CONFIRM_TRANSACTION_HASH; + G_context.state = STATE_NONE; + + cx_ecfp_private_key_t private_key = {0}; + cx_ecfp_public_key_t public_key = {0}; + + if (!buffer_read_u8(cdata, &G_context.bip32_path_len) || + !buffer_read_bip32_path(cdata, G_context.bip32_path, (size_t) G_context.bip32_path_len)) { + return io_send_sw(SW_WRONG_DATA_LENGTH); + } + + // derive private key according to BIP32 path + crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len); + // generate corresponding public key + crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key); + // reset private key + explicit_bzero(&private_key, sizeof(private_key)); + + if (cdata->offset + HASH_SIZE != cdata->size) { + return io_send_sw(SW_WRONG_DATA_LENGTH); + } + + memcpy(G_context.hash, cdata->ptr + cdata->offset, HASH_SIZE); + + return ui_approve_tx_hash_init(); +}; diff --git a/src/io.c b/src/io.c new file mode 100644 index 00000000..15ae53ec --- /dev/null +++ b/src/io.c @@ -0,0 +1,144 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include + +#include "io.h" + +#include "./sw.h" +#include "./globals.h" +#include "./common/buffer.h" +#include "./common/write.h" + +void io_seproxyhal_display(const bagl_element_t *element) { + io_seproxyhal_display_default((bagl_element_t *) element); +} + +uint8_t io_event(uint8_t channel __attribute__((unused))) { + switch (G_io_seproxyhal_spi_buffer[0]) { + case SEPROXYHAL_TAG_BUTTON_PUSH_EVENT: + UX_BUTTON_PUSH_EVENT(G_io_seproxyhal_spi_buffer); + break; + case SEPROXYHAL_TAG_STATUS_EVENT: + if (G_io_apdu_media == IO_APDU_MEDIA_USB_HID && // + !(U4BE(G_io_seproxyhal_spi_buffer, 3) & // + SEPROXYHAL_TAG_STATUS_EVENT_FLAG_USB_POWERED)) { + THROW(EXCEPTION_IO_RESET); + } + /* fallthrough */ + case SEPROXYHAL_TAG_DISPLAY_PROCESSED_EVENT: + UX_DISPLAYED_EVENT({}); + break; + case SEPROXYHAL_TAG_TICKER_EVENT: + UX_TICKER_EVENT(G_io_seproxyhal_spi_buffer, {}); + break; + default: + UX_DEFAULT_EVENT(); + break; + } + + if (!io_seproxyhal_spi_is_status_sent()) { + io_seproxyhal_general_status(); + } + + return 1; +} + +uint16_t io_exchange_al(uint8_t channel, uint16_t tx_len) { + switch (channel & ~(IO_FLAGS)) { + case CHANNEL_KEYBOARD: + break; + case CHANNEL_SPI: + if (tx_len) { + io_seproxyhal_spi_send(G_io_apdu_buffer, tx_len); + + if (channel & IO_RESET_AFTER_REPLIED) { + halt(); + } + + return 0; + } else { + return io_seproxyhal_spi_recv(G_io_apdu_buffer, sizeof(G_io_apdu_buffer), 0); + } + default: + THROW(INVALID_PARAMETER); + } + + return 0; +} + +int io_recv_command() { + int ret; + + switch (G_io_state) { + case READY: + G_io_state = RECEIVED; + ret = io_exchange(CHANNEL_APDU, G_output_len); + break; + case RECEIVED: + G_io_state = WAITING; + ret = io_exchange(CHANNEL_APDU | IO_ASYNCH_REPLY, G_output_len); + G_io_state = RECEIVED; + break; + case WAITING: + G_io_state = READY; + ret = -1; + break; + } + + return ret; +} + +int io_send_response(const buffer_t *rdata, uint16_t sw) { + int ret; + + if (rdata != NULL) { + if (rdata->size - rdata->offset > IO_APDU_BUFFER_SIZE - 2 || // + !buffer_copy(rdata, G_io_apdu_buffer, sizeof(G_io_apdu_buffer))) { + return io_send_sw(SW_WRONG_RESPONSE_LENGTH); + } + G_output_len = rdata->size - rdata->offset; + PRINTF("<= SW=%04X | RData=%.*H\n", sw, rdata->size, rdata->ptr); + } else { + G_output_len = 0; + PRINTF("<= SW=%04X | RData=\n", sw); + } + + write_u16_be(G_io_apdu_buffer, G_output_len, sw); + G_output_len += 2; + + switch (G_io_state) { + case READY: + ret = -1; + break; + case RECEIVED: + G_io_state = READY; + ret = 0; + break; + case WAITING: + ret = io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, G_output_len); + G_output_len = 0; + G_io_state = READY; + break; + } + + return ret; +} + +int io_send_sw(uint16_t sw) { + return io_send_response(NULL, sw); +} diff --git a/src/io.h b/src/io.h new file mode 100644 index 00000000..8119e5d6 --- /dev/null +++ b/src/io.h @@ -0,0 +1,57 @@ +#pragma once + +#include + +#include "os.h" +#include "ux.h" +#include "os_io_seproxyhal.h" + +#include "./types.h" +#include "./common/buffer.h" + +void io_seproxyhal_display(const bagl_element_t *element); + +/** + * IO callback called when an interrupt based channel has received + * data to be processed. + * + * @return 1 if success, 0 otherwise. + * + */ +uint8_t io_event(uint8_t channel __attribute__((unused))); + +uint16_t io_exchange_al(uint8_t channel, uint16_t tx_len); + +/** + * Receive APDU command in G_io_apdu_buffer and update G_output_len. + * + * @return zero or positive integer if success, -1 otherwise. + * + */ +int io_recv_command(void); + +/** + * Send APDU response (response data + status word) by filling + * G_io_apdu_buffer. + * + * @param[in] rdata + * Buffer with APDU response data. + * @param[in] sw + * Status word of APDU response. + * + * @return zero or positive integer if success, -1 otherwise. + * + */ +int io_send_response(const buffer_t *rdata, uint16_t sw); + +/** + * Send APDU response (only status word) by filling + * G_io_apdu_buffer. + * + * @param[in] sw + * Status word of APDU response. + * + * @return zero or positive integer if success, -1 otherwise. + * + */ +int io_send_sw(uint16_t sw); diff --git a/src/main.c b/src/main.c index de7e0782..9962c6cc 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,6 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,264 +13,89 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - ********************************************************************************/ + *****************************************************************************/ #include "os.h" #include "cx.h" -#include -#include -#include "os_io_seproxyhal.h" +#include "./globals.h" +#include "./sw.h" +#include "./io.h" +#include "./types.h" +#include "./settings.h" +#include "./apdu/apdu_parser.h" +#include "./apdu/dispatcher.h" +#include "./swap/swap_lib_calls.h" +#include "./ui/ui.h" + +// The settings, stored in NVRAM. +const internal_storage_t N_storage_real; + +/** + * Handle APDU command received and send back APDU response using handlers. + */ +void app_main() { + // Length of APDU command received in G_io_apdu_buffer + int input_len = 0; + // Structured APDU command + command_t cmd; + + // Reset length of APDU response + G_output_len = 0; + G_io_state = READY; + + // Reset context + explicit_bzero(&G_context, sizeof(G_context)); -#include "stellar_types.h" -#include "stellar_api.h" -#include "stellar_vars.h" -#include "stellar_ux.h" - -#include "swap/swap_lib_calls.h" - -unsigned short io_exchange_al(unsigned char channel, unsigned short tx_len) { - switch (channel & ~(IO_FLAGS)) { - case CHANNEL_KEYBOARD: - break; - case CHANNEL_SPI: - if (tx_len) { - io_seproxyhal_spi_send(G_io_apdu_buffer, tx_len); - - if (channel & IO_RESET_AFTER_REPLIED) { - reset(); - } - return 0; - } else { - return io_seproxyhal_spi_recv(G_io_apdu_buffer, sizeof(G_io_apdu_buffer), 0); - } - default: - THROW(INVALID_PARAMETER); - } - return 0; -} - -static void handle_apdu(uint8_t *buffer, - size_t size, - volatile unsigned int *flags, - volatile unsigned int *tx) { - unsigned short sw = 0; - - BEGIN_TRY { - TRY { - if (buffer[OFFSET_CLA] != CLA || size < MIN_APDU_SIZE) { - THROW(0x6e00); - } - - uint8_t ins = buffer[OFFSET_INS]; - uint8_t p1 = buffer[OFFSET_P1]; - uint8_t p2 = buffer[OFFSET_P2]; - uint8_t dataLength = buffer[OFFSET_LC]; - uint8_t *dataBuffer = buffer + OFFSET_CDATA; - - if (dataLength + MIN_APDU_SIZE != size) { - THROW(0x6e00); - } - - PRINTF("New APDU:\n%.*H\n", size, buffer); - - switch (ins) { - case INS_GET_PUBLIC_KEY: - handle_get_public_key(p1, p2, dataBuffer, dataLength, flags, tx); - break; - - case INS_SIGN_TX: - handle_sign_tx(p1, p2, dataBuffer, dataLength, flags); - break; - - case INS_SIGN_TX_HASH: - handle_sign_tx_hash(dataBuffer, dataLength, flags); - break; - - case INS_GET_APP_CONFIGURATION: - handle_get_app_configuration(tx); - break; - - case INS_KEEP_ALIVE: - handle_keep_alive(flags); - break; - default: - THROW(0x6D00); - } - } - CATCH(EXCEPTION_IO_RESET) { - THROW(EXCEPTION_IO_RESET); - } - CATCH_OTHER(e) { - switch (e & 0xF000) { - case 0x6000: - // Wipe the transaction context and report the exception - sw = e; - break; - case 0x9000: - // All is well - sw = e; - break; - default: - // Internal error - sw = 0x6800 | (e & 0x7FF); - break; - } - // Unexpected exception => report - G_io_apdu_buffer[*tx] = sw >> 8; - G_io_apdu_buffer[*tx + 1] = sw; - *tx += 2; - } - FINALLY { - } - } - END_TRY; -} - -static void stellar_nv_state_init() { - if (N_stellar_pstate.initialized != 0x01) { - uint8_t initialized = 0x01; - nvm_write((void *) &N_stellar_pstate.initialized, &initialized, 1); - uint8_t hashSigning = 0x00; - nvm_write((void *) &N_stellar_pstate.hashSigning, &hashSigning, 1); - } -} - -static unsigned char last_ins = 0; - -void stellar_main(void) { - // hash sig support is not persistent - - memset(&ctx, 0, sizeof(ctx)); - - volatile unsigned int rx = 0; - volatile unsigned int tx = 0; - volatile unsigned int flags = 0; - - // DESIGN NOTE: the bootloader ignores the way APDU are fetched. The only - // goal is to retrieve APDU. - // When APDU are to be fetched from multiple IOs, like NFC+USB+BLE, make - // sure the io_event is called with a - // switch event, before the apdu is replied to the bootloader. This avoid - // APDU injection faults. for (;;) { - volatile unsigned short sw = 0; - BEGIN_TRY { TRY { - rx = tx; - tx = 0; + // Reset structured APDU command + memset(&cmd, 0, sizeof(cmd)); - rx = io_exchange(CHANNEL_APDU | flags, rx); - flags = 0; - - // no apdu received, well, reset the session, and reset the - // bootloader configuration - if (rx == 0) { - THROW(0x6982); + // Receive command bytes in G_io_apdu_buffer + if ((input_len = io_recv_command()) < 0) { + return; } - // Reset transaction context before starting to parse a new APDU message type. - // This helps protect against "Instruction Change" attacks - if (G_io_apdu_buffer[OFFSET_INS] != last_ins) { - reset_ctx(); + + // Parse APDU command from G_io_apdu_buffer + if (!apdu_parser(&cmd, G_io_apdu_buffer, input_len)) { + PRINTF("=> /!\\ BAD LENGTH: %.*H\n", input_len, G_io_apdu_buffer); + io_send_sw(SW_WRONG_DATA_LENGTH); + continue; } - last_ins = G_io_apdu_buffer[OFFSET_INS]; - handle_apdu(G_io_apdu_buffer, rx, &flags, &tx); + PRINTF("=> CLA=%02X | INS=%02X | P1=%02X | P2=%02X | Lc=%02X | CData=%.*H\n", + cmd.cla, + cmd.ins, + cmd.p1, + cmd.p2, + cmd.lc, + cmd.lc, + cmd.data); + + // Dispatch structured APDU command to handler + if (apdu_dispatcher(&cmd) < 0) { + return; + } } CATCH(EXCEPTION_IO_RESET) { THROW(EXCEPTION_IO_RESET); } CATCH_OTHER(e) { - switch (e & 0xF000) { - case 0x6000: - // Wipe the transaction context and report the exception - sw = e; - break; - case 0x9000: - // All is well - sw = e; - break; - default: - // Internal error - sw = 0x6800 | (e & 0x7FF); - /* Ensure further io_exchange() calls aren't done with an - * unexpected flag, since it can trigger infinite loops if - * this flag trigger again an exception. */ - flags = 0; - ui_idle(); - break; - } - // Unexpected exception => report - G_io_apdu_buffer[tx] = sw >> 8; - G_io_apdu_buffer[tx + 1] = sw; - tx += 2; + io_send_sw(e); } FINALLY { } + END_TRY; } - END_TRY; } - - // return_to_dashboard: - return; -} - -// override point, but nothing more to do -void io_seproxyhal_display(const bagl_element_t *element) { - io_seproxyhal_display_default((bagl_element_t *) element); -} - -void u2f_send_keep_alive() { - ctx.u2fTimer = 0; - G_io_apdu_buffer[0] = 0x6e; - G_io_apdu_buffer[1] = 0x02; - io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); } -unsigned char io_event(unsigned char channel) { - (void) channel; - - // can't have more than one tag in the reply, not supported yet. - switch (G_io_seproxyhal_spi_buffer[0]) { - case SEPROXYHAL_TAG_FINGER_EVENT: - UX_FINGER_EVENT(G_io_seproxyhal_spi_buffer); - break; - - case SEPROXYHAL_TAG_BUTTON_PUSH_EVENT: - UX_BUTTON_PUSH_EVENT(G_io_seproxyhal_spi_buffer); - break; - - case SEPROXYHAL_TAG_STATUS_EVENT: - if (G_io_apdu_media == IO_APDU_MEDIA_USB_HID && - !(U4BE(G_io_seproxyhal_spi_buffer, 3) & - SEPROXYHAL_TAG_STATUS_EVENT_FLAG_USB_POWERED)) { - THROW(EXCEPTION_IO_RESET); - } - // no break is intentional - default: - UX_DEFAULT_EVENT(); - break; - - case SEPROXYHAL_TAG_DISPLAY_PROCESSED_EVENT: - UX_DISPLAYED_EVENT({}); - break; - - case SEPROXYHAL_TAG_TICKER_EVENT: - UX_TICKER_EVENT(G_io_seproxyhal_spi_buffer, {}); - break; - } - - // close the event if not done previously (by a display or whatever) - if (!io_seproxyhal_spi_is_status_sent()) { - io_seproxyhal_general_status(); - } - - // command has been processed, DO NOT reset the current APDU transport - return 1; -} - -void app_exit(void) { +/** + * Exit the application and go back to the dashboard. + */ +void app_exit() { BEGIN_TRY_L(exit) { TRY_L(exit) { os_sched_exit(-1); @@ -281,35 +106,35 @@ void app_exit(void) { END_TRY_L(exit); } -void coin_main() { +void standalone_app_main() { for (;;) { - called_from_swap = false; - reset_ctx(); - - UX_INIT(); + // Reset UI + memset(&G_ux, 0, sizeof(G_ux)); BEGIN_TRY { TRY { io_seproxyhal_init(); + if (!HAS_SETTING(S_INITIALIZED)) { + internal_storage_t storage = 0x00; + storage |= 0x80; + nvm_write((void *) &N_settings, (void *) &storage, sizeof(internal_storage_t)); + } + #ifdef TARGET_NANOX // grab the current plane mode setting G_io_app.plane_mode = os_setting_get(OS_SETTING_PLANEMODE, NULL, 0); #endif // TARGET_NANOX - stellar_nv_state_init(); - USB_power(0); USB_power(1); - - ui_idle(); + ui_menu_main(); #ifdef HAVE_BLE BLE_power(0, NULL); BLE_power(1, "Nano X"); #endif // HAVE_BLE - - stellar_main(); + app_main(); } CATCH(EXCEPTION_IO_RESET) { // reset IO and UX before continuing @@ -325,20 +150,10 @@ void coin_main() { } END_TRY; } + app_exit(); } -struct libargs_s { - unsigned int id; - unsigned int command; - unsigned int unused; - union { - check_address_parameters_t *check_address; - create_transaction_parameters_t *create_transaction; - get_printable_amount_parameters_t *get_printable_amount; - }; -}; - static void library_main_helper(struct libargs_s *args) { check_api_level(CX_COMPAT_APILEVEL); PRINTF("Inside library \n"); @@ -382,20 +197,23 @@ void library_main(struct libargs_s *args) { } } +/** + * Main loop to setup USB, Bluetooth, UI and launch ui_menu_main(). + */ __attribute__((section(".boot"))) int main(int arg0) { // exit critical section __asm volatile("cpsie i"); - // ensure exception will work as planned os_boot(); - if (arg0 == 0) { - // called from dashboard as standalone xrp app - coin_main(); + // called from dashboard as standalone Stellar App + G_called_from_swap = false; + standalone_app_main(); } else { // Called as library from another app - struct libargs_s *args = (struct libargs_s *) arg0; + libargs_t *args = (libargs_t *) arg0; if (args->id == 0x100) { + G_called_from_swap = true; library_main(args); } else { app_exit(); diff --git a/src/send_reponse.c b/src/send_reponse.c new file mode 100644 index 00000000..f4fb32b6 --- /dev/null +++ b/src/send_reponse.c @@ -0,0 +1,33 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include "./send_response.h" +#include "./globals.h" +#include "./sw.h" +#include "./common/buffer.h" + +int send_response_pubkey() { + return io_send_response(&(const buffer_t){.ptr = G_context.raw_public_key, + .size = RAW_ED25519_PUBLIC_KEY_SIZE, + .offset = 0}, + SW_OK); +} + +int send_response_sig(const uint8_t *signature, uint8_t signature_len) { + return io_send_response(&(const buffer_t){.ptr = signature, .size = signature_len, .offset = 0}, + SW_OK); +} diff --git a/src/send_response.h b/src/send_response.h new file mode 100644 index 00000000..9ac11108 --- /dev/null +++ b/src/send_response.h @@ -0,0 +1,21 @@ +#pragma once + +#include "./io.h" + +/** + * Helper to send APDU response with public key. + * + * response = G_context.raw_public_key (RAW_ED25519_PUBLIC_KEY_SIZE) + * + * @return zero or positive integer if success, -1 otherwise. + * + */ +int send_response_pubkey(void); + +/** + * Helper to send APDU response with signature. + * + * @return zero or positive integer if success, -1 otherwise. + * + */ +int send_response_sig(const uint8_t *signature, uint8_t signature_len); diff --git a/src/settings.h b/src/settings.h new file mode 100644 index 00000000..2b42891c --- /dev/null +++ b/src/settings.h @@ -0,0 +1,30 @@ +#pragma once + +#include + +typedef uint8_t internal_storage_t; + +/** + * The settings, stored in NVRAM. Initializer is ignored by ledger. + */ +extern const internal_storage_t N_storage_real; + +#define N_settings (*(volatile internal_storage_t *) PIC(&N_storage_real)) + +// flip a bit k = 0 to 7 for u8 +#define _FLIP_BIT(n, k) (((n) ^ (1 << (k)))) + +// toggle a setting item +#define SETTING_TOGGLE(_set) \ + do { \ + internal_storage_t _temp_settings = _FLIP_BIT(N_settings, _set); \ + nvm_write((void *) &N_settings, (void *) &_temp_settings, sizeof(internal_storage_t)); \ + } while (0) + +// check a setting item +#define HAS_SETTING(k) ((N_settings & (1 << (k))) >> (k)) + +#define S_HASH_SIGNING_ENABLED 0 +#define S_SEQUENCE_NUMBER_ENABLED 1 + +#define S_INITIALIZED 7 diff --git a/src/stellar.c b/src/stellar.c deleted file mode 100644 index 021b0862..00000000 --- a/src/stellar.c +++ /dev/null @@ -1,368 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ - -#include "os.h" -#include "cx.h" -#include "os_io_seproxyhal.h" - -#include "stellar_api.h" -#include "stellar_types.h" -#include "stellar_vars.h" -#include "stellar_ux.h" - -#include "swap/swap_lib_calls.h" - -static void app_set_state(enum app_state_t state) { - ctx.state = state; -} - -static enum app_state_t app_get_state() { - return ctx.state; -} - -int derive_private_key(cx_ecfp_private_key_t *privateKey, uint32_t *bip32, uint8_t bip32Len) { - int error = 0; - uint8_t privateKeyData[32]; - BEGIN_TRY { - TRY { - os_perso_derive_node_bip32_seed_key(HDW_ED25519_SLIP10, - CX_CURVE_Ed25519, - bip32, - bip32Len, - privateKeyData, - NULL, - (unsigned char *) "ed25519 seed", - 12); - cx_ecfp_init_private_key(CX_CURVE_Ed25519, privateKeyData, 32, privateKey); - } - CATCH_OTHER(e) { - explicit_bzero(privateKey, sizeof(cx_ecfp_private_key_t)); - error = e; - } - FINALLY { - explicit_bzero(privateKeyData, sizeof(privateKeyData)); - } - } - END_TRY; - - return error; -} - -int init_public_key(cx_ecfp_private_key_t *privateKey, - cx_ecfp_public_key_t *publicKey, - uint8_t *buffer) { - int error = 0; - BEGIN_TRY { - TRY { - cx_ecfp_generate_pair(CX_CURVE_Ed25519, publicKey, privateKey, 1); - } - CATCH_OTHER(e) { - explicit_bzero(privateKey, sizeof(cx_ecfp_private_key_t)); - error = e; - } - FINALLY { - } - } - END_TRY; - - if (error) { - return error; - } - // copy public key little endian to big endian - uint8_t i; - for (i = 0; i < 32; i++) { - buffer[i] = publicKey->W[64 - i]; - } - if ((publicKey->W[32] & 1) != 0) { - buffer[31] |= 0x80; - } - - return 0; -} - -void handle_get_app_configuration(volatile unsigned int *tx) { - app_set_state(STATE_NONE); - - G_io_apdu_buffer[0] = N_stellar_pstate.hashSigning; - G_io_apdu_buffer[1] = LEDGER_MAJOR_VERSION; - G_io_apdu_buffer[2] = LEDGER_MINOR_VERSION; - G_io_apdu_buffer[3] = LEDGER_PATCH_VERSION; - *tx = 4; - THROW(0x9000); -} - -static uint32_t set_result_get_public_key(void) { - memcpy(G_io_apdu_buffer, ctx.req.pk.publicKey, 32); - uint32_t tx = 32; - if (ctx.req.pk.returnSignature) { - memcpy(G_io_apdu_buffer + tx, ctx.req.pk.signature, 64); - tx += 64; - } - return tx; -} - -void handle_get_public_key(uint8_t p1, - uint8_t p2, - uint8_t *dataBuffer, - uint16_t dataLength, - volatile unsigned int *flags, - volatile unsigned int *tx) { - app_set_state(STATE_NONE); - - if ((p1 != P1_SIGNATURE) && (p1 != P1_NO_SIGNATURE)) { - THROW(0x6B00); - } - if ((p2 != P2_CONFIRM) && (p2 != P2_NO_CONFIRM)) { - THROW(0x6B00); - } - ctx.req.pk.returnSignature = (p1 == P1_SIGNATURE); - - uint32_t bip32[MAX_BIP32_LEN]; - uint8_t bip32Len = *dataBuffer; - if (!parse_bip32_path(dataBuffer + 1, bip32Len, bip32, MAX_BIP32_LEN)) { - PRINTF("Invalid path\n"); - THROW(0x6a80); - } - dataBuffer += 1 + bip32Len * 4; - dataLength -= 1 + bip32Len * 4; - - uint16_t msgLength = 0; - uint8_t msg[32]; - if (ctx.req.pk.returnSignature) { - uint8_t i; - msgLength = dataLength; - /* Enforce msg length to be strictly lower than the size of a SHA-256 - * digest. This ensures the message is not the resulting hash of a - * transaction, to prevent blind signatures on transactions. */ - if (msgLength >= 32) { - THROW(0x6a80); - } - for (i = 0; i < msgLength; i++) { - if ((dataBuffer[i] < 0x20) || (dataBuffer[i] > 0x7e)) { - THROW(0x6a80); - } - } - memcpy(msg, dataBuffer, msgLength); - } - - cx_ecfp_private_key_t privateKey; - cx_ecfp_public_key_t publicKey; - derive_private_key(&privateKey, bip32, bip32Len); - init_public_key(&privateKey, &publicKey, ctx.req.pk.publicKey); - - int error = 0; - BEGIN_TRY { - TRY { - if (ctx.req.pk.returnSignature) { - cx_eddsa_sign(&privateKey, - CX_LAST, - CX_SHA512, - msg, - msgLength, - NULL, - 0, - ctx.req.pk.signature, - 64, - NULL); - } - } - CATCH_OTHER(e) { - error = e; - } - FINALLY { - explicit_bzero(&privateKey, sizeof(privateKey)); - } - } - END_TRY; - - if (error) { - THROW(error); - } - - uint32_t pk_tx = set_result_get_public_key(); - if (p2 & P2_CONFIRM) { - ctx.reqType = CONFIRM_ADDRESS; - ctx.req.pk.tx = pk_tx; - ui_show_address_init(); - *flags |= IO_ASYNCH_REPLY; - } else { - *tx = pk_tx; - THROW(0x9000); - } -} - -void handle_sign_tx(uint8_t p1, - uint8_t p2, - uint8_t *dataBuffer, - uint16_t dataLength, - volatile unsigned int *flags) { - if ((p1 != P1_FIRST) && (p1 != P1_MORE)) { - THROW(0x6B00); - } - if ((p2 != P2_LAST) && (p2 != P2_MORE)) { - THROW(0x6B00); - } - - if (p1 == P1_FIRST) { - app_set_state(STATE_PARSE_TX); - - MEMCLEAR(ctx.req.tx); - ctx.reqType = CONFIRM_TRANSACTION; - // read the bip32 path - ctx.req.tx.bip32Len = *dataBuffer; - if (!parse_bip32_path(dataBuffer + 1, - ctx.req.tx.bip32Len, - ctx.req.tx.bip32, - MAX_BIP32_LEN)) { - PRINTF("Invalid path\n"); - THROW(0x6a80); - } - dataBuffer += 1 + ctx.req.tx.bip32Len * 4; - dataLength -= 1 + ctx.req.tx.bip32Len * 4; - - // read raw tx data - ctx.req.tx.rawLength = dataLength; - memcpy(ctx.req.tx.raw, dataBuffer, dataLength); - } else { - if (app_get_state() != STATE_PARSE_TX) { - THROW(0x6700); - } - - // read more raw tx data - uint32_t offset = ctx.req.tx.rawLength; - ctx.req.tx.rawLength += dataLength; - if (ctx.req.tx.rawLength > MAX_RAW_TX) { - THROW(0x6700); - } - memcpy(ctx.req.tx.raw + offset, dataBuffer, dataLength); - } - - if (p2 == P2_MORE) { - THROW(0x9000); - } - - cx_hash_sha256(ctx.req.tx.raw, ctx.req.tx.rawLength, ctx.req.tx.hash, HASH_SIZE); - - if (!parse_tx_xdr(ctx.req.tx.raw, ctx.req.tx.rawLength, &ctx.req.tx)) { - THROW(0x6800); - } - - cx_ecfp_private_key_t privateKey; - cx_ecfp_public_key_t publicKey; - derive_private_key(&privateKey, ctx.req.tx.bip32, ctx.req.tx.bip32Len); - init_public_key(&privateKey, &publicKey, ctx.req.tx.publicKey); - - int error = 0; - BEGIN_TRY { - TRY { - // sign hash - ctx.req.tx.tx = cx_eddsa_sign(&privateKey, - CX_LAST, - CX_SHA512, - ctx.req.tx.hash, - HASH_SIZE, - NULL, - 0, - G_io_apdu_buffer, - 64, - NULL); - } - CATCH_OTHER(e) { - error = e; - } - FINALLY { - explicit_bzero(&privateKey, sizeof(privateKey)); - } - } - END_TRY; - - if (error) { - THROW(error); - } - - if (called_from_swap) { - swap_check(); - os_sched_exit(0); - } - ui_approve_tx_init(); - - *flags |= IO_ASYNCH_REPLY; - app_set_state(STATE_APPROVE_TX); -} - -void handle_sign_tx_hash(uint8_t *dataBuffer, uint16_t dataLength, volatile unsigned int *flags) { - app_set_state(STATE_NONE); - - if (!N_stellar_pstate.hashSigning) { - THROW(0x6c66); - } - - MEMCLEAR(ctx.req.tx); - ctx.reqType = CONFIRM_TRANSACTION; - - ctx.req.tx.bip32Len = *dataBuffer; - if (!parse_bip32_path(dataBuffer + 1, ctx.req.tx.bip32Len, ctx.req.tx.bip32, MAX_BIP32_LEN)) { - PRINTF("Invalid path\n"); - THROW(0x6a80); - } - dataBuffer += 1 + ctx.req.tx.bip32Len * 4; - dataLength -= 1 + ctx.req.tx.bip32Len * 4; - - if (dataLength != 32) { - THROW(0x6a80); - } - memcpy(ctx.req.tx.hash, dataBuffer, dataLength); - - cx_ecfp_private_key_t privateKey; - derive_private_key(&privateKey, ctx.req.tx.bip32, ctx.req.tx.bip32Len); - int error = 0; - BEGIN_TRY { - TRY { - // sign hash - ctx.req.tx.tx = cx_eddsa_sign(&privateKey, - CX_LAST, - CX_SHA512, - ctx.req.tx.hash, - HASH_SIZE, - NULL, - 0, - G_io_apdu_buffer, - 64, - NULL); - } - CATCH_OTHER(e) { - error = e; - } - FINALLY { - explicit_bzero(&privateKey, sizeof(privateKey)); - } - } - END_TRY; - - if (error) { - THROW(error); - } - - ui_approve_tx_hash_init(); - - *flags |= IO_ASYNCH_REPLY; - app_set_state(STATE_APPROVE_TX_HASH); -} - -void handle_keep_alive(volatile unsigned int *flags) { - *flags |= IO_ASYNCH_REPLY; -} diff --git a/src/stellar_api.h b/src/stellar_api.h deleted file mode 100644 index 99af14ba..00000000 --- a/src/stellar_api.h +++ /dev/null @@ -1,171 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ -#ifndef _STELLAR_API_H_ -#define _STELLAR_API_H_ - -#include "stellar_types.h" - -#ifndef TEST -#include "os.h" -#include "cx.h" -#endif - -#include -#include -#include -#include - -// ------------------------------------------------------------------------- // -// Request handlers // -// ------------------------------------------------------------------------- // - -/** handles app configuration request */ -void handle_get_app_configuration(volatile unsigned int *tx); - -/** handles get public key request */ -void handle_get_public_key(uint8_t p1, - uint8_t p2, - uint8_t *dataBuffer, - uint16_t dataLength, - volatile unsigned int *flags, - volatile unsigned int *tx); - -/** handles sign transaction request (displays transaction details) */ -void handle_sign_tx(uint8_t p1, - uint8_t p2, - uint8_t *dataBuffer, - uint16_t dataLength, - volatile unsigned int *flags); - -/** handles sign transaction hash request (displays only transaction hash) */ -void handle_sign_tx_hash(uint8_t *dataBuffer, uint16_t dataLength, volatile unsigned int *flags); - -/** u2f keep alive */ -void handle_keep_alive(volatile unsigned int *flags); - -// ------------------------------------------------------------------------- // -// TRANSACTION PARSING // -// ------------------------------------------------------------------------- // - -/** - * Parsing of the raw transaction XDR. - * Starts parsing the buffer at txCtx.offset to populate the content struct. - * Only a single operation is parsed during each call. - * Subsequent calls resume parsing where the last call left off - * or from the beginning when the end was reached. - */ -bool parse_tx_xdr(const uint8_t *data, size_t size, tx_context_t *txCtx); - -// ------------------------------------------------------------------------- // -// DATA STRUCTURES // -// ------------------------------------------------------------------------- // - -typedef struct { - const uint8_t *ptr; - size_t size; - off_t offset; -} buffer_t; - -// ------------------------------------------------------------------------- // -// UTILITIES // -// ------------------------------------------------------------------------- // - -#ifndef TEST -/** derive a private key from a bip32 path */ -int derive_private_key(cx_ecfp_private_key_t *privateKey, uint32_t *bip32, uint8_t bip32Len); - -/** intialize a public key the Stellar way */ -int init_public_key(cx_ecfp_private_key_t *privateKey, - cx_ecfp_public_key_t *publicKey, - uint8_t *buffer); -#endif - -/** parse a bip32 path from a byte stream */ -bool parse_bip32_path(uint8_t *path, - size_t path_length, - uint32_t *path_parsed, - size_t path_parsed_length); - -/** base32 encode public key */ -void encode_public_key(const uint8_t *in, char *out); - -/** base32 encode pre-auth transaction hash */ -void encode_pre_auth_key(const uint8_t *in, char *out); - -/** base32 encode sha256 hash */ -void encode_hash_x_key(const uint8_t *in, char *out); - -/** raw public key to base32 encoded (summarized) address */ -void print_public_key(const uint8_t *in, char *out, uint8_t numCharsL, uint8_t numCharsR); - -/** base32 encode muxed account */ -void encode_muxed_account(const MuxedAccount *in, char *out); - -/** raw muxed account to base32 encoded muxed address */ -void print_muxed_account(const MuxedAccount *in, char *out, uint8_t numCharsL, uint8_t numCharsR); - -/** output first numCharsL of input + last numCharsR of input separated by ".." */ -void print_summary(const char *in, char *out, uint8_t numCharsL, uint8_t numCharsR); - -/** raw byte buffer to hexadecimal string representation. - * len is length of input, provided output must be twice that size */ -void print_binary(const uint8_t *in, char *out, uint8_t len); - -/** raw byte buffer to summarized hexadecimal string representation - * len is length of input, provided output must be at least length 19 */ -void print_binary_summary(const uint8_t *in, char *out, uint8_t len); - -/** raw amount integer to asset-qualified string representation */ -int print_amount(uint64_t amount, - const Asset *asset, - uint8_t network_id, - char *out, - size_t out_len); - -/** concatenate assetCode and assetIssuer summary */ -void print_asset_t(const Asset *asset, uint8_t network_id, char *out, size_t out_len); - -/** asset name */ -int print_asset_name(const Asset *asset, uint8_t network_id, char *out, size_t out_len); - -/** concatenate code and issuer */ -void print_asset(const char *code, char *issuer, bool is_native, char *out, size_t out_len); - -/** "XLM" or "native" depending on the network id */ -void print_native_asset_code(uint8_t network, char *out, size_t out_len); - -/** string representation of flags present */ -void print_flags(uint32_t flags, char *out, size_t out_len); - -/** string representation of trust line flags present */ -void print_trust_line_flags(uint32_t flags, char *out, size_t out_len); - -/** integer to string for display of sequence number */ -int print_int(int64_t l, char *out, size_t out_len); - -/** integer to string for display of offerid, sequence number, threshold weights, etc */ -int print_uint(uint64_t l, char *out, size_t out_len); - -/** base64 encoding function used to display managed data values */ -void base64_encode(const uint8_t *data, int inLen, char *out); - -/** hex representation of flags claimable balance id */ -void print_claimable_balance_id(const ClaimableBalanceID *claimableBalanceID, char *out); - -/** converts the timestamp in seconds to a readable utc time string */ -bool print_time(uint64_t timestamp_in_seconds, char *out, size_t out_len); -#endif diff --git a/src/stellar_format.c b/src/stellar_format.c deleted file mode 100644 index 45d14587..00000000 --- a/src/stellar_format.c +++ /dev/null @@ -1,1619 +0,0 @@ -#include -#include "bolos_target.h" - -#include "stellar_format.h" -#include "stellar_vars.h" -#include "stellar_api.h" - -char opCaption[OPERATION_CAPTION_MAX_SIZE]; -char detailCaption[DETAIL_CAPTION_MAX_SIZE]; -char detailValue[DETAIL_VALUE_MAX_SIZE]; - -format_function_t formatter_stack[MAX_FORMATTERS_PER_OPERATION]; -int8_t formatter_index; - -static void push_to_formatter_stack(format_function_t formatter) { - if (formatter_index + 1 >= MAX_FORMATTERS_PER_OPERATION) { - THROW(0x6124); - } - formatter_stack[formatter_index + 1] = formatter; -} - -static void format_next_step(tx_context_t *txCtx) { - (void) txCtx; - formatter_stack[formatter_index] = NULL; - set_state_data(true); -} - -static void format_transaction_source(tx_context_t *txCtx) { - strcpy(detailCaption, "Tx Source"); - if (txCtx->envelopeType == ENVELOPE_TYPE_TX && - txCtx->txDetails.sourceAccount.type == KEY_TYPE_ED25519 && - memcmp(txCtx->txDetails.sourceAccount.ed25519, txCtx->publicKey, ED25519_PUBLIC_KEY_LEN) == - 0) { - print_muxed_account(&txCtx->txDetails.sourceAccount, detailValue, 6, 6); - } else { - print_muxed_account(&txCtx->txDetails.sourceAccount, detailValue, 0, 0); - } - push_to_formatter_stack(format_next_step); -} - -static void format_min_seq_ledger_gap(tx_context_t *txCtx) { - strcpy(detailCaption, "Min Seq Ledger Gap"); - print_uint(txCtx->txDetails.cond.minSeqLedgerGap, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_transaction_source); -} - -static void format_min_seq_ledger_gap_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.cond.minSeqLedgerGap == 0) { - format_transaction_source(txCtx); - } else { - format_min_seq_ledger_gap(txCtx); - } -} - -static void format_min_seq_age(tx_context_t *txCtx) { - strcpy(detailCaption, "Min Seq Age"); - print_uint(txCtx->txDetails.cond.minSeqAge, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_min_seq_ledger_gap_prepare); -} - -static void format_min_seq_age_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.cond.minSeqAge == 0) { - format_min_seq_ledger_gap_prepare(txCtx); - } else { - format_min_seq_age(txCtx); - } -} - -static void format_min_seq_num(tx_context_t *txCtx) { - strcpy(detailCaption, "Min Seq Num"); - print_uint(txCtx->txDetails.cond.minSeqNum, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_min_seq_age_prepare); -} - -static void format_min_seq_num_prepare(tx_context_t *txCtx) { - if (!txCtx->txDetails.cond.hasMinSeqNum || txCtx->txDetails.cond.minSeqNum == 0) { - format_min_seq_age_prepare(txCtx); - } else { - format_min_seq_num(txCtx); - } -} - -static void format_ledger_bounds_max_ledger(tx_context_t *txCtx) { - strcpy(detailCaption, "Ledger Bounds Max"); - print_uint(txCtx->txDetails.cond.ledgerBounds.maxLedger, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_min_seq_num_prepare); -} - -static void format_ledger_bounds_min_ledger(tx_context_t *txCtx) { - strcpy(detailCaption, "Ledger Bounds Min"); - print_uint(txCtx->txDetails.cond.ledgerBounds.minLedger, detailValue, DETAIL_VALUE_MAX_SIZE); - if (txCtx->txDetails.cond.ledgerBounds.maxLedger != 0) { - push_to_formatter_stack(&format_ledger_bounds_max_ledger); - } else { - push_to_formatter_stack(&format_min_seq_num_prepare); - } -} - -static void format_ledger_bounds(tx_context_t *txCtx) { - if (!txCtx->txDetails.cond.hasLedgerBounds || - (txCtx->txDetails.cond.ledgerBounds.minLedger == 0 && - txCtx->txDetails.cond.ledgerBounds.maxLedger == 0)) { - format_min_seq_num_prepare(txCtx); - } else if (txCtx->txDetails.cond.ledgerBounds.minLedger != 0) { - format_ledger_bounds_min_ledger(txCtx); - } else { - format_ledger_bounds_max_ledger(txCtx); - } -} - -static void format_time_bounds_max_time(tx_context_t *txCtx) { - strcpy(detailCaption, "Valid Before (UTC)"); - if (!print_time(txCtx->txDetails.cond.timeBounds.maxTime, detailValue, DETAIL_VALUE_MAX_SIZE)) { - THROW(0x6126); - }; - push_to_formatter_stack(&format_ledger_bounds); -} - -static void format_time_bounds_min_time(tx_context_t *txCtx) { - strcpy(detailCaption, "Valid After (UTC)"); - if (!print_time(txCtx->txDetails.cond.timeBounds.minTime, detailValue, DETAIL_VALUE_MAX_SIZE)) { - THROW(0x6126); - }; - - if (txCtx->txDetails.cond.timeBounds.maxTime != 0) { - push_to_formatter_stack(&format_time_bounds_max_time); - } else { - push_to_formatter_stack(&format_ledger_bounds); - } -} - -static void format_time_bounds(tx_context_t *txCtx) { - if (!txCtx->txDetails.cond.hasTimeBounds || (txCtx->txDetails.cond.timeBounds.minTime == 0 && - txCtx->txDetails.cond.timeBounds.maxTime == 0)) { - format_ledger_bounds(txCtx); - } else if (txCtx->txDetails.cond.timeBounds.minTime != 0) { - format_time_bounds_min_time(txCtx); - } else { - format_time_bounds_max_time(txCtx); - } -} - -static void format_sequence(tx_context_t *txCtx) { - strcpy(detailCaption, "Sequence Num"); - print_uint(txCtx->txDetails.sequenceNumber, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_time_bounds); -} - -static void format_fee(tx_context_t *txCtx) { - strcpy(detailCaption, "Max Fee"); - Asset asset = {.type = ASSET_TYPE_NATIVE}; - print_amount(txCtx->txDetails.fee, &asset, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_sequence); -} - -static void format_memo(tx_context_t *txCtx) { - Memo *memo = &txCtx->txDetails.memo; - switch (memo->type) { - case MEMO_ID: { - strcpy(detailCaption, "Memo ID"); - print_uint(memo->id, detailValue, DETAIL_VALUE_MAX_SIZE); - break; - } - case MEMO_TEXT: { - strcpy(detailCaption, "Memo Text"); - strlcpy(detailValue, memo->text, MEMO_TEXT_MAX_SIZE + 1); - break; - } - case MEMO_HASH: { - strcpy(detailCaption, "Memo Hash"); - print_binary_summary(memo->hash, detailValue, HASH_SIZE); - break; - } - case MEMO_RETURN: { - strcpy(detailCaption, "Memo Return"); - print_binary_summary(memo->hash, detailValue, HASH_SIZE); - break; - } - default: { - // TODO: remove the branch - strcpy(detailCaption, "Memo"); - strcpy(detailValue, "[none]"); - } - } - push_to_formatter_stack(&format_fee); -} - -static void format_transaction_details(tx_context_t *txCtx) { - switch (txCtx->envelopeType) { - case ENVELOPE_TYPE_TX_FEE_BUMP: - strcpy(detailCaption, "InnerTx"); - break; - case ENVELOPE_TYPE_TX: - strcpy(detailCaption, "Transaction"); - break; - } - strcpy(detailValue, "Details"); - if (txCtx->txDetails.memo.text != MEMO_NONE) { - push_to_formatter_stack(&format_memo); - } else { - push_to_formatter_stack(&format_fee); - } -} - -static void format_operation_source(tx_context_t *txCtx) { - strcpy(detailCaption, "Op Source"); - if (txCtx->envelopeType == ENVELOPE_TYPE_TX && - txCtx->txDetails.sourceAccount.type == KEY_TYPE_ED25519 && - txCtx->txDetails.opDetails.sourceAccount.type == KEY_TYPE_ED25519 && - memcmp(txCtx->txDetails.sourceAccount.ed25519, txCtx->publicKey, ED25519_PUBLIC_KEY_LEN) == - 0 && - memcmp(txCtx->txDetails.opDetails.sourceAccount.ed25519, - txCtx->publicKey, - ED25519_PUBLIC_KEY_LEN) == 0) { - print_muxed_account(&txCtx->txDetails.opDetails.sourceAccount, detailValue, 6, 6); - } else { - print_muxed_account(&txCtx->txDetails.opDetails.sourceAccount, detailValue, 0, 0); - } - - if (txCtx->txDetails.opIdx == txCtx->txDetails.opCount) { - // last operation - push_to_formatter_stack(NULL); - } else { - // more operations - push_to_formatter_stack(&format_next_step); - } -} - -static void format_operation_source_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.sourceAccountPresent) { - // If the source exists, when the user clicks the next button, - // it will jump to the page showing the source - push_to_formatter_stack(&format_operation_source); - } else { - // If not, jump to the signing page or show the next operation. - if (txCtx->txDetails.opIdx == txCtx->txDetails.opCount) { - // last operation - push_to_formatter_stack(NULL); - } else { - // more operations - push_to_formatter_stack(&format_next_step); - } - } -} - -static void format_bump_sequence_bump_to(tx_context_t *txCtx) { - strcpy(detailCaption, "Bump To"); - print_int(txCtx->txDetails.opDetails.bumpSequenceOp.bumpTo, detailValue, DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_bump_sequence(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Bump Sequence"); - push_to_formatter_stack(&format_bump_sequence_bump_to); -} - -static void format_inflation(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Inflation"); - format_operation_source_prepare(txCtx); -} - -static void format_account_merge_destination(tx_context_t *txCtx) { - strcpy(detailCaption, "Destination"); - print_muxed_account(&txCtx->txDetails.opDetails.destination, detailValue, 0, 0); - format_operation_source_prepare(txCtx); -} - -static void format_account_merge_detail(tx_context_t *txCtx) { - strcpy(detailCaption, "Merge Account"); - if (txCtx->txDetails.opDetails.sourceAccountPresent) { - print_muxed_account(&txCtx->txDetails.opDetails.sourceAccount, detailValue, 0, 0); - } else { - print_muxed_account(&txCtx->txDetails.sourceAccount, detailValue, 0, 0); - } - push_to_formatter_stack(&format_account_merge_destination); -} - -static void format_account_merge(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Account Merge"); - push_to_formatter_stack(&format_account_merge_detail); -} - -static void format_manage_data_value(tx_context_t *txCtx) { - strcpy(detailCaption, "Data Value"); - char tmp[89]; - base64_encode(txCtx->txDetails.opDetails.manageDataOp.dataValue, - txCtx->txDetails.opDetails.manageDataOp.dataValueSize, - tmp); - print_summary(tmp, detailValue, 12, 12); - format_operation_source_prepare(txCtx); -} - -static void format_manage_data_detail(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.manageDataOp.dataValueSize) { - strcpy(detailCaption, "Set Data"); - push_to_formatter_stack(&format_manage_data_value); - } else { - strcpy(detailCaption, "Remove Data"); - format_operation_source_prepare(txCtx); - } - char tmp[65]; - memcpy(tmp, - txCtx->txDetails.opDetails.manageDataOp.dataName, - txCtx->txDetails.opDetails.manageDataOp.dataNameSize); - tmp[txCtx->txDetails.opDetails.manageDataOp.dataNameSize] = '\0'; - print_summary(tmp, detailValue, 12, 12); -} - -static void format_manage_data(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Manage Data"); - push_to_formatter_stack(&format_manage_data_detail); -} - -static void format_allow_trust_authorize(tx_context_t *txCtx) { - strcpy(detailCaption, "Authorize Flag"); - if (txCtx->txDetails.opDetails.allowTrustOp.authorize == AUTHORIZED_FLAG) { - strlcpy(detailValue, "AUTHORIZED_FLAG", DETAIL_VALUE_MAX_SIZE); - } else if (txCtx->txDetails.opDetails.allowTrustOp.authorize == - AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG) { - strlcpy(detailValue, "AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG", DETAIL_VALUE_MAX_SIZE); - } else { - strlcpy(detailValue, "UNAUTHORIZED_FLAG", DETAIL_VALUE_MAX_SIZE); - } - format_operation_source_prepare(txCtx); -} - -static void format_allow_trust_asset_code(tx_context_t *txCtx) { - strcpy(detailCaption, "Asset Code"); - strlcpy(detailValue, txCtx->txDetails.opDetails.allowTrustOp.assetCode, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_allow_trust_authorize); -} - -static void format_allow_trust_trustor(tx_context_t *txCtx) { - strcpy(detailCaption, "Trustor"); - print_public_key(txCtx->txDetails.opDetails.allowTrustOp.trustor, detailValue, 0, 0); - push_to_formatter_stack(&format_allow_trust_asset_code); -} - -static void format_allow_trust(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Allow Trust"); - push_to_formatter_stack(&format_allow_trust_trustor); -} - -static void format_set_option_signer_weight(tx_context_t *txCtx) { - strcpy(detailCaption, "Weight"); - print_uint(txCtx->txDetails.opDetails.setOptionsOp.signer.weight, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_set_option_signer_detail(tx_context_t *txCtx) { - strcpy(detailCaption, "Signer Key"); - SignerKey *key = &txCtx->txDetails.opDetails.setOptionsOp.signer.key; - - switch (key->type) { - case SIGNER_KEY_TYPE_ED25519: { - print_public_key(key->data, detailValue, 0, 0); - break; - } - case SIGNER_KEY_TYPE_HASH_X: { - char tmp[57]; - encode_hash_x_key(key->data, tmp); - print_summary(tmp, detailValue, 12, 12); - break; - } - - case SIGNER_KEY_TYPE_PRE_AUTH_TX: { - char tmp[57]; - encode_pre_auth_key(key->data, tmp); - print_summary(tmp, detailValue, 12, 12); - break; - } - default: - break; - } - push_to_formatter_stack(&format_set_option_signer_weight); -} - -static void format_set_option_signer(tx_context_t *txCtx) { - signer_t *signer = &txCtx->txDetails.opDetails.setOptionsOp.signer; - if (signer->weight) { - strcpy(detailCaption, "Add Signer"); - } else { - strcpy(detailCaption, "Remove Signer"); - } - switch (signer->key.type) { - case SIGNER_KEY_TYPE_ED25519: { - strcpy(detailValue, "Type Public Key"); - break; - } - case SIGNER_KEY_TYPE_HASH_X: { - strcpy(detailValue, "Type Hash(x)"); - break; - } - case SIGNER_KEY_TYPE_PRE_AUTH_TX: { - strcpy(detailValue, "Type Pre-Auth"); - break; - } - default: - break; - } - push_to_formatter_stack(&format_set_option_signer_detail); -} - -static void format_set_option_signer_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.signerPresent) { - push_to_formatter_stack(&format_set_option_signer); - } else { - format_operation_source_prepare(txCtx); - } -} - -static void format_set_option_home_domain(tx_context_t *txCtx) { - strcpy(detailCaption, "Home Domain"); - if (txCtx->txDetails.opDetails.setOptionsOp.homeDomainSize) { - memcpy(detailValue, - txCtx->txDetails.opDetails.setOptionsOp.homeDomain, - txCtx->txDetails.opDetails.setOptionsOp.homeDomainSize); - detailValue[txCtx->txDetails.opDetails.setOptionsOp.homeDomainSize] = '\0'; - } else { - strcpy(detailValue, "[remove home domain from account]"); - } - format_set_option_signer_prepare(txCtx); -} - -static void format_set_option_home_domain_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.homeDomainPresent) { - push_to_formatter_stack(&format_set_option_home_domain); - } else { - format_set_option_signer_prepare(txCtx); - } -} - -static void format_set_option_high_threshold(tx_context_t *txCtx) { - strcpy(detailCaption, "High Threshold"); - print_uint(txCtx->txDetails.opDetails.setOptionsOp.highThreshold, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_set_option_home_domain_prepare(txCtx); -} - -static void format_set_option_high_threshold_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.highThresholdPresent) { - push_to_formatter_stack(&format_set_option_high_threshold); - } else { - format_set_option_home_domain_prepare(txCtx); - } -} - -static void format_set_option_medium_threshold(tx_context_t *txCtx) { - strcpy(detailCaption, "Medium Threshold"); - print_uint(txCtx->txDetails.opDetails.setOptionsOp.mediumThreshold, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_set_option_high_threshold_prepare(txCtx); -} - -static void format_set_option_medium_threshold_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.mediumThresholdPresent) { - push_to_formatter_stack(&format_set_option_medium_threshold); - } else { - format_set_option_high_threshold_prepare(txCtx); - } -} - -static void format_set_option_low_threshold(tx_context_t *txCtx) { - strcpy(detailCaption, "Low Threshold"); - print_uint(txCtx->txDetails.opDetails.setOptionsOp.lowThreshold, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_set_option_medium_threshold_prepare(txCtx); -} - -static void format_set_option_low_threshold_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.lowThresholdPresent) { - push_to_formatter_stack(&format_set_option_low_threshold); - } else { - format_set_option_medium_threshold_prepare(txCtx); - } -} - -static void format_set_option_master_weight(tx_context_t *txCtx) { - strcpy(detailCaption, "Master Weight"); - print_uint(txCtx->txDetails.opDetails.setOptionsOp.masterWeight, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_set_option_low_threshold_prepare(txCtx); -} - -static void format_set_option_master_weight_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.masterWeightPresent) { - push_to_formatter_stack(&format_set_option_master_weight); - } else { - format_set_option_low_threshold_prepare(txCtx); - } -} - -static void format_set_option_set_flags(tx_context_t *txCtx) { - strcpy(detailCaption, "Set Flags"); - print_flags(txCtx->txDetails.opDetails.setOptionsOp.setFlags, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_set_option_master_weight_prepare(txCtx); -} - -static void format_set_option_set_flags_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.setFlags) { - push_to_formatter_stack(&format_set_option_set_flags); - } else { - format_set_option_master_weight_prepare(txCtx); - } -} - -static void format_set_option_clear_flags(tx_context_t *txCtx) { - strcpy(detailCaption, "Clear Flags"); - print_flags(txCtx->txDetails.opDetails.setOptionsOp.clearFlags, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_set_option_set_flags_prepare(txCtx); -} - -static void format_set_option_clear_flags_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.clearFlags) { - push_to_formatter_stack(&format_set_option_clear_flags); - } else { - format_set_option_set_flags_prepare(txCtx); - } -} - -static void format_set_option_inflation_destination(tx_context_t *txCtx) { - strcpy(detailCaption, "Inflation Dest"); - print_public_key(txCtx->txDetails.opDetails.setOptionsOp.inflationDestination, - detailValue, - 0, - 0); - format_set_option_clear_flags_prepare(txCtx); -} - -static void format_set_option_inflation_destination_prepare(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.setOptionsOp.inflationDestinationPresent) { - push_to_formatter_stack(format_set_option_inflation_destination); - } else { - format_set_option_clear_flags_prepare(txCtx); - } -} - -static void format_set_options_empty_body(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "SET OPTIONS"); - strcpy(detailValue, "BODY IS EMPTY"); - format_operation_source_prepare(txCtx); -} - -static bool is_empty_set_options_body(tx_context_t *txCtx) { - return !(txCtx->txDetails.opDetails.setOptionsOp.inflationDestinationPresent || - txCtx->txDetails.opDetails.setOptionsOp.clearFlags || - txCtx->txDetails.opDetails.setOptionsOp.setFlags || - txCtx->txDetails.opDetails.setOptionsOp.masterWeightPresent || - txCtx->txDetails.opDetails.setOptionsOp.lowThresholdPresent || - txCtx->txDetails.opDetails.setOptionsOp.mediumThresholdPresent || - txCtx->txDetails.opDetails.setOptionsOp.highThresholdPresent || - txCtx->txDetails.opDetails.setOptionsOp.homeDomainPresent || - txCtx->txDetails.opDetails.setOptionsOp.signerPresent); -} - -static void format_set_options(tx_context_t *txCtx) { - // this operation is a special one among all operations, because all its fields are optional. - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Set Options"); - if (is_empty_set_options_body(txCtx)) { - push_to_formatter_stack(format_set_options_empty_body); - } else { - format_set_option_inflation_destination_prepare(txCtx); - } -} - -static void format_change_trust_limit(tx_context_t *txCtx) { - strcpy(detailCaption, "Trust Limit"); - print_amount(txCtx->txDetails.opDetails.changeTrustOp.limit, - NULL, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_change_trust_detail_liquidity_pool_fee(tx_context_t *txCtx) { - strcpy(detailCaption, "Pool Fee Rate"); - uint64_t fee = - ((uint64_t) - txCtx->txDetails.opDetails.changeTrustOp.line.liquidityPool.constantProduct.fee * - 10000000) / - 100; - print_amount(fee, NULL, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - strlcat(detailValue, "%", DETAIL_VALUE_MAX_SIZE); - if (txCtx->txDetails.opDetails.changeTrustOp.limit && - txCtx->txDetails.opDetails.changeTrustOp.limit != INT64_MAX) { - push_to_formatter_stack(&format_change_trust_limit); - } else { - format_operation_source_prepare(txCtx); - } -} - -static void format_change_trust_detail_liquidity_pool_asset_b(tx_context_t *txCtx) { - strcpy(detailCaption, "Asset B"); - if (txCtx->txDetails.opDetails.changeTrustOp.line.liquidityPool.constantProduct.assetB.type == - ASSET_TYPE_NATIVE) { - print_native_asset_code(txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - } else { - print_asset_t( - &txCtx->txDetails.opDetails.changeTrustOp.line.liquidityPool.constantProduct.assetB, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - } - push_to_formatter_stack(&format_change_trust_detail_liquidity_pool_fee); -} - -static void format_change_trust_detail_liquidity_pool_asset_a(tx_context_t *txCtx) { - strcpy(detailCaption, "Asset A"); - if (txCtx->txDetails.opDetails.changeTrustOp.line.liquidityPool.constantProduct.assetA.type == - ASSET_TYPE_NATIVE) { - print_native_asset_code(txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - } else { - print_asset_t( - &txCtx->txDetails.opDetails.changeTrustOp.line.liquidityPool.constantProduct.assetA, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - } - push_to_formatter_stack(&format_change_trust_detail_liquidity_pool_asset_b); -} - -static void format_change_trust_detail_liquidity_pool_asset(tx_context_t *txCtx) { - (void) txCtx; - - strcpy(detailCaption, "Liquidity Pool"); - strcpy(detailValue, "Asset"); - push_to_formatter_stack(&format_change_trust_detail_liquidity_pool_asset_a); -} - -static void format_change_trust_detail(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.changeTrustOp.limit) { - strcpy(detailCaption, "Change Trust"); - } else { - strcpy(detailCaption, "Remove Trust"); - } - uint8_t asset_type = txCtx->txDetails.opDetails.changeTrustOp.line.type; - switch (asset_type) { - case ASSET_TYPE_CREDIT_ALPHANUM4: - case ASSET_TYPE_CREDIT_ALPHANUM12: - print_asset_t((Asset *) &txCtx->txDetails.opDetails.changeTrustOp.line, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - if (txCtx->txDetails.opDetails.changeTrustOp.limit && - txCtx->txDetails.opDetails.changeTrustOp.limit != INT64_MAX) { - push_to_formatter_stack(&format_change_trust_limit); - } else { - format_operation_source_prepare(txCtx); - } - break; - case ASSET_TYPE_POOL_SHARE: - push_to_formatter_stack(&format_change_trust_detail_liquidity_pool_asset); - break; - default: - return; - } -} - -static void format_change_trust(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Change Trust"); - push_to_formatter_stack(&format_change_trust_detail); -} - -static void format_manage_sell_offer_sell(tx_context_t *txCtx) { - strcpy(detailCaption, "Sell"); - print_amount(txCtx->txDetails.opDetails.manageSellOfferOp.amount, - &txCtx->txDetails.opDetails.manageSellOfferOp.selling, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_manage_sell_offer_price(tx_context_t *txCtx) { - strcpy(detailCaption, "Price"); - uint64_t price = ((uint64_t) txCtx->txDetails.opDetails.manageSellOfferOp.price.n * 10000000) / - txCtx->txDetails.opDetails.manageSellOfferOp.price.d; - print_amount(price, - &txCtx->txDetails.opDetails.manageSellOfferOp.buying, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_manage_sell_offer_sell); -} - -static void format_manage_sell_offer_buy(tx_context_t *txCtx) { - strcpy(detailCaption, "Buy"); - if (txCtx->txDetails.opDetails.manageSellOfferOp.buying.type == ASSET_TYPE_NATIVE) { - print_native_asset_code(txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - } else { - print_asset_t(&txCtx->txDetails.opDetails.manageSellOfferOp.buying, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - } - push_to_formatter_stack(&format_manage_sell_offer_price); -} - -static void format_manage_sell_offer_detail(tx_context_t *txCtx) { - if (!txCtx->txDetails.opDetails.manageSellOfferOp.amount) { - strcpy(detailCaption, "Remove Offer"); - print_uint(txCtx->txDetails.opDetails.manageSellOfferOp.offerID, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); - } else { - if (txCtx->txDetails.opDetails.manageSellOfferOp.offerID) { - strcpy(detailCaption, "Change Offer"); - print_uint(txCtx->txDetails.opDetails.manageSellOfferOp.offerID, - detailValue, - DETAIL_VALUE_MAX_SIZE); - } else { - strcpy(detailCaption, "Create Offer"); - strcpy(detailValue, "Type Active"); - } - push_to_formatter_stack(&format_manage_sell_offer_buy); - } -} - -static void format_manage_sell_offer(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Manage Sell Offer"); - push_to_formatter_stack(&format_manage_sell_offer_detail); -} - -static void format_manage_buy_offer_buy(tx_context_t *txCtx) { - ManageBuyOfferOp *op = &txCtx->txDetails.opDetails.manageBuyOfferOp; - - strcpy(detailCaption, "Buy"); - print_amount(op->buyAmount, &op->buying, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_manage_buy_offer_price(tx_context_t *txCtx) { - ManageBuyOfferOp *op = &txCtx->txDetails.opDetails.manageBuyOfferOp; - - strcpy(detailCaption, "Price"); - uint64_t price = ((uint64_t) op->price.n * 10000000) / op->price.d; - print_amount(price, &op->selling, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_manage_buy_offer_buy); -} - -static void format_manage_buy_offer_sell(tx_context_t *txCtx) { - ManageBuyOfferOp *op = &txCtx->txDetails.opDetails.manageBuyOfferOp; - - strcpy(detailCaption, "Sell"); - if (op->selling.type == ASSET_TYPE_NATIVE) { - print_native_asset_code(txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - } else { - print_asset_t(&op->selling, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - } - push_to_formatter_stack(&format_manage_buy_offer_price); -} - -static void format_manage_buy_offer_detail(tx_context_t *txCtx) { - ManageBuyOfferOp *op = &txCtx->txDetails.opDetails.manageBuyOfferOp; - - if (op->buyAmount == 0) { - strcpy(detailCaption, "Remove Offer"); - print_uint(op->offerID, detailValue, DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); // TODO - } else { - if (op->offerID) { - strcpy(detailCaption, "Change Offer"); - print_uint(op->offerID, detailValue, DETAIL_VALUE_MAX_SIZE); - } else { - strcpy(detailCaption, "Create Offer"); - strcpy(detailValue, "Type Active"); - } - push_to_formatter_stack(&format_manage_buy_offer_sell); - } -} - -static void format_manage_buy_offer(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Manage Buy Offer"); - push_to_formatter_stack(&format_manage_buy_offer_detail); -} - -static void format_create_passive_sell_offer_sell(tx_context_t *txCtx) { - strcpy(detailCaption, "Sell"); - print_amount(txCtx->txDetails.opDetails.createPassiveSellOfferOp.amount, - &txCtx->txDetails.opDetails.createPassiveSellOfferOp.selling, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_create_passive_sell_offer_price(tx_context_t *txCtx) { - strcpy(detailCaption, "Price"); - - CreatePassiveSellOfferOp *op = &txCtx->txDetails.opDetails.createPassiveSellOfferOp; - uint64_t price = ((uint64_t) op->price.n * 10000000) / op->price.d; - print_amount(price, &op->buying, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_create_passive_sell_offer_sell); -} - -static void format_create_passive_sell_offer_buy(tx_context_t *txCtx) { - strcpy(detailCaption, "Buy"); - if (txCtx->txDetails.opDetails.createPassiveSellOfferOp.buying.type == ASSET_TYPE_NATIVE) { - print_native_asset_code(txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - } else { - print_asset_t(&txCtx->txDetails.opDetails.createPassiveSellOfferOp.buying, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - } - push_to_formatter_stack(&format_create_passive_sell_offer_price); -} - -static void format_create_passive_sell_offer(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Create Passive Sell Offer"); - push_to_formatter_stack(&format_create_passive_sell_offer_buy); -} - -static void format_path_payment_strict_receive_path_via(tx_context_t *txCtx) { - strcpy(detailCaption, "Via"); - uint8_t i; - for (i = 0; i < txCtx->txDetails.opDetails.pathPaymentStrictReceiveOp.pathLen; i++) { - char asset_name[12 + 1]; - Asset *asset = &txCtx->txDetails.opDetails.pathPaymentStrictReceiveOp.path[i]; - if (strlen(detailValue) != 0) { - strlcat(detailValue, ", ", DETAIL_VALUE_MAX_SIZE); - } - print_asset_name(asset, txCtx->network, asset_name, sizeof(asset_name)); - strlcat(detailValue, asset_name, DETAIL_VALUE_MAX_SIZE); - } - format_operation_source_prepare(txCtx); -} - -static void format_path_payment_strict_receive_receive(tx_context_t *txCtx) { - strcpy(detailCaption, "Receive"); - print_amount(txCtx->txDetails.opDetails.pathPaymentStrictReceiveOp.destAmount, - &txCtx->txDetails.opDetails.pathPaymentStrictReceiveOp.destAsset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - if (txCtx->txDetails.opDetails.pathPaymentStrictReceiveOp.pathLen) { - push_to_formatter_stack(&format_path_payment_strict_receive_path_via); - } else { - format_operation_source_prepare(txCtx); - } -} - -static void format_path_payment_strict_receive_destination(tx_context_t *txCtx) { - strcpy(detailCaption, "Destination"); - print_muxed_account(&txCtx->txDetails.opDetails.pathPaymentStrictReceiveOp.destination, - detailValue, - 0, - 0); - push_to_formatter_stack(&format_path_payment_strict_receive_receive); -} - -static void format_path_payment_strict_receive_send(tx_context_t *txCtx) { - strcpy(detailCaption, "Send Max"); - print_amount(txCtx->txDetails.opDetails.pathPaymentStrictReceiveOp.sendMax, - &txCtx->txDetails.opDetails.pathPaymentStrictReceiveOp.sendAsset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_path_payment_strict_receive_destination); -} - -static void format_path_payment_strict_receive(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Path Payment Strict Receive"); - push_to_formatter_stack(&format_path_payment_strict_receive_send); -} - -static void format_path_payment_strict_send_path_via(tx_context_t *txCtx) { - strcpy(detailCaption, "Via"); - uint8_t i; - for (i = 0; i < txCtx->txDetails.opDetails.pathPaymentStrictSendOp.pathLen; i++) { - char asset_name[12 + 1]; - Asset *asset = &txCtx->txDetails.opDetails.pathPaymentStrictSendOp.path[i]; - if (strlen(detailValue) != 0) { - strlcat(detailValue, ", ", DETAIL_VALUE_MAX_SIZE); - } - print_asset_name(asset, txCtx->network, asset_name, sizeof(asset_name)); - strlcat(detailValue, asset_name, DETAIL_VALUE_MAX_SIZE); - } - format_operation_source_prepare(txCtx); -} - -static void format_path_payment_strict_send_receive(tx_context_t *txCtx) { - strcpy(detailCaption, "Receive Min"); - print_amount(txCtx->txDetails.opDetails.pathPaymentStrictSendOp.destMin, - &txCtx->txDetails.opDetails.pathPaymentStrictSendOp.destAsset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - if (txCtx->txDetails.opDetails.pathPaymentStrictSendOp.pathLen) { - push_to_formatter_stack(&format_path_payment_strict_send_path_via); - } else { - format_operation_source_prepare(txCtx); - } -} - -static void format_path_payment_strict_send_destination(tx_context_t *txCtx) { - strcpy(detailCaption, "Destination"); - print_muxed_account(&txCtx->txDetails.opDetails.pathPaymentStrictSendOp.destination, - detailValue, - 0, - 0); - push_to_formatter_stack(&format_path_payment_strict_send_receive); -} - -static void format_path_payment_strict_send(tx_context_t *txCtx) { - strcpy(detailCaption, "Send"); - print_amount(txCtx->txDetails.opDetails.pathPaymentStrictSendOp.sendAmount, - &txCtx->txDetails.opDetails.pathPaymentStrictSendOp.sendAsset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_path_payment_strict_send_destination); -} - -static void format_payment_destination(tx_context_t *txCtx) { - strcpy(detailCaption, "Destination"); - print_muxed_account(&txCtx->txDetails.opDetails.payment.destination, detailValue, 0, 0); - format_operation_source_prepare(txCtx); -} - -static void format_payment_send(tx_context_t *txCtx) { - strcpy(detailCaption, "Send"); - print_amount(txCtx->txDetails.opDetails.payment.amount, - &txCtx->txDetails.opDetails.payment.asset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_payment_destination); -} - -static void format_payment(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Payment"); - push_to_formatter_stack(&format_payment_send); -} - -static void format_create_account_amount(tx_context_t *txCtx) { - strcpy(detailCaption, "Starting Balance"); - Asset asset = {.type = ASSET_TYPE_NATIVE}; - print_amount(txCtx->txDetails.opDetails.createAccount.startingBalance, - &asset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_create_account_destination(tx_context_t *txCtx) { - strcpy(detailCaption, "Destination"); - print_public_key(txCtx->txDetails.opDetails.createAccount.destination, detailValue, 0, 0); - push_to_formatter_stack(&format_create_account_amount); -} - -static void format_create_account(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Create Account"); - push_to_formatter_stack(&format_create_account_destination); -} - -void format_create_claimable_balance_warning(tx_context_t *txCtx) { - (void) txCtx; - // TODO: The claimant can be very complicated. I haven't figured out how to - // display it for the time being, so let's display an WARNING here first. - strcpy(detailCaption, "WARNING"); - strcpy(detailValue, "Currently does not support displaying claimant details"); - format_operation_source_prepare(txCtx); -} - -static void format_create_claimable_balance_balance(tx_context_t *txCtx) { - strcpy(detailCaption, "Balance"); - print_amount(txCtx->txDetails.opDetails.createClaimableBalanceOp.amount, - &txCtx->txDetails.opDetails.createClaimableBalanceOp.asset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_create_claimable_balance_warning); -} - -static void format_create_claimable_balance(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Create Claimable Balance"); - push_to_formatter_stack(&format_create_claimable_balance_balance); -} - -static void format_claim_claimable_balance_balance_id(tx_context_t *txCtx) { - strcpy(detailCaption, "Balance ID"); - print_claimable_balance_id(&txCtx->txDetails.opDetails.claimClaimableBalanceOp.balanceID, - detailValue); - format_operation_source_prepare(txCtx); -} - -static void format_claim_claimable_balance(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Claim Claimable Balance"); - push_to_formatter_stack(&format_claim_claimable_balance_balance_id); -} - -static void format_claim_claimable_balance_sponsored_id(tx_context_t *txCtx) { - strcpy(detailCaption, "Sponsored ID"); - print_public_key(txCtx->txDetails.opDetails.beginSponsoringFutureReservesOp.sponsoredID, - detailValue, - 0, - 0); - format_operation_source_prepare(txCtx); -} - -static void format_begin_sponsoring_future_reserves(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Begin Sponsoring Future Reserves"); - push_to_formatter_stack(&format_claim_claimable_balance_sponsored_id); -} - -static void format_end_sponsoring_future_reserves(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "End Sponsoring Future Reserves"); - format_operation_source_prepare(txCtx); -} - -static void format_revoke_sponsorship_account(tx_context_t *txCtx) { - strcpy(detailCaption, "Account ID"); - print_public_key(txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.account.accountID, - detailValue, - 0, - 0); - format_operation_source_prepare(txCtx); -} - -static void format_revoke_sponsorship_trust_line_asset(tx_context_t *txCtx) { - if (txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.trustLine.asset.type == - ASSET_TYPE_POOL_SHARE) { - strcpy(detailCaption, "Liquidity Pool ID"); - print_binary(txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.trustLine.asset - .liquidityPoolID, - detailValue, - LIQUIDITY_POOL_ID_SIZE); - } else { - strcpy(detailCaption, "Asset"); - print_asset_t( - (Asset *) &txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.trustLine.asset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - } - format_operation_source_prepare(txCtx); -} - -static void format_revoke_sponsorship_trust_line_account(tx_context_t *txCtx) { - strcpy(detailCaption, "Account ID"); - print_public_key(txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.trustLine.accountID, - detailValue, - 0, - 0); - push_to_formatter_stack(&format_revoke_sponsorship_trust_line_asset); -} -static void format_revoke_sponsorship_offer_offer_id(tx_context_t *txCtx) { - strcpy(detailCaption, "Offer ID"); - print_uint(txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.offer.offerID, - detailValue, - DETAIL_VALUE_MAX_SIZE); - - format_operation_source_prepare(txCtx); -} - -static void format_revoke_sponsorship_offer_seller_id(tx_context_t *txCtx) { - strcpy(detailCaption, "Seller ID"); - print_public_key(txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.offer.sellerID, - detailValue, - 0, - 0); - push_to_formatter_stack(&format_revoke_sponsorship_offer_offer_id); -} - -static void format_revoke_sponsorship_data_data_name(tx_context_t *txCtx) { - strcpy(detailCaption, "Data Name"); - - _Static_assert(DATA_NAME_MAX_SIZE + 1 < DETAIL_VALUE_MAX_SIZE, - "DATA_NAME_MAX_SIZE must be smaller than DETAIL_VALUE_MAX_SIZE"); - - memcpy(detailValue, - txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.data.dataName, - txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.data.dataNameSize); - detailValue[txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.data.dataNameSize] = '\0'; - format_operation_source_prepare(txCtx); -} - -static void format_revoke_sponsorship_data_account(tx_context_t *txCtx) { - strcpy(detailCaption, "Account ID"); - print_public_key(txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.data.accountID, - detailValue, - 0, - 0); - push_to_formatter_stack(&format_revoke_sponsorship_data_data_name); -} - -static void format_revoke_sponsorship_claimable_balance(tx_context_t *txCtx) { - strcpy(detailCaption, "Balance ID"); - print_claimable_balance_id( - &txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.claimableBalance.balanceId, - detailValue); - format_operation_source_prepare(txCtx); -} - -static void format_revoke_sponsorship_liquidity_pool(tx_context_t *txCtx) { - strcpy(detailCaption, "Liquidity Pool ID"); - print_binary( - txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.liquidityPool.liquidityPoolID, - detailValue, - LIQUIDITY_POOL_ID_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_revoke_sponsorship_claimable_signer_signer_key_detail(tx_context_t *txCtx) { - strcpy(detailCaption, "Signer Key"); - SignerKey *key = &txCtx->txDetails.opDetails.revokeSponsorshipOp.signer.signerKey; - - switch (key->type) { - case SIGNER_KEY_TYPE_ED25519: { - print_public_key(key->data, detailValue, 0, 0); - break; - } - case SIGNER_KEY_TYPE_HASH_X: { - char tmp[57]; - encode_hash_x_key(key->data, tmp); - print_summary(tmp, detailValue, 12, 12); - break; - } - - case SIGNER_KEY_TYPE_PRE_AUTH_TX: { - char tmp[57]; - encode_pre_auth_key(key->data, tmp); - print_summary(tmp, detailValue, 12, 12); - break; - } - default: - break; - } - format_operation_source_prepare(txCtx); -} - -static void format_revoke_sponsorship_claimable_signer_signer_key_type(tx_context_t *txCtx) { - strcpy(detailCaption, "Signer Key Type"); - switch (txCtx->txDetails.opDetails.revokeSponsorshipOp.signer.signerKey.type) { - case SIGNER_KEY_TYPE_ED25519: { - strcpy(detailValue, "Public Key"); - break; - } - case SIGNER_KEY_TYPE_HASH_X: { - strcpy(detailValue, "Hash(x)"); - break; - } - case SIGNER_KEY_TYPE_PRE_AUTH_TX: { - strcpy(detailValue, "Pre-Auth"); - break; - } - default: - break; - } - - push_to_formatter_stack(&format_revoke_sponsorship_claimable_signer_signer_key_detail); -} - -static void format_revoke_sponsorship_claimable_signer_account(tx_context_t *txCtx) { - strcpy(detailCaption, "Account ID"); - print_public_key(txCtx->txDetails.opDetails.revokeSponsorshipOp.signer.accountID, - detailValue, - 0, - 0); - push_to_formatter_stack(&format_revoke_sponsorship_claimable_signer_signer_key_type); -} - -static void format_revoke_sponsorship(tx_context_t *txCtx) { - strcpy(detailCaption, "Operation Type"); - if (txCtx->txDetails.opDetails.revokeSponsorshipOp.type == REVOKE_SPONSORSHIP_SIGNER) { - strcpy(detailValue, "Revoke Sponsorship (SIGNER_KEY)"); - push_to_formatter_stack(&format_revoke_sponsorship_claimable_signer_account); - } else { - switch (txCtx->txDetails.opDetails.revokeSponsorshipOp.ledgerKey.type) { - case ACCOUNT: - strcpy(detailValue, "Revoke Sponsorship (ACCOUNT)"); - push_to_formatter_stack(&format_revoke_sponsorship_account); - break; - case OFFER: - strcpy(detailValue, "Revoke Sponsorship (OFFER)"); - push_to_formatter_stack(&format_revoke_sponsorship_offer_seller_id); - break; - case TRUSTLINE: - strcpy(detailValue, "Revoke Sponsorship (TRUSTLINE)"); - push_to_formatter_stack(&format_revoke_sponsorship_trust_line_account); - break; - case DATA: - strcpy(detailValue, "Revoke Sponsorship (DATA)"); - push_to_formatter_stack(&format_revoke_sponsorship_data_account); - break; - case CLAIMABLE_BALANCE: - strcpy(detailValue, "Revoke Sponsorship (CLAIMABLE_BALANCE)"); - push_to_formatter_stack(&format_revoke_sponsorship_claimable_balance); - break; - case LIQUIDITY_POOL: - strcpy(detailValue, "Revoke Sponsorship (LIQUIDITY_POOL)"); - push_to_formatter_stack(&format_revoke_sponsorship_liquidity_pool); - break; - } - } -} - -static void format_clawback_from(tx_context_t *txCtx) { - strcpy(detailCaption, "From"); - print_muxed_account(&txCtx->txDetails.opDetails.clawbackOp.from, detailValue, 0, 0); - format_operation_source_prepare(txCtx); -} - -static void format_clawback_amount(tx_context_t *txCtx) { - strcpy(detailCaption, "Clawback Balance"); - print_amount(txCtx->txDetails.opDetails.clawbackOp.amount, - &txCtx->txDetails.opDetails.clawbackOp.asset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_clawback_from); -} - -static void format_clawback(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Clawback"); - push_to_formatter_stack(&format_clawback_amount); -} - -static void format_clawback_claimable_balance_balance_id(tx_context_t *txCtx) { - strcpy(detailCaption, "Balance ID"); - print_claimable_balance_id(&txCtx->txDetails.opDetails.clawbackClaimableBalanceOp.balanceID, - detailValue); - format_operation_source_prepare(txCtx); -} - -static void format_clawback_claimable_balance(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Clawback Claimable Balance"); - push_to_formatter_stack(&format_clawback_claimable_balance_balance_id); -} - -static void format_set_trust_line_set_flags(tx_context_t *txCtx) { - strcpy(detailCaption, "Set Flags"); - if (txCtx->txDetails.opDetails.setTrustLineFlagsOp.setFlags) { - print_trust_line_flags(txCtx->txDetails.opDetails.setTrustLineFlagsOp.setFlags, - detailValue, - DETAIL_VALUE_MAX_SIZE); - } else { - strcpy(detailValue, "[none]"); - } - format_operation_source_prepare(txCtx); -} - -static void format_set_trust_line_clear_flags(tx_context_t *txCtx) { - strcpy(detailCaption, "Clear Flags"); - if (txCtx->txDetails.opDetails.setTrustLineFlagsOp.clearFlags) { - print_trust_line_flags(txCtx->txDetails.opDetails.setTrustLineFlagsOp.clearFlags, - detailValue, - DETAIL_VALUE_MAX_SIZE); - } else { - strcpy(detailValue, "[none]"); - } - push_to_formatter_stack(&format_set_trust_line_set_flags); -} - -static void format_set_trust_line_asset(tx_context_t *txCtx) { - strcpy(detailCaption, "Asset"); - print_asset_t(&txCtx->txDetails.opDetails.setTrustLineFlagsOp.asset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_set_trust_line_clear_flags); -} - -static void format_set_trust_line_trustor(tx_context_t *txCtx) { - strcpy(detailCaption, "Trustor"); - print_public_key(txCtx->txDetails.opDetails.setTrustLineFlagsOp.trustor, detailValue, 0, 0); - push_to_formatter_stack(&format_set_trust_line_asset); -} - -static void format_set_trust_line_flags(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Set Trust Line Flags"); - push_to_formatter_stack(&format_set_trust_line_trustor); -} - -static void format_liquidity_pool_deposit_max_price(tx_context_t *txCtx) { - strcpy(detailCaption, "Max Price"); - uint64_t price = - ((uint64_t) txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxPrice.n * 10000000) / - txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxPrice.d; - print_amount(price, NULL, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_liquidity_pool_deposit_min_price(tx_context_t *txCtx) { - strcpy(detailCaption, "Min Price"); - uint64_t price = - ((uint64_t) txCtx->txDetails.opDetails.liquidityPoolDepositOp.minPrice.n * 10000000) / - txCtx->txDetails.opDetails.liquidityPoolDepositOp.minPrice.d; - print_amount(price, NULL, txCtx->network, detailValue, DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_liquidity_pool_deposit_max_price); -} - -static void format_liquidity_pool_deposit_max_amount_b(tx_context_t *txCtx) { - strcpy(detailCaption, "Max Amount B"); - print_amount(txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxAmountB, - NULL, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_liquidity_pool_deposit_min_price); -} - -static void format_liquidity_pool_deposit_max_amount_a(tx_context_t *txCtx) { - strcpy(detailCaption, "Max Amount A"); - print_amount(txCtx->txDetails.opDetails.liquidityPoolDepositOp.maxAmountA, - NULL, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_liquidity_pool_deposit_max_amount_b); -} - -static void format_liquidity_pool_deposit_liquidity_pool_id(tx_context_t *txCtx) { - strcpy(detailCaption, "Liquidity Pool ID"); - print_binary(txCtx->txDetails.opDetails.liquidityPoolDepositOp.liquidityPoolID, - detailValue, - LIQUIDITY_POOL_ID_SIZE); - push_to_formatter_stack(&format_liquidity_pool_deposit_max_amount_a); -} - -static void format_liquidity_pool_deposit(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Liquidity Pool Deposit"); - push_to_formatter_stack(&format_liquidity_pool_deposit_liquidity_pool_id); -} - -static void format_liquidity_pool_withdraw_min_amount_b(tx_context_t *txCtx) { - strcpy(detailCaption, "Min Amount B"); - print_amount(txCtx->txDetails.opDetails.liquidityPoolWithdrawOp.minAmountB, - NULL, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - format_operation_source_prepare(txCtx); -} - -static void format_liquidity_pool_withdraw_min_amount_a(tx_context_t *txCtx) { - strcpy(detailCaption, "Min Amount A"); - print_amount(txCtx->txDetails.opDetails.liquidityPoolWithdrawOp.minAmountA, - NULL, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_liquidity_pool_withdraw_min_amount_b); -} - -static void format_liquidity_pool_withdraw_amount(tx_context_t *txCtx) { - strcpy(detailCaption, "Amount"); - print_amount(txCtx->txDetails.opDetails.liquidityPoolWithdrawOp.amount, - NULL, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_liquidity_pool_withdraw_min_amount_a); -} - -static void format_liquidity_pool_withdraw_liquidity_pool_id(tx_context_t *txCtx) { - strcpy(detailCaption, "Liquidity Pool ID"); - print_binary(txCtx->txDetails.opDetails.liquidityPoolWithdrawOp.liquidityPoolID, - detailValue, - LIQUIDITY_POOL_ID_SIZE); - push_to_formatter_stack(&format_liquidity_pool_withdraw_amount); -} - -static void format_liquidity_pool_withdraw(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Operation Type"); - strcpy(detailValue, "Liquidity Pool Withdraw"); - push_to_formatter_stack(&format_liquidity_pool_withdraw_liquidity_pool_id); -} - -static const format_function_t formatters[] = {&format_create_account, - &format_payment, - &format_path_payment_strict_receive, - &format_manage_sell_offer, - &format_create_passive_sell_offer, - &format_set_options, - &format_change_trust, - &format_allow_trust, - &format_account_merge, - &format_inflation, - &format_manage_data, - &format_bump_sequence, - &format_manage_buy_offer, - &format_path_payment_strict_send, - &format_create_claimable_balance, - &format_claim_claimable_balance, - &format_begin_sponsoring_future_reserves, - &format_end_sponsoring_future_reserves, - &format_revoke_sponsorship, - &format_clawback, - &format_clawback_claimable_balance, - &format_set_trust_line_flags, - &format_liquidity_pool_deposit, - &format_liquidity_pool_withdraw}; - -void format_confirm_operation(tx_context_t *txCtx) { - if (txCtx->txDetails.opCount > 1) { - size_t len; - strcpy(opCaption, "Operation "); - len = strlen(opCaption); - print_uint(txCtx->txDetails.opIdx, opCaption + len, OPERATION_CAPTION_MAX_SIZE - len); - strlcat(opCaption, " of ", sizeof(opCaption)); - len = strlen(opCaption); - print_uint(txCtx->txDetails.opCount, opCaption + len, OPERATION_CAPTION_MAX_SIZE - len); - push_to_formatter_stack( - ((format_function_t) PIC(formatters[txCtx->txDetails.opDetails.type]))); - } else { - ((format_function_t) PIC(formatters[txCtx->txDetails.opDetails.type]))(txCtx); - } -} - -static void format_confirm_hash_detail(tx_context_t *txCtx) { - strcpy(detailCaption, "Hash"); - print_binary_summary(txCtx->hash, detailValue, 32); - push_to_formatter_stack(NULL); -} - -void format_confirm_hash_warning(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "WARNING"); - strcpy(detailValue, "No details available"); - push_to_formatter_stack(&format_confirm_hash_detail); -} - -static void format_fee_bump_transaction_fee(tx_context_t *txCtx) { - strcpy(detailCaption, "Max Fee"); - Asset asset = {.type = ASSET_TYPE_NATIVE}; - print_amount(txCtx->feeBumpTxDetails.fee, - &asset, - txCtx->network, - detailValue, - DETAIL_VALUE_MAX_SIZE); - push_to_formatter_stack(&format_transaction_details); -} - -static void format_fee_bump_transaction_source(tx_context_t *txCtx) { - strcpy(detailCaption, "Fee Source"); - if (txCtx->envelopeType == ENVELOPE_TYPE_TX_FEE_BUMP && - txCtx->feeBumpTxDetails.feeSource.type == KEY_TYPE_ED25519 && - memcmp(txCtx->feeBumpTxDetails.feeSource.ed25519, - txCtx->publicKey, - ED25519_PUBLIC_KEY_LEN) == 0) { - print_muxed_account(&txCtx->feeBumpTxDetails.feeSource, detailValue, 6, 6); - } else { - print_muxed_account(&txCtx->feeBumpTxDetails.feeSource, detailValue, 0, 0); - } - push_to_formatter_stack(&format_fee_bump_transaction_fee); -} - -static void format_fee_bump_transaction_details(tx_context_t *txCtx) { - (void) txCtx; - strcpy(detailCaption, "Fee Bump"); - strcpy(detailValue, "Transaction Details"); - push_to_formatter_stack(&format_fee_bump_transaction_source); -} - -static format_function_t get_tx_details_formatter(tx_context_t *txCtx) { - if (txCtx->envelopeType == ENVELOPE_TYPE_TX_FEE_BUMP) { - return &format_fee_bump_transaction_details; - } - if (txCtx->envelopeType == ENVELOPE_TYPE_TX) { - if (txCtx->txDetails.memo.text != MEMO_NONE) { - return &format_memo; - } else { - return &format_fee; - } - } else { - THROW(0x6125); - } -} - -static void format_network(tx_context_t *txCtx) { - strcpy(detailCaption, "Network"); - strlcpy(detailValue, (char *) PIC(NETWORK_NAMES[txCtx->network]), DETAIL_VALUE_MAX_SIZE); - format_function_t formatter = get_tx_details_formatter(txCtx); - push_to_formatter_stack(formatter); -} - -static format_function_t get_tx_formatter(tx_context_t *txCtx) { - if (txCtx->network != 0) { - return &format_network; - } else { - return get_tx_details_formatter(txCtx); - } -} - -uint8_t current_data_index; - -format_function_t get_formatter(tx_context_t *txCtx, bool forward) { - switch (ctx.state) { - case STATE_APPROVE_TX: { // classic tx - if (!forward) { - if (current_data_index == - 0) { // if we're already at the beginning of the buffer, return NULL - return NULL; - } - // rewind to tx beginning if we're requesting a previous operation - txCtx->offset = 0; - txCtx->txDetails.opIdx = 0; - } - - if (current_data_index == 1) { - return get_tx_formatter(txCtx); - } - - // 1 == data_count_before_ops - while (current_data_index - 1 > txCtx->txDetails.opIdx) { - if (!parse_tx_xdr(txCtx->raw, txCtx->rawLength, txCtx)) { - return NULL; - } - } - return &format_confirm_operation; - } - case STATE_APPROVE_TX_HASH: { - if (!forward) { - return NULL; - } - return &format_confirm_hash_warning; - } - default: - THROW(0x6123); - } - return NULL; -} - -void ui_approve_tx_next_screen(tx_context_t *txCtx) { - if (!formatter_stack[formatter_index]) { - MEMCLEAR(formatter_stack); - formatter_index = 0; - current_data_index++; - formatter_stack[0] = get_formatter(txCtx, true); - } -} - -void ui_approve_tx_prev_screen(tx_context_t *txCtx) { - if (formatter_index == -1) { - MEMCLEAR(formatter_stack); - formatter_index = 0; - current_data_index--; - formatter_stack[0] = get_formatter(txCtx, false); - } -} - -void set_state_data(bool forward) { - if (forward) { - ui_approve_tx_next_screen(&ctx.req.tx); - } else { - ui_approve_tx_prev_screen(&ctx.req.tx); - } - - // Apply last formatter to fill the screen's buffer - if (formatter_stack[formatter_index]) { - MEMCLEAR(detailCaption); - MEMCLEAR(detailValue); - MEMCLEAR(opCaption); - formatter_stack[formatter_index](&ctx.req.tx); - - if (opCaption[0] != '\0') { - strlcpy(detailCaption, opCaption, sizeof(detailCaption)); - detailValue[0] = ' '; - } - } -} diff --git a/src/stellar_format.h b/src/stellar_format.h deleted file mode 100644 index bfd46eaa..00000000 --- a/src/stellar_format.h +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ -#ifndef _STELLAR_FORMAT_H_ -#define _STELLAR_FORMAT_H_ - -#include "stellar_types.h" - -/* - * the formatter prints the details and defines the order of the details - * by setting the next formatter to be called - */ -typedef void (*format_function_t)(tx_context_t *txCtx); - -/* 16 formatters in a row ought to be enough for everybody*/ -#define MAX_FORMATTERS_PER_OPERATION 16 - -/* the current formatter */ -extern format_function_t formatter_stack[MAX_FORMATTERS_PER_OPERATION]; -extern int8_t formatter_index; -extern uint8_t current_data_index; - -/* the current details printed by the formatter */ -extern char opCaption[OPERATION_CAPTION_MAX_SIZE]; -extern char detailCaption[DETAIL_CAPTION_MAX_SIZE]; -extern char detailValue[DETAIL_VALUE_MAX_SIZE]; - -void set_state_data(bool forward); - -#endif diff --git a/src/stellar_nvram.c b/src/stellar_nvram.c deleted file mode 100644 index d88ee7b1..00000000 --- a/src/stellar_nvram.c +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ - -#include "stellar_types.h" - -stellar_nv_state_t const N_state_pic; diff --git a/src/stellar_parser.c b/src/stellar_parser.c deleted file mode 100644 index 604ffd43..00000000 --- a/src/stellar_parser.c +++ /dev/null @@ -1,1026 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ - -#include "stellar_api.h" -#include "stellar_types.h" -#include -#include -#include - -/* SHA256("Public Global Stellar Network ; September 2015") */ -static const uint8_t NETWORK_ID_PUBLIC_HASH[32] = { - 0x7a, 0xc3, 0x39, 0x97, 0x54, 0x4e, 0x31, 0x75, 0xd2, 0x66, 0xbd, 0x02, 0x24, 0x39, 0xb2, 0x2c, - 0xdb, 0x16, 0x50, 0x8c, 0x01, 0x16, 0x3f, 0x26, 0xe5, 0xcb, 0x2a, 0x3e, 0x10, 0x45, 0xa9, 0x79}; - -/* SHA256("Test SDF Network ; September 2015") */ -static const uint8_t NETWORK_ID_TEST_HASH[32] = { - 0xce, 0xe0, 0x30, 0x2d, 0x59, 0x84, 0x4d, 0x32, 0xbd, 0xca, 0x91, 0x5c, 0x82, 0x03, 0xdd, 0x44, - 0xb3, 0x3f, 0xbb, 0x7e, 0xdc, 0x19, 0x05, 0x1e, 0xa3, 0x7a, 0xbe, 0xdf, 0x28, 0xec, 0xd4, 0x72}; -uint8_t network_id; - -static bool buffer_can_read(const buffer_t *buffer, size_t num_bytes) { - return buffer->size - buffer->offset >= num_bytes; -} -static void buffer_advance(buffer_t *buffer, size_t num_bytes) { - buffer->offset += num_bytes; -} - -static bool buffer_read32(buffer_t *buffer, uint32_t *n) { - if (!buffer_can_read(buffer, 4)) { - *n = 0; - return false; - } - - const uint8_t *ptr = buffer->ptr + buffer->offset; - *n = ptr[3] + (ptr[2] << 8u) + (ptr[1] << 16u) + ((uint32_t)(ptr[0]) << 24u); - buffer_advance(buffer, 4); - return true; -} - -bool buffer_read64(buffer_t *buffer, uint64_t *n) { - if (buffer->size - buffer->offset < 8) { - *n = 0; - return false; - } - - const uint8_t *ptr = buffer->ptr + buffer->offset; - uint32_t i1 = ptr[3] + (ptr[2] << 8u) + (ptr[1] << 16u) + ((uint32_t)(ptr[0]) << 24u); - uint32_t i2 = ptr[7] + (ptr[6] << 8u) + (ptr[5] << 16u) + ((uint32_t)(ptr[4]) << 24u); - *n = i2 | ((uint64_t) i1 << 32u); - buffer->offset += 8; - return true; -} - -static bool buffer_read_bool(buffer_t *buffer, bool *b) { - uint32_t val; - - if (!buffer_read32(buffer, &val)) { - return false; - } - if (val != 0 && val != 1) { - return false; - } - *b = val == 1 ? true : false; - return true; -} - -static bool buffer_read_bytes(buffer_t *buffer, uint8_t *out, size_t size) { - if (buffer->size - buffer->offset < size) { - return false; - } - memcpy(out, buffer->ptr + buffer->offset, size); - buffer->offset += size; - return true; -} - -static size_t num_bytes(size_t size) { - size_t remainder = size % 4; - if (remainder == 0) { - return size; - } - return size + 4 - remainder; -} - -static bool check_padding(const uint8_t *buffer, size_t offset, size_t length) { - unsigned int i; - for (i = 0; i < length - offset; i++) { - if (buffer[offset + i] != 0x00) { - return false; - } - } - return true; -} - -typedef bool (*xdr_type_parser)(buffer_t *, void *); - -static bool parse_optional_type(buffer_t *buffer, xdr_type_parser parser, void *dst, bool *opted) { - bool isPresent; - - if (!buffer_read_bool(buffer, &isPresent)) { - return false; - } - if (isPresent) { - if (opted) { - *opted = true; - } - return parser(buffer, dst); - } else { - if (opted) { - *opted = false; - } - return true; - } -} - -#define PARSER_CHECK(x) \ - { \ - if (!(x)) return false; \ - } - -static bool parse_signer_key(buffer_t *buffer, SignerKey *key) { - uint32_t signerType; - - PARSER_CHECK(buffer_read32(buffer, &signerType)); - key->type = signerType; - - switch (signerType) { - case SIGNER_KEY_TYPE_ED25519: - case SIGNER_KEY_TYPE_PRE_AUTH_TX: - case SIGNER_KEY_TYPE_HASH_X: - PARSER_CHECK(buffer_can_read(buffer, 32)); - key->data = buffer->ptr + buffer->offset; - buffer_advance(buffer, 32); - return true; - case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD: - PARSER_CHECK(buffer_can_read(buffer, 32)); - key->data = buffer->ptr + buffer->offset; - buffer_advance(buffer, 32); - uint32_t payloadLength; - PARSER_CHECK(buffer_read32(buffer, &payloadLength)); - // valid length [1, 64] - if (payloadLength == 0 || payloadLength > 64) { - return false; - } - payloadLength += (4 - payloadLength % 4) % 4; - PARSER_CHECK(buffer_can_read(buffer, payloadLength)); - buffer_advance(buffer, payloadLength); - return true; - default: - return false; - } -} - -bool parse_account_id(buffer_t *buffer, const uint8_t **account_id) { - uint32_t accountType; - - if (!buffer_read32(buffer, &accountType) || accountType != PUBLIC_KEY_TYPE_ED25519) { - return false; - } - if (!buffer_can_read(buffer, 32)) { - return false; - } - *account_id = buffer->ptr + buffer->offset; - buffer_advance(buffer, 32); - return true; -} - -static bool parse_muxed_account(buffer_t *buffer, MuxedAccount *muxed_account) { - uint32_t cryptoKeyType; - PARSER_CHECK(buffer_read32(buffer, &cryptoKeyType)) - muxed_account->type = cryptoKeyType; - - switch (muxed_account->type) { - case KEY_TYPE_ED25519: - PARSER_CHECK(buffer_can_read(buffer, 32)); - muxed_account->ed25519 = buffer->ptr + buffer->offset; - buffer_advance(buffer, 32); - return true; - case KEY_TYPE_MUXED_ED25519: - PARSER_CHECK(buffer_read64(buffer, &muxed_account->med25519.id)); - PARSER_CHECK(buffer_can_read(buffer, 32)); - muxed_account->med25519.ed25519 = buffer->ptr + buffer->offset; - buffer_advance(buffer, 32); - return true; - default: - return false; - } -} - -static bool parse_network(buffer_t *buffer, uint8_t *network) { - if (!buffer_can_read(buffer, HASH_SIZE)) { - return false; - } - if (memcmp(buffer->ptr, NETWORK_ID_PUBLIC_HASH, HASH_SIZE) == 0) { - network_id = *network = NETWORK_TYPE_PUBLIC; - } else if (memcmp(buffer->ptr, NETWORK_ID_TEST_HASH, HASH_SIZE) == 0) { - network_id = *network = NETWORK_TYPE_TEST; - } else { - network_id = *network = NETWORK_TYPE_UNKNOWN; - } - buffer_advance(buffer, HASH_SIZE); - return true; -} - -static bool parse_time_bounds(buffer_t *buffer, TimeBounds *bounds) { - if (!buffer_read64(buffer, &bounds->minTime)) { - return false; - } - return buffer_read64(buffer, &bounds->maxTime); -} - -static bool parse_ledger_bounds(buffer_t *buffer, LedgerBounds *ledgerBounds) { - PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &ledgerBounds->minLedger)); - PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &ledgerBounds->maxLedger)); - return true; -} - -static bool parse_extra_signers(buffer_t *buffer) { - uint32_t length; - PARSER_CHECK(buffer_read32(buffer, &length)); - if (length > 2) { // maximum length is 2 - return false; - } - - SignerKey signerKey; - for (uint32_t i = 0; i < length; i++) { - PARSER_CHECK(parse_signer_key(buffer, &signerKey)); - } - return true; -} - -static bool parse_preconditions(buffer_t *buffer, Preconditions *cond) { - uint32_t preconditionType; - PARSER_CHECK(buffer_read32(buffer, &preconditionType)); - switch (preconditionType) { - case PRECOND_NONE: - return true; - case PRECOND_TIME: - cond->hasTimeBounds = true; - PARSER_CHECK(parse_time_bounds(buffer, &cond->timeBounds)); - return true; - case PRECOND_V2: - PARSER_CHECK(parse_optional_type(buffer, - (xdr_type_parser) parse_time_bounds, - &cond->timeBounds, - &cond->hasTimeBounds)); - PARSER_CHECK(parse_optional_type(buffer, - (xdr_type_parser) parse_ledger_bounds, - &cond->ledgerBounds, - &cond->hasLedgerBounds)); - PARSER_CHECK(parse_optional_type(buffer, - (xdr_type_parser) buffer_read64, - (uint64_t *) &cond->minSeqNum, - &cond->hasMinSeqNum)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &cond->minSeqAge)); - PARSER_CHECK(buffer_read32(buffer, &cond->minSeqLedgerGap)); - PARSER_CHECK(parse_extra_signers(buffer)); - return true; - default: - return false; - } -} - -/* TODO: max_length does not include terminal null character */ -static bool parse_string_ptr(buffer_t *buffer, - const char **string, - size_t *out_len, - size_t max_length) { - uint32_t size; - - if (!buffer_read32(buffer, &size)) { - return false; - } - if (size > max_length || !buffer_can_read(buffer, num_bytes(size))) { - return false; - } - if (!check_padding(buffer->ptr + buffer->offset, size, - num_bytes(size))) { // security check - return false; - } - *string = (char *) buffer->ptr + buffer->offset; - if (out_len) { - *out_len = size; - } - buffer_advance(buffer, num_bytes(size)); - return true; -} - -static bool parse_memo(buffer_t *buffer, Memo *memo) { - uint32_t type; - - if (!buffer_read32(buffer, &type)) { - return 0; - } - memo->type = type; - switch (memo->type) { - case MEMO_NONE: - return true; - case MEMO_ID: - return buffer_read64(buffer, &memo->id); - case MEMO_TEXT: - return parse_string_ptr(buffer, &memo->text, NULL, MEMO_TEXT_MAX_SIZE); - case MEMO_HASH: - case MEMO_RETURN: - if (buffer->size - buffer->offset < HASH_SIZE) { - return false; - } - memo->hash = buffer->ptr + buffer->offset; - buffer->offset += HASH_SIZE; - return true; - default: - return false; // unknown memo type - } -} - -static bool parse_alpha_num4_asset(buffer_t *buffer, AlphaNum4 *asset) { - PARSER_CHECK(buffer_can_read(buffer, 4)); - asset->assetCode = (const char *) buffer->ptr + buffer->offset; - buffer_advance(buffer, 4); - PARSER_CHECK(parse_account_id(buffer, &asset->issuer)); - return true; -} - -static bool parse_alpha_num12_asset(buffer_t *buffer, AlphaNum12 *asset) { - PARSER_CHECK(buffer_can_read(buffer, 12)); - asset->assetCode = (const char *) buffer->ptr + buffer->offset; - buffer_advance(buffer, 12); - PARSER_CHECK(parse_account_id(buffer, &asset->issuer)); - return true; -} - -static bool parse_asset(buffer_t *buffer, Asset *asset) { - uint32_t assetType; - - PARSER_CHECK(buffer_read32(buffer, &assetType)); - asset->type = assetType; - switch (asset->type) { - case ASSET_TYPE_NATIVE: { - return true; - } - case ASSET_TYPE_CREDIT_ALPHANUM4: { - return parse_alpha_num4_asset(buffer, &asset->alphaNum4); - } - case ASSET_TYPE_CREDIT_ALPHANUM12: { - return parse_alpha_num12_asset(buffer, &asset->alphaNum12); - } - default: - return false; // unknown asset type - } -} - -static bool parse_trust_line_asset(buffer_t *buffer, TrustLineAsset *asset) { - uint32_t assetType; - - PARSER_CHECK(buffer_read32(buffer, &assetType)); - asset->type = assetType; - switch (asset->type) { - case ASSET_TYPE_NATIVE: { - return true; - } - case ASSET_TYPE_CREDIT_ALPHANUM4: { - return parse_alpha_num4_asset(buffer, &asset->alphaNum4); - } - case ASSET_TYPE_CREDIT_ALPHANUM12: { - return parse_alpha_num12_asset(buffer, &asset->alphaNum12); - } - case ASSET_TYPE_POOL_SHARE: { - return buffer_read_bytes(buffer, asset->liquidityPoolID, LIQUIDITY_POOL_ID_SIZE); - } - default: - return false; // unknown asset type - } -} - -static bool parse_liquidity_pool_parameters(buffer_t *buffer, - LiquidityPoolParameters *liquidityPoolParameters) { - uint32_t liquidityPoolType; - PARSER_CHECK(buffer_read32(buffer, &liquidityPoolType)); - switch (liquidityPoolType) { - case LIQUIDITY_POOL_CONSTANT_PRODUCT: { - PARSER_CHECK(parse_asset(buffer, &liquidityPoolParameters->constantProduct.assetA)); - PARSER_CHECK(parse_asset(buffer, &liquidityPoolParameters->constantProduct.assetB)); - PARSER_CHECK( - buffer_read32(buffer, (uint32_t *) &liquidityPoolParameters->constantProduct.fee)); - return true; - } - default: - return false; - } -} - -static bool parse_change_trust_asset(buffer_t *buffer, ChangeTrustAsset *asset) { - uint32_t assetType; - - if (!buffer_read32(buffer, &assetType)) { - return false; - } - asset->type = assetType; - switch (asset->type) { - case ASSET_TYPE_NATIVE: { - return true; - } - case ASSET_TYPE_CREDIT_ALPHANUM4: { - return parse_alpha_num4_asset(buffer, &asset->alphaNum4); - } - case ASSET_TYPE_CREDIT_ALPHANUM12: { - return parse_alpha_num12_asset(buffer, &asset->alphaNum12); - } - case ASSET_TYPE_POOL_SHARE: { - return parse_liquidity_pool_parameters(buffer, &asset->liquidityPool); - } - default: - return false; // unknown asset type - } -} - -static bool parse_create_account(buffer_t *buffer, CreateAccountOp *createAccount) { - if (!parse_account_id(buffer, &createAccount->destination)) { - return false; - } - return buffer_read64(buffer, (uint64_t *) &createAccount->startingBalance); -} - -static bool parse_payment(buffer_t *buffer, PaymentOp *payment) { - if (!parse_muxed_account(buffer, &payment->destination)) { - return false; - } - - if (!parse_asset(buffer, &payment->asset)) { - return false; - } - - return buffer_read64(buffer, (uint64_t *) &payment->amount); -} - -static bool parse_path_payment_strict_receive(buffer_t *buffer, PathPaymentStrictReceiveOp *op) { - uint32_t pathLen; - - PARSER_CHECK(parse_asset(buffer, &op->sendAsset)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->sendMax)); - PARSER_CHECK(parse_muxed_account(buffer, &op->destination)); - PARSER_CHECK(parse_asset(buffer, &op->destAsset)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->destAmount)); - - PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &pathLen)); - op->pathLen = pathLen; - if (op->pathLen > 5) { - return false; - } - for (int i = 0; i < op->pathLen; i++) { - PARSER_CHECK(parse_asset(buffer, &op->path[i])); - } - return true; -} - -static bool parse_allow_trust(buffer_t *buffer, AllowTrustOp *op) { - uint32_t assetType; - - if (!parse_account_id(buffer, &op->trustor)) { - return false; - } - - if (!buffer_read32(buffer, &assetType)) { - return false; - } - - switch (assetType) { - case ASSET_TYPE_CREDIT_ALPHANUM4: { - if (!buffer_read_bytes(buffer, (uint8_t *) op->assetCode, 4)) { - return false; - } - op->assetCode[4] = '\0'; - break; - } - case ASSET_TYPE_CREDIT_ALPHANUM12: { - if (!buffer_read_bytes(buffer, (uint8_t *) op->assetCode, 12)) { - return false; - } - op->assetCode[12] = '\0'; - break; - } - default: - return false; // unknown asset type - } - - return buffer_read32(buffer, &op->authorize); -} - -static bool parse_account_merge(buffer_t *buffer, MuxedAccount *destination) { - return parse_muxed_account(buffer, destination); -} - -static bool parse_manage_data(buffer_t *buffer, ManageDataOp *op) { - size_t size; - - if (!parse_string_ptr(buffer, (const char **) &op->dataName, &size, DATA_NAME_MAX_SIZE)) { - return false; - } - op->dataNameSize = size; - - // DataValue* dataValue; - bool hasValue; - if (!buffer_read_bool(buffer, &hasValue)) { - return false; - } - if (hasValue) { - if (!parse_string_ptr(buffer, (const char **) &op->dataValue, &size, DATA_VALUE_MAX_SIZE)) { - return false; - } - op->dataValueSize = size; - } else { - op->dataValueSize = 0; - } - return true; -} - -static bool parse_price(buffer_t *buffer, Price *price) { - // FIXME: must correctly read int32_t - PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &price->n)); - PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &price->d)); - - // Denominator cannot be null, as it would lead to a division by zero. - return price->d != 0; -} - -static bool parse_manage_sell_offer(buffer_t *buffer, ManageSellOfferOp *op) { - PARSER_CHECK(parse_asset(buffer, &op->selling)); - PARSER_CHECK(parse_asset(buffer, &op->buying)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)); - PARSER_CHECK(parse_price(buffer, &op->price)); - - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->offerID)); - return true; -} - -static bool parse_manage_buy_offer(buffer_t *buffer, ManageBuyOfferOp *op) { - PARSER_CHECK(parse_asset(buffer, &op->selling)); - PARSER_CHECK(parse_asset(buffer, &op->buying)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->buyAmount)); - PARSER_CHECK(parse_price(buffer, &op->price)); - - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->offerID)); - return true; -} - -static bool parse_create_passive_sell_offer(buffer_t *buffer, CreatePassiveSellOfferOp *op) { - PARSER_CHECK(parse_asset(buffer, &op->selling)); - PARSER_CHECK(parse_asset(buffer, &op->buying)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)); - PARSER_CHECK(parse_price(buffer, &op->price)); - return true; -} - -static bool parse_change_trust(buffer_t *buffer, ChangeTrustOp *op) { - if (!parse_change_trust_asset(buffer, &op->line)) { - return false; - } - return buffer_read64(buffer, &op->limit); -} - -static bool parse_signer(buffer_t *buffer, signer_t *signer) { - PARSER_CHECK(parse_signer_key(buffer, &signer->key)); - PARSER_CHECK(buffer_read32(buffer, &signer->weight)); - return true; -} - -static bool parse_set_options(buffer_t *buffer, SetOptionsOp *setOptions) { - if (!parse_optional_type(buffer, - (xdr_type_parser) parse_account_id, - &setOptions->inflationDestination, - &setOptions->inflationDestinationPresent)) { - return false; - } - - if (!parse_optional_type(buffer, - (xdr_type_parser) buffer_read32, - &setOptions->clearFlags, - NULL)) { - return false; - } - if (!parse_optional_type(buffer, - (xdr_type_parser) buffer_read32, - &setOptions->setFlags, - NULL)) { - return false; - } - if (!parse_optional_type(buffer, - (xdr_type_parser) buffer_read32, - &setOptions->masterWeight, - &setOptions->masterWeightPresent)) { - return false; - } - if (!parse_optional_type(buffer, - (xdr_type_parser) buffer_read32, - &setOptions->lowThreshold, - &setOptions->lowThresholdPresent)) { - return false; - } - if (!parse_optional_type(buffer, - (xdr_type_parser) buffer_read32, - &setOptions->mediumThreshold, - &setOptions->mediumThresholdPresent)) { - return false; - } - if (!parse_optional_type(buffer, - (xdr_type_parser) buffer_read32, - &setOptions->highThreshold, - &setOptions->highThresholdPresent)) { - return false; - } - - uint32_t homeDomainPresent; - if (!buffer_read32(buffer, &homeDomainPresent)) { - return false; - } - setOptions->homeDomainPresent = homeDomainPresent ? true : false; - if (setOptions->homeDomainPresent) { - if (!buffer_read32(buffer, &setOptions->homeDomainSize) || - setOptions->homeDomainSize > HOME_DOMAIN_MAX_SIZE) { - return false; - } - if (buffer->size - buffer->offset < num_bytes(setOptions->homeDomainSize)) { - return false; - } - setOptions->homeDomain = buffer->ptr + buffer->offset; - if (!check_padding(setOptions->homeDomain, - setOptions->homeDomainSize, - num_bytes(setOptions->homeDomainSize))) { // security check - return false; - } - buffer->offset += num_bytes(setOptions->homeDomainSize); - } else { - setOptions->homeDomainSize = 0; - } - - return parse_optional_type(buffer, - (xdr_type_parser) parse_signer, - &setOptions->signer, - &setOptions->signerPresent); -} - -static bool parse_bump_sequence(buffer_t *buffer, BumpSequenceOp *op) { - return buffer_read64(buffer, (uint64_t *) &op->bumpTo); -} - -static bool parse_path_payment_strict_send(buffer_t *buffer, PathPaymentStrictSendOp *op) { - uint32_t pathLen; - - PARSER_CHECK(parse_asset(buffer, &op->sendAsset)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->sendAmount)); - PARSER_CHECK(parse_muxed_account(buffer, &op->destination)); - PARSER_CHECK(parse_asset(buffer, &op->destAsset)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->destMin)); - PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &pathLen)); - op->pathLen = pathLen; - if (op->pathLen > 5) { - return false; - } - for (int i = 0; i < op->pathLen; i++) { - PARSER_CHECK(parse_asset(buffer, &op->path[i])); - } - return true; -} - -static bool parse_claimant_predicate(buffer_t *buffer) { - // Currently, does not support displaying claimant details. - // So here we will not store the parsed data, just to ensure that the data can be parsed - // correctly. - uint32_t claimPredicateType; - uint32_t predicatesLen; - bool notPredicatePresent; - int64_t absBefore; - int64_t relBefore; - PARSER_CHECK(buffer_read32(buffer, &claimPredicateType)); - switch (claimPredicateType) { - case CLAIM_PREDICATE_UNCONDITIONAL: - return true; - case CLAIM_PREDICATE_AND: - case CLAIM_PREDICATE_OR: - PARSER_CHECK(buffer_read32(buffer, &predicatesLen)); - if (predicatesLen != 2) { - return false; - } - PARSER_CHECK(parse_claimant_predicate(buffer)); - PARSER_CHECK(parse_claimant_predicate(buffer)); - return true; - case CLAIM_PREDICATE_NOT: - PARSER_CHECK(buffer_read_bool(buffer, ¬PredicatePresent)); - if (notPredicatePresent) { - PARSER_CHECK(parse_claimant_predicate(buffer)); - } - return true; - case CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME: - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &absBefore)); - return true; - case CLAIM_PREDICATE_BEFORE_RELATIVE_TIME: - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &relBefore)); - return true; - default: - return false; - } -} - -static bool parse_claimant(buffer_t *buffer, Claimant *claimant) { - uint32_t claimantType; - PARSER_CHECK(buffer_read32(buffer, &claimantType)); - claimant->type = claimantType; - - switch (claimant->type) { - case CLAIMANT_TYPE_V0: - PARSER_CHECK(parse_account_id(buffer, &claimant->v0.destination)); - PARSER_CHECK(parse_claimant_predicate(buffer)); - return true; - default: - return false; - } -} - -static bool parse_create_claimable_balance(buffer_t *buffer, CreateClaimableBalanceOp *op) { - uint32_t claimantLen; - PARSER_CHECK(parse_asset(buffer, &op->asset)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)); - PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &claimantLen)); - if (claimantLen > 10) { - return false; - } - op->claimantLen = claimantLen; - for (int i = 0; i < op->claimantLen; i++) { - PARSER_CHECK(parse_claimant(buffer, &op->claimants[i])); - } - return true; -} -static bool parse_claimable_balance_id(buffer_t *buffer, ClaimableBalanceID *claimableBalanceID) { - uint32_t claimableBalanceIDType; - PARSER_CHECK(buffer_read32(buffer, &claimableBalanceIDType)); - claimableBalanceID->type = claimableBalanceIDType; - - switch (claimableBalanceID->type) { - case CLAIMABLE_BALANCE_ID_TYPE_V0: - PARSER_CHECK(buffer_read_bytes(buffer, claimableBalanceID->v0, 32)); - return true; - default: - return false; - } -} - -static bool parse_claim_claimable_balance(buffer_t *buffer, ClaimClaimableBalanceOp *op) { - PARSER_CHECK(parse_claimable_balance_id(buffer, &op->balanceID)); - return true; -} - -static bool parse_begin_sponsoring_future_reserves(buffer_t *buffer, - BeginSponsoringFutureReservesOp *op) { - PARSER_CHECK(parse_account_id(buffer, &op->sponsoredID)); - return true; -} - -static bool parse_ledger_key(buffer_t *buffer, LedgerKey *ledgerKey) { - uint32_t ledgerEntryType; - PARSER_CHECK(buffer_read32(buffer, &ledgerEntryType)); - ledgerKey->type = ledgerEntryType; - switch (ledgerKey->type) { - case ACCOUNT: - PARSER_CHECK(parse_account_id(buffer, &ledgerKey->account.accountID)); - return true; - case TRUSTLINE: - PARSER_CHECK(parse_account_id(buffer, &ledgerKey->trustLine.accountID)); - PARSER_CHECK(parse_trust_line_asset(buffer, &ledgerKey->trustLine.asset)); - return true; - case OFFER: - PARSER_CHECK(parse_account_id(buffer, &ledgerKey->offer.sellerID)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &ledgerKey->offer.offerID)); - return true; - case DATA: - PARSER_CHECK(parse_account_id(buffer, &ledgerKey->data.accountID)); - PARSER_CHECK(parse_string_ptr(buffer, - (const char **) &ledgerKey->data.dataName, - (size_t *) &ledgerKey->data.dataNameSize, - DATA_VALUE_MAX_SIZE)); - return true; - case CLAIMABLE_BALANCE: - PARSER_CHECK( - parse_claimable_balance_id(buffer, &ledgerKey->claimableBalance.balanceId)); - return true; - case LIQUIDITY_POOL: - PARSER_CHECK(buffer_read_bytes(buffer, - ledgerKey->liquidityPool.liquidityPoolID, - LIQUIDITY_POOL_ID_SIZE)); - return true; - default: - return false; - } -} - -static bool parse_revoke_sponsorship(buffer_t *buffer, RevokeSponsorshipOp *op) { - uint32_t revokeSponsorshipType; - PARSER_CHECK(buffer_read32(buffer, &revokeSponsorshipType)) - op->type = revokeSponsorshipType; - - switch (op->type) { - case REVOKE_SPONSORSHIP_LEDGER_ENTRY: - PARSER_CHECK(parse_ledger_key(buffer, &op->ledgerKey)); - return true; - case REVOKE_SPONSORSHIP_SIGNER: - PARSER_CHECK(parse_account_id(buffer, &op->signer.accountID)); - PARSER_CHECK(parse_signer_key(buffer, &op->signer.signerKey)); - return true; - default: - return false; - } -} - -static bool parse_clawback(buffer_t *buffer, ClawbackOp *op) { - PARSER_CHECK(parse_asset(buffer, &op->asset)); - PARSER_CHECK(parse_muxed_account(buffer, &op->from)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)); - return true; -} - -static bool parse_clawback_claimable_balance(buffer_t *buffer, ClawbackClaimableBalanceOp *op) { - PARSER_CHECK(parse_claimable_balance_id(buffer, &op->balanceID)); - return true; -} - -static bool parse_set_trust_line_flags(buffer_t *buffer, SetTrustLineFlagsOp *op) { - PARSER_CHECK(parse_account_id(buffer, &op->trustor)); - PARSER_CHECK(parse_asset(buffer, &op->asset)); - PARSER_CHECK(buffer_read32(buffer, &op->clearFlags)); - PARSER_CHECK(buffer_read32(buffer, &op->setFlags)); - return true; -} - -static bool parse_liquidity_pool_deposit(buffer_t *buffer, LiquidityPoolDepositOp *op) { - PARSER_CHECK(buffer_read_bytes(buffer, op->liquidityPoolID, LIQUIDITY_POOL_ID_SIZE)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->maxAmountA)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->maxAmountB)); - PARSER_CHECK(parse_price(buffer, &op->minPrice)); - PARSER_CHECK(parse_price(buffer, &op->maxPrice)); - return true; -} - -static bool parse_liquidity_pool_withdraw(buffer_t *buffer, LiquidityPoolWithdrawOp *op) { - PARSER_CHECK(buffer_read_bytes(buffer, op->liquidityPoolID, LIQUIDITY_POOL_ID_SIZE)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->minAmountA)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->minAmountB)); - return true; -} - -static bool parse_operation(buffer_t *buffer, Operation *opDetails) { - MEMCLEAR(*opDetails); - uint32_t opType; - - if (!parse_optional_type(buffer, - (xdr_type_parser) parse_muxed_account, - &opDetails->sourceAccount, - &opDetails->sourceAccountPresent)) { - return false; - } - - if (!buffer_read32(buffer, &opType)) { - return false; - } - opDetails->type = opType; - switch (opDetails->type) { - case XDR_OPERATION_TYPE_CREATE_ACCOUNT: { - return parse_create_account(buffer, &opDetails->createAccount); - } - case XDR_OPERATION_TYPE_PAYMENT: { - return parse_payment(buffer, &opDetails->payment); - } - case XDR_OPERATION_TYPE_PATH_PAYMENT_STRICT_RECEIVE: { - return parse_path_payment_strict_receive(buffer, - &opDetails->pathPaymentStrictReceiveOp); - } - case XDR_OPERATION_TYPE_CREATE_PASSIVE_SELL_OFFER: { - return parse_create_passive_sell_offer(buffer, &opDetails->createPassiveSellOfferOp); - } - case XDR_OPERATION_TYPE_MANAGE_SELL_OFFER: { - return parse_manage_sell_offer(buffer, &opDetails->manageSellOfferOp); - } - case XDR_OPERATION_TYPE_SET_OPTIONS: { - return parse_set_options(buffer, &opDetails->setOptionsOp); - } - case XDR_OPERATION_TYPE_CHANGE_TRUST: { - return parse_change_trust(buffer, &opDetails->changeTrustOp); - } - case XDR_OPERATION_TYPE_ALLOW_TRUST: { - return parse_allow_trust(buffer, &opDetails->allowTrustOp); - } - case XDR_OPERATION_TYPE_ACCOUNT_MERGE: { - return parse_account_merge(buffer, &opDetails->destination); - } - case XDR_OPERATION_TYPE_INFLATION: { - return true; - } - case XDR_OPERATION_TYPE_MANAGE_DATA: { - return parse_manage_data(buffer, &opDetails->manageDataOp); - } - case XDR_OPERATION_TYPE_BUMP_SEQUENCE: { - return parse_bump_sequence(buffer, &opDetails->bumpSequenceOp); - } - case XDR_OPERATION_TYPE_MANAGE_BUY_OFFER: { - return parse_manage_buy_offer(buffer, &opDetails->manageBuyOfferOp); - } - case XDR_OPERATION_TYPE_PATH_PAYMENT_STRICT_SEND: { - return parse_path_payment_strict_send(buffer, &opDetails->pathPaymentStrictSendOp); - } - case XDR_OPERATION_TYPE_CREATE_CLAIMABLE_BALANCE: { - return parse_create_claimable_balance(buffer, &opDetails->createClaimableBalanceOp); - } - case XDR_OPERATION_TYPE_CLAIM_CLAIMABLE_BALANCE: { - return parse_claim_claimable_balance(buffer, &opDetails->claimClaimableBalanceOp); - } - case XDR_OPERATION_TYPE_BEGIN_SPONSORING_FUTURE_RESERVES: { - return parse_begin_sponsoring_future_reserves( - buffer, - &opDetails->beginSponsoringFutureReservesOp); - } - case XDR_OPERATION_TYPE_END_SPONSORING_FUTURE_RESERVES: { - return true; - } - case XDR_OPERATION_TYPE_REVOKE_SPONSORSHIP: { - return parse_revoke_sponsorship(buffer, &opDetails->revokeSponsorshipOp); - } - case XDR_OPERATION_TYPE_CLAWBACK: { - return parse_clawback(buffer, &opDetails->clawbackOp); - } - case XDR_OPERATION_TYPE_CLAWBACK_CLAIMABLE_BALANCE: { - return parse_clawback_claimable_balance(buffer, &opDetails->clawbackClaimableBalanceOp); - } - case XDR_OPERATION_TYPE_SET_TRUST_LINE_FLAGS: { - return parse_set_trust_line_flags(buffer, &opDetails->setTrustLineFlagsOp); - } - case XDR_OPERATION_TYPE_LIQUIDITY_POOL_DEPOSIT: - return parse_liquidity_pool_deposit(buffer, &opDetails->liquidityPoolDepositOp); - case XDR_OPERATION_TYPE_LIQUIDITY_POOL_WITHDRAW: - return parse_liquidity_pool_withdraw(buffer, &opDetails->liquidityPoolWithdrawOp); - default: - return false; // Unknown operation - } -} - -static bool parse_tx_details(buffer_t *buffer, TransactionDetails *transaction) { - // account used to run the (inner)transaction - PARSER_CHECK(parse_muxed_account(buffer, &transaction->sourceAccount)); - - // the fee the sourceAccount will pay - PARSER_CHECK(buffer_read32(buffer, &transaction->fee)); - - // sequence number to consume in the account - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &transaction->sequenceNumber)); - - // validity conditions - PARSER_CHECK(parse_preconditions(buffer, &transaction->cond)); - - PARSER_CHECK(parse_memo(buffer, &transaction->memo)); - uint32_t opCount; - PARSER_CHECK(buffer_read32(buffer, &opCount)); - transaction->opCount = opCount; - if (transaction->opCount > MAX_OPS) { - return false; - } - transaction->opIdx = 0; - return true; -} - -static bool parse_fee_bump_tx_details(buffer_t *buffer, - FeeBumpTransactionDetails *feeBumpTransaction) { - PARSER_CHECK(parse_muxed_account(buffer, &feeBumpTransaction->feeSource)); - PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &feeBumpTransaction->fee)); - return true; -} - -bool parse_tx_xdr(const uint8_t *data, size_t size, tx_context_t *txCtx) { - buffer_t buffer = {data, size, 0}; - uint32_t envelopeType; - - uint16_t offset = txCtx->offset; - buffer.offset = txCtx->offset; - - if (offset == 0) { - MEMCLEAR(txCtx->txDetails); - MEMCLEAR(txCtx->feeBumpTxDetails); - PARSER_CHECK(parse_network(&buffer, &txCtx->network)); - PARSER_CHECK(buffer_read32(&buffer, &envelopeType)); - txCtx->envelopeType = envelopeType; - switch (envelopeType) { - case ENVELOPE_TYPE_TX: - PARSER_CHECK(parse_tx_details(&buffer, &txCtx->txDetails)); - break; - case ENVELOPE_TYPE_TX_FEE_BUMP: - PARSER_CHECK(parse_fee_bump_tx_details(&buffer, &txCtx->feeBumpTxDetails)); - uint32_t innerEnvelopeType; - PARSER_CHECK(buffer_read32(&buffer, &innerEnvelopeType)); - if (innerEnvelopeType != ENVELOPE_TYPE_TX) { - return false; - } - PARSER_CHECK(parse_tx_details(&buffer, &txCtx->txDetails)); - break; - default: - return false; - } - } - - if (!parse_operation(&buffer, &txCtx->txDetails.opDetails)) { - return false; - } - offset = buffer.offset; - txCtx->txDetails.opIdx += 1; - txCtx->offset = offset; - return true; -} diff --git a/src/stellar_ram.c b/src/stellar_ram.c deleted file mode 100644 index 31f95b19..00000000 --- a/src/stellar_ram.c +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ - -#include "stellar_types.h" -#include "ux.h" - -stellar_context_t ctx; -ux_state_t ux; -unsigned char G_io_seproxyhal_spi_buffer[IO_SEPROXYHAL_BUFFER_SIZE_B]; -bool called_from_swap; -swap_values_t swap_values; - -void reset_ctx() { - explicit_bzero(&ctx, sizeof(ctx)); - if (!called_from_swap) { - explicit_bzero(&swap_values, sizeof(swap_values)); - } -} diff --git a/src/stellar_types.h b/src/stellar_types.h deleted file mode 100644 index 16d620cc..00000000 --- a/src/stellar_types.h +++ /dev/null @@ -1,669 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ -#ifndef _STELLAR_TYPES_H_ -#define _STELLAR_TYPES_H_ - -#include -#include - -// ------------------------------------------------------------------------- // -// REQUEST PARSING CONSTANTS // -// ------------------------------------------------------------------------- // - -#define CLA 0xe0 -#define INS_GET_PUBLIC_KEY 0x02 -#define INS_SIGN_TX 0x04 -#define INS_GET_APP_CONFIGURATION 0x06 -#define INS_SIGN_TX_HASH 0x08 -#define INS_KEEP_ALIVE 0x10 -#define P1_NO_SIGNATURE 0x00 -#define P1_SIGNATURE 0x01 -#define P2_NO_CONFIRM 0x00 -#define P2_CONFIRM 0x01 -#define P1_FIRST 0x00 -#define P1_MORE 0x80 -#define P2_LAST 0x00 -#define P2_MORE 0x80 - -#define MIN_APDU_SIZE 5 - -#define OFFSET_CLA 0 -#define OFFSET_INS 1 -#define OFFSET_P1 2 -#define OFFSET_P2 3 -#define OFFSET_LC 4 -#define OFFSET_CDATA 5 - -/* Max transaction size */ -#define MAX_RAW_TX 1120 -/* For sure not more than 35 operations will fit in that */ -#define MAX_OPS 35 -/* Although SEP-0005 only allows 3 bip32 path elements we support more */ -#define MAX_BIP32_LEN 10 - -/* max amount is max int64 scaled down: "922337203685.4775807" */ -#define AMOUNT_MAX_SIZE 21 - -#define HASH_SIZE 32 -#define LIQUIDITY_POOL_ID_SIZE 32 -#define ED25519_PUBLIC_KEY_LEN 32 -#define ED25519_PUBLIC_STRKEY_LEN 56 -#define MUXED_ACCOUNT_STRKEY_LEN 69 - -// ------------------------------------------------------------------------- // -// TRANSACTION PARSING CONSTANTS // -// ------------------------------------------------------------------------- // - -typedef enum { - ASSET_TYPE_NATIVE = 0, - ASSET_TYPE_CREDIT_ALPHANUM4 = 1, - ASSET_TYPE_CREDIT_ALPHANUM12 = 2, - ASSET_TYPE_POOL_SHARE = 3, -} AssetType; - -typedef enum { - MEMO_NONE = 0, - MEMO_TEXT = 1, - MEMO_ID = 2, - MEMO_HASH = 3, - MEMO_RETURN = 4, -} MemoType; - -typedef enum { - ENVELOPE_TYPE_TX = 2, - ENVELOPE_TYPE_TX_FEE_BUMP = 5, -} EnvelopeType; - -#define NETWORK_TYPE_PUBLIC 0 -#define NETWORK_TYPE_TEST 1 -#define NETWORK_TYPE_UNKNOWN 2 - -typedef enum { - XDR_OPERATION_TYPE_CREATE_ACCOUNT = 0, - XDR_OPERATION_TYPE_PAYMENT = 1, - XDR_OPERATION_TYPE_PATH_PAYMENT_STRICT_RECEIVE = 2, - XDR_OPERATION_TYPE_MANAGE_SELL_OFFER = 3, - XDR_OPERATION_TYPE_CREATE_PASSIVE_SELL_OFFER = 4, - XDR_OPERATION_TYPE_SET_OPTIONS = 5, - XDR_OPERATION_TYPE_CHANGE_TRUST = 6, - XDR_OPERATION_TYPE_ALLOW_TRUST = 7, - XDR_OPERATION_TYPE_ACCOUNT_MERGE = 8, - XDR_OPERATION_TYPE_INFLATION = 9, - XDR_OPERATION_TYPE_MANAGE_DATA = 10, - XDR_OPERATION_TYPE_BUMP_SEQUENCE = 11, - XDR_OPERATION_TYPE_MANAGE_BUY_OFFER = 12, - XDR_OPERATION_TYPE_PATH_PAYMENT_STRICT_SEND = 13, - XDR_OPERATION_TYPE_CREATE_CLAIMABLE_BALANCE = 14, - XDR_OPERATION_TYPE_CLAIM_CLAIMABLE_BALANCE = 15, - XDR_OPERATION_TYPE_BEGIN_SPONSORING_FUTURE_RESERVES = 16, - XDR_OPERATION_TYPE_END_SPONSORING_FUTURE_RESERVES = 17, - XDR_OPERATION_TYPE_REVOKE_SPONSORSHIP = 18, - XDR_OPERATION_TYPE_CLAWBACK = 19, - XDR_OPERATION_TYPE_CLAWBACK_CLAIMABLE_BALANCE = 20, - XDR_OPERATION_TYPE_SET_TRUST_LINE_FLAGS = 21, - XDR_OPERATION_TYPE_LIQUIDITY_POOL_DEPOSIT = 22, - XDR_OPERATION_TYPE_LIQUIDITY_POOL_WITHDRAW = 23, -} xdr_operation_type_e; - -#define PUBLIC_KEY_TYPE_ED25519 0 -#define MEMO_TEXT_MAX_SIZE 28 -#define DATA_NAME_MAX_SIZE 64 -#define DATA_VALUE_MAX_SIZE 64 -#define HOME_DOMAIN_MAX_SIZE 32 - -// ------------------------------------------------------------------------- // -// DISPLAY CONSTANTS // -// ------------------------------------------------------------------------- // - -/* - * Longest string will be "Operation ii of nn" - */ -#define OPERATION_CAPTION_MAX_SIZE 20 - -/* - * Captions don't scroll so there is no use in having more capacity than can fit on screen at once. - */ -#define DETAIL_CAPTION_MAX_SIZE 20 - -/* - * DETAIL_VALUE_MAX_SIZE value of 89 is due to the maximum length of managed data value which can be - * 64 bytes long. Managed data values are displayed as base64 encoded strings, which are - * 4*((len+2)/3) characters long. (An additional slot is required for the end-of-string character of - * course) - */ -#define DETAIL_VALUE_MAX_SIZE 89 - -static const char *NETWORK_NAMES[3] = {"Public", "Testnet", "Unknown"}; - -// ------------------------------------------------------------------------- // -// UTILITIES // -// ------------------------------------------------------------------------- // - -#ifdef TEST -#include -#include - -#define THROW(code) \ - do { \ - printf("error: %d", code); \ - } while (0) - -#ifdef FUZZ -#define PRINTF(...) -#else -#define PRINTF(strbuf, ...) fprintf(stderr, strbuf, __VA_ARGS__) -#endif // FUZZ -#define PIC(code) code - -#define MEMCLEAR(dest) memset(&dest, 0, sizeof(dest)); -#else -#define MEMCLEAR(dest) \ - do { \ - explicit_bzero(&dest, sizeof(dest)); \ - } while (0) -#include "bolos_target.h" -#endif // TEST - -// ------------------------------------------------------------------------- // -// TYPE DEFINITIONS // -// ------------------------------------------------------------------------- // - -typedef const uint8_t *AccountID; -typedef int64_t SequenceNumber; -typedef uint64_t TimePoint; -typedef int64_t Duration; - -typedef enum { - KEY_TYPE_ED25519 = 0, - KEY_TYPE_PRE_AUTH_TX = 1, - KEY_TYPE_HASH_X = 2, - KEY_TYPE_ED25519_SIGNED_PAYLOAD = 3, - KEY_TYPE_MUXED_ED25519 = 0x100 -} CryptoKeyType; - -typedef enum { - SIGNER_KEY_TYPE_ED25519 = KEY_TYPE_ED25519, - SIGNER_KEY_TYPE_PRE_AUTH_TX = KEY_TYPE_PRE_AUTH_TX, - SIGNER_KEY_TYPE_HASH_X = KEY_TYPE_HASH_X, - SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD = KEY_TYPE_ED25519_SIGNED_PAYLOAD -} SignerKeyType; - -typedef enum { - // issuer has authorized account to perform transactions with its credit - AUTHORIZED_FLAG = 1, - // issuer has authorized account to maintain and reduce liabilities for its - // credit - AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG = 2, - // issuer has specified that it may clawback its credit, and that claimable - // balances created with its credit may also be clawed back - TRUSTLINE_CLAWBACK_ENABLED_FLAG = 4 -} TrustLineFlags; - -typedef struct { - uint64_t id; - const uint8_t *ed25519; -} MuxedAccountMed25519; - -typedef struct { - CryptoKeyType type; - union { - const uint8_t *ed25519; - MuxedAccountMed25519 med25519; - }; -} MuxedAccount; - -typedef struct { - const char *assetCode; - AccountID issuer; -} AlphaNum4; - -typedef struct { - const char *assetCode; - AccountID issuer; -} AlphaNum12; - -typedef struct { - AssetType type; - union { - AlphaNum4 alphaNum4; - AlphaNum12 alphaNum12; - }; -} Asset; - -typedef enum { LIQUIDITY_POOL_CONSTANT_PRODUCT = 0 } LiquidityPoolType; - -typedef struct { - Asset assetA; - Asset assetB; - int32_t fee; // Fee is in basis points, so the actual rate is (fee/100)% -} LiquidityPoolConstantProductParameters; - -typedef struct { - LiquidityPoolType type; - union { - LiquidityPoolConstantProductParameters - constantProduct; // type == LIQUIDITY_POOL_CONSTANT_PRODUCT - }; -} LiquidityPoolParameters; - -typedef struct { - AssetType type; - union { - AlphaNum4 alphaNum4; - AlphaNum12 alphaNum12; - LiquidityPoolParameters liquidityPool; - }; -} ChangeTrustAsset; - -typedef struct { - AssetType type; - union { - AlphaNum4 alphaNum4; - AlphaNum12 alphaNum12; - uint8_t liquidityPoolID[LIQUIDITY_POOL_ID_SIZE]; - }; -} TrustLineAsset; - -typedef struct { - int32_t n; // numerator - int32_t d; // denominator -} Price; - -typedef struct { - AccountID destination; // account to create - int64_t startingBalance; // amount they end up with -} CreateAccountOp; - -typedef struct { - MuxedAccount destination; // recipient of the payment - Asset asset; // what they end up with - int64_t amount; // amount they end up with -} PaymentOp; - -typedef struct { - MuxedAccount destination; // recipient of the payment - int64_t sendMax; // the maximum amount of sendAsset to send (excluding fees). - // The operation will fail if can't be met - int64_t destAmount; // amount they end up with - Asset sendAsset; // asset we pay with - Asset destAsset; // what they end up with - Asset path[5]; // additional hops it must go through to get there - uint8_t pathLen; -} PathPaymentStrictReceiveOp; - -typedef struct { - Asset selling; // A - Asset buying; // B - int64_t amount; // amount taker gets - Price price; // cost of A in terms of B -} CreatePassiveSellOfferOp; - -typedef struct { - Asset selling; - Asset buying; - int64_t amount; // amount being sold. if set to 0, delete the offer - Price price; // price of thing being sold in terms of what you are buying - - // 0=create a new offer, otherwise edit an existing offer - int64_t offerID; -} ManageSellOfferOp; - -typedef struct { - Asset selling; - Asset buying; - int64_t buyAmount; // amount being bought. if set to 0, delete the offer - Price price; // price of thing being bought in terms of what you are - // selling - - // 0=create a new offer, otherwise edit an existing offer - int64_t offerID; -} ManageBuyOfferOp; - -typedef struct { - MuxedAccount destination; // recipient of the payment - int64_t sendAmount; // amount of sendAsset to send (excluding fees) - // The operation will fail if can't be met - int64_t destMin; // the minimum amount of dest asset to - // be received - // The operation will fail if it can't be met - Asset sendAsset; // asset we pay with - Asset destAsset; // what they end up with - Asset path[5]; // additional hops it must go through to get there - uint8_t pathLen; -} PathPaymentStrictSendOp; - -typedef struct { - ChangeTrustAsset line; - - uint64_t limit; // if limit is set to 0, deletes the trust line -} ChangeTrustOp; - -typedef struct { - AccountID trustor; - char assetCode[13]; - // One of 0, AUTHORIZED_FLAG, or AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG. - uint32_t authorize; -} AllowTrustOp; - -typedef MuxedAccount AccountMergeOp; - -typedef struct { - SequenceNumber bumpTo; -} BumpSequenceOp; - -typedef struct { - SignerKeyType type; - const uint8_t *data; -} SignerKey; - -typedef struct { - SignerKey key; - uint32_t weight; // really only need 1 byte -} signer_t; - -typedef struct { - bool inflationDestinationPresent; - AccountID inflationDestination; - uint32_t clearFlags; - uint32_t setFlags; - bool masterWeightPresent; - uint32_t masterWeight; - bool lowThresholdPresent; - uint32_t lowThreshold; - bool mediumThresholdPresent; - uint32_t mediumThreshold; - bool highThresholdPresent; - uint32_t highThreshold; - bool homeDomainPresent; - uint32_t homeDomainSize; - const uint8_t *homeDomain; - bool signerPresent; - signer_t signer; -} SetOptionsOp; - -typedef struct { - uint8_t dataNameSize; - const uint8_t *dataName; - uint8_t dataValueSize; - const uint8_t *dataValue; -} ManageDataOp; - -typedef enum { - CLAIM_PREDICATE_UNCONDITIONAL = 0, - CLAIM_PREDICATE_AND = 1, - CLAIM_PREDICATE_OR = 2, - CLAIM_PREDICATE_NOT = 3, - CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME = 4, - CLAIM_PREDICATE_BEFORE_RELATIVE_TIME = 5 -} ClaimPredicateType; - -typedef enum { - CLAIMANT_TYPE_V0 = 0, -} ClaimantType; - -typedef struct { - ClaimantType type; - union { - struct { - AccountID destination; // The account that can use this condition - } v0; - }; - -} Claimant; - -typedef struct { - Asset asset; - int64_t amount; - uint8_t claimantLen; - Claimant claimants[10]; -} CreateClaimableBalanceOp; - -typedef enum { - CLAIMABLE_BALANCE_ID_TYPE_V0 = 0, -} ClaimableBalanceIDType; - -typedef struct { - ClaimableBalanceIDType type; - uint8_t v0[32]; -} ClaimableBalanceID; - -typedef struct { - ClaimableBalanceID balanceID; -} ClaimClaimableBalanceOp; - -typedef struct { - AccountID sponsoredID; -} BeginSponsoringFutureReservesOp; - -typedef enum { - ACCOUNT = 0, - TRUSTLINE = 1, - OFFER = 2, - DATA = 3, - CLAIMABLE_BALANCE = 4, - LIQUIDITY_POOL = 5 -} LedgerEntryType; - -typedef struct { - LedgerEntryType type; - union { - struct { - AccountID accountID; - } account; // type == ACCOUNT - - struct { - AccountID accountID; - TrustLineAsset asset; - } trustLine; // type == TRUSTLINE - - struct { - AccountID sellerID; - int64_t offerID; - } offer; // type == OFFER - - struct { - AccountID accountID; - uint8_t dataNameSize; - const uint8_t *dataName; - } data; // type == DATA - - struct { - ClaimableBalanceID balanceId; - } claimableBalance; // type == CLAIMABLE_BALANCE - - struct { - uint8_t liquidityPoolID[LIQUIDITY_POOL_ID_SIZE]; - } liquidityPool; // type == LIQUIDITY_POOL - }; - -} LedgerKey; - -typedef enum { - REVOKE_SPONSORSHIP_LEDGER_ENTRY = 0, - REVOKE_SPONSORSHIP_SIGNER = 1 -} RevokeSponsorshipType; - -typedef struct { - RevokeSponsorshipType type; - union { - LedgerKey ledgerKey; - struct { - AccountID accountID; - SignerKey signerKey; - } signer; - }; - -} RevokeSponsorshipOp; - -typedef struct { - Asset asset; - MuxedAccount from; - int64_t amount; -} ClawbackOp; - -typedef struct { - ClaimableBalanceID balanceID; -} ClawbackClaimableBalanceOp; - -typedef struct { - AccountID trustor; - Asset asset; - uint32_t clearFlags; // which flags to clear - uint32_t setFlags; // which flags to set -} SetTrustLineFlagsOp; - -typedef struct { - uint8_t liquidityPoolID[LIQUIDITY_POOL_ID_SIZE]; - int64_t maxAmountA; // maximum amount of first asset to deposit - int64_t maxAmountB; // maximum amount of second asset to deposit - Price minPrice; // minimum depositA/depositB - Price maxPrice; // maximum depositA/depositB -} LiquidityPoolDepositOp; - -typedef struct { - uint8_t liquidityPoolID[LIQUIDITY_POOL_ID_SIZE]; - int64_t amount; // amount of pool shares to withdraw - int64_t minAmountA; // minimum amount of first asset to withdraw - int64_t minAmountB; // minimum amount of second asset to withdraw -} LiquidityPoolWithdrawOp; - -typedef struct { - MuxedAccount sourceAccount; - uint8_t type; - bool sourceAccountPresent; - union { - CreateAccountOp createAccount; - PaymentOp payment; - PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp; - ManageSellOfferOp manageSellOfferOp; - CreatePassiveSellOfferOp createPassiveSellOfferOp; - SetOptionsOp setOptionsOp; - ChangeTrustOp changeTrustOp; - AllowTrustOp allowTrustOp; - MuxedAccount destination; - ManageDataOp manageDataOp; - BumpSequenceOp bumpSequenceOp; - ManageBuyOfferOp manageBuyOfferOp; - PathPaymentStrictSendOp pathPaymentStrictSendOp; - CreateClaimableBalanceOp createClaimableBalanceOp; - ClaimClaimableBalanceOp claimClaimableBalanceOp; - BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp; - RevokeSponsorshipOp revokeSponsorshipOp; - ClawbackOp clawbackOp; - ClawbackClaimableBalanceOp clawbackClaimableBalanceOp; - SetTrustLineFlagsOp setTrustLineFlagsOp; - LiquidityPoolDepositOp liquidityPoolDepositOp; - LiquidityPoolWithdrawOp liquidityPoolWithdrawOp; - }; -} Operation; - -typedef struct { - MemoType type; - union { - uint64_t id; - const char *text; - const uint8_t *hash; - }; -} Memo; - -typedef struct { - TimePoint minTime; - TimePoint maxTime; // 0 here means no maxTime -} TimeBounds; - -typedef struct { - uint32_t minLedger; - uint32_t maxLedger; -} LedgerBounds; - -typedef enum { PRECOND_NONE = 0, PRECOND_TIME = 1, PRECOND_V2 = 2 } PreconditionType; -typedef struct { - TimeBounds timeBounds; - LedgerBounds ledgerBounds; - SequenceNumber minSeqNum; - Duration minSeqAge; - uint32_t minSeqLedgerGap; - bool hasTimeBounds; - bool hasLedgerBounds; - bool hasMinSeqNum; -} Preconditions; - -typedef struct { - MuxedAccount sourceAccount; // account used to run the transaction - SequenceNumber sequenceNumber; // sequence number to consume in the account - Preconditions cond; // validity conditions - Memo memo; - Operation opDetails; - uint32_t fee; // the fee the sourceAccount will pay - uint8_t opCount; - uint8_t opIdx; -} TransactionDetails; - -typedef struct { - MuxedAccount feeSource; - int64_t fee; -} FeeBumpTransactionDetails; - -typedef struct { - uint8_t publicKey[ED25519_PUBLIC_KEY_LEN]; - uint8_t signature[64]; - bool returnSignature; - uint32_t tx; -} pk_context_t; - -typedef struct { - uint32_t bip32[MAX_BIP32_LEN]; - uint8_t publicKey[ED25519_PUBLIC_KEY_LEN]; - uint8_t raw[MAX_RAW_TX]; - uint32_t rawLength; - uint32_t tx; - uint16_t offset; - uint8_t hash[HASH_SIZE]; - uint8_t network; - uint8_t bip32Len; - EnvelopeType envelopeType; - FeeBumpTransactionDetails feeBumpTxDetails; - TransactionDetails txDetails; -} tx_context_t; - -enum request_type_t { CONFIRM_ADDRESS, CONFIRM_TRANSACTION }; - -enum app_state_t { STATE_NONE, STATE_PARSE_TX, STATE_APPROVE_TX, STATE_APPROVE_TX_HASH }; - -typedef struct { - union { - pk_context_t pk; - tx_context_t tx; - } req; - enum app_state_t state; - enum request_type_t reqType; - int16_t u2fTimer; -} stellar_context_t; - -typedef struct { - uint8_t initialized; - uint8_t hashSigning; -} stellar_nv_state_t; - -typedef struct { - uint64_t amount; - uint64_t fees; - char destination[ED25519_PUBLIC_STRKEY_LEN + 1]; // ed25519 address only - char memo[20]; -} swap_values_t; - -#endif diff --git a/src/stellar_utils.c b/src/stellar_utils.c deleted file mode 100644 index edeffa43..00000000 --- a/src/stellar_utils.c +++ /dev/null @@ -1,495 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ -#include -#include -#include -#include -#include - -#include "stellar_types.h" -#include "stellar_api.h" - -#include "bolos_target.h" - -static const char hexAlphabet[] = "0123456789ABCDEF"; -static const char base32Alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; -static const char base64Alphabet[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -static int base64ModTable[] = {0, 2, 1}; - -bool parse_bip32_path(uint8_t *path, - size_t path_length, - uint32_t *path_parsed, - size_t path_parsed_length) { - if ((path_length < 0x01) || (path_length > path_parsed_length)) { - return false; - } - - for (size_t i = 0; i < path_length; i++) { - path_parsed[i] = - ((uint32_t)(path[0]) << 24u) | (path[1] << 16u) | (path[2] << 8u) | (path[3]); - path += 4; - } - - return true; -} - -unsigned short crc16(char *ptr, int count) { - uint32_t crc; - crc = 0; - while (--count >= 0) { - crc = crc ^ (uint32_t) *ptr++ << 8; - int i = 8; - do { - if (crc & 0x8000) - crc = crc << 1 ^ 0x1021; - else - crc = crc << 1; - } while (--i); - } - return (crc); -} - -/** - * adapted from - * https://stash.forgerock.org/projects/OPENAM/repos/forgerock-authenticator-ios/browse/ForgeRock-Authenticator/base32.c - */ -int base32_encode(const uint8_t *data, int length, char *result, int bufSize) { - int count = 0; - - if (length < 0 || length > (1 << 28)) { - return -1; - } - - if (length > 0) { - uint32_t buffer = data[0]; - int next = 1; - int bitsLeft = 8; - int quantum = 8; - - while (count < bufSize && (bitsLeft > 0 || next < length)) { - if (bitsLeft < 5) { - if (next < length) { - buffer <<= 8; - buffer |= data[next++] & 0xFF; - bitsLeft += 8; - } else { - int pad = 5 - bitsLeft; - buffer <<= pad; - bitsLeft += pad; - } - } - - int idx = 0x1F & (buffer >> (bitsLeft - 5)); - bitsLeft -= 5; - result[count++] = base32Alphabet[idx]; - - // Track the characters which make up a single quantum of 8 characters - quantum--; - if (quantum == 0) { - quantum = 8; - } - } - - // If the number of encoded characters does not make a full quantum, insert padding - if (quantum != 8) { - while (quantum > 0 && count < bufSize) { - result[count++] = '='; - quantum--; - } - } - } - - // Finally check if we exceeded buffer size. - if (count < bufSize) { - result[count] = '\000'; - return count; - } else { - return -1; - } -} - -void base64_encode(const uint8_t *data, int inLen, char *out) { - size_t outLen = 4 * ((inLen + 2) / 3); - - for (int i = 0, j = 0; i < inLen;) { - uint32_t octet_a = i < inLen ? data[i++] : 0; - uint32_t octet_b = i < inLen ? data[i++] : 0; - uint32_t octet_c = i < inLen ? data[i++] : 0; - - uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c; - - out[j++] = base64Alphabet[(triple >> 3 * 6) & 0x3F]; - out[j++] = base64Alphabet[(triple >> 2 * 6) & 0x3F]; - out[j++] = base64Alphabet[(triple >> 1 * 6) & 0x3F]; - out[j++] = base64Alphabet[(triple >> 0 * 6) & 0x3F]; - } - - int i; - for (i = 0; i < base64ModTable[inLen % 3]; i++) { - out[outLen - 1 - i] = '='; - } - - out[outLen] = '\0'; -} - -void encode_key(const uint8_t *in, char *out, uint8_t versionByte) { - uint8_t buffer[35]; - buffer[0] = versionByte; - int i; - for (i = 0; i < 32; i++) { - buffer[i + 1] = in[i]; - } - short crc = crc16((char *) buffer, 33); // checksum - buffer[33] = crc; - buffer[34] = crc >> 8; - base32_encode(buffer, 35, out, 56); - out[56] = '\0'; -} - -void encode_public_key(const uint8_t *in, char *out) { - encode_key(in, out, 6 << 3); -} - -void encode_pre_auth_key(const uint8_t *in, char *out) { - encode_key(in, out, 19 << 3); -} - -void encode_hash_x_key(const uint8_t *in, char *out) { - encode_key(in, out, 23 << 3); -} - -void print_summary(const char *in, char *out, uint8_t numCharsL, uint8_t numCharsR) { - uint8_t outLength = numCharsL + numCharsR + 2; - uint16_t inLength = strlen(in); - if (inLength > outLength) { - memcpy(out, in, numCharsL); - out[numCharsL] = '.'; - out[numCharsL + 1] = '.'; - memcpy(out + numCharsL + 2, in + inLength - numCharsR, numCharsR); - out[outLength] = '\0'; - } else { - memcpy(out, in, inLength); - } -} - -void print_binary(const uint8_t *in, char *out, uint8_t len) { - out[0] = '0'; - out[1] = 'x'; - uint8_t i, j; - for (i = 0, j = 2; i < len; i += 1, j += 2) { - out[j] = hexAlphabet[in[i] / 16]; - out[j + 1] = hexAlphabet[in[i] % 16]; - } - out[j] = '\0'; -} - -void print_binary_summary(const uint8_t *in, char *out, uint8_t len) { - out[0] = '0'; - out[1] = 'x'; - if (2 + len * 2 > 18) { - uint8_t i, j; - for (i = 0, j = 2; i < 3; i += 1, j += 2) { - out[j] = hexAlphabet[in[i] / 16]; - out[j + 1] = hexAlphabet[in[i] % 16]; - } - out[j++] = '.'; - out[j++] = '.'; - for (i = len - 3; i < len; i += 1, j += 2) { - out[j] = hexAlphabet[in[i] / 16]; - out[j + 1] = hexAlphabet[in[i] % 16]; - } - out[j] = '\0'; - } else { - print_binary(in, out, len); - return; - } -} - -void print_public_key(AccountID in, char *out, uint8_t numCharsL, uint8_t numCharsR) { - if (numCharsL > 0) { - char buffer[57]; - encode_public_key(in, buffer); - print_summary(buffer, out, numCharsL, numCharsR); - } else { - encode_public_key(in, out); - } -} - -void encode_muxed_account(const MuxedAccount *in, char *out) { - if (in->type == KEY_TYPE_ED25519) { - encode_public_key(in->ed25519, out); - } else { - uint8_t buffer[43]; - buffer[0] = 12 << 3; - int i; - for (i = 0; i < 32; i++) { - buffer[i + 1] = in->med25519.ed25519[i]; - } - for (i = 0; i < 8; i++) { - buffer[33 + i] = in->med25519.id >> 8 * (7 - i); - } - short crc = crc16((char *) buffer, 41); // checksum - buffer[41] = crc; - buffer[42] = crc >> 8; - base32_encode(buffer, 43, out, 69); - out[69] = '\0'; - } -} - -void print_muxed_account(const MuxedAccount *in, char *out, uint8_t numCharsL, uint8_t numCharsR) { - if (numCharsL > 0) { - char buffer[70]; - encode_muxed_account(in, buffer); - print_summary(buffer, out, numCharsL, numCharsR); - } else { - encode_muxed_account(in, out); - } -} - -int print_asset_name(const Asset *asset, uint8_t network_id, char *out, size_t out_len) { - switch (asset->type) { - case ASSET_TYPE_NATIVE: - print_native_asset_code(network_id, out, out_len); - return 0; - case ASSET_TYPE_CREDIT_ALPHANUM4: - for (int i = 0; i < 4; i++) { - out[i] = asset->alphaNum4.assetCode[i]; - if (out[i] == 0) { - break; - } - } - out[4] = 0; - return 0; - case ASSET_TYPE_CREDIT_ALPHANUM12: - for (int i = 0; i < 12; i++) { - out[i] = asset->alphaNum12.assetCode[i]; - if (out[i] == 0) { - break; - } - } - out[12] = 0; - return 0; - default: - return -1; - } -} - -int print_amount(uint64_t amount, - const Asset *asset, - uint8_t network_id, - char *out, - size_t out_len) { - char buffer[AMOUNT_MAX_SIZE] = {0}; - uint64_t dVal = amount; - int i; - - for (i = 0; dVal > 0 || i < 9; i++) { - if (dVal > 0) { - buffer[i] = (dVal % 10) + '0'; - dVal /= 10; - } else { - buffer[i] = '0'; - } - if (i == 6) { // stroops to xlm: 1 xlm = 10000000 stroops - i += 1; - buffer[i] = '.'; - } - if (i >= AMOUNT_MAX_SIZE) { - return -1; - } - } - - // reverse order - for (int j = 0; j < i / 2; j++) { - char c = buffer[j]; - buffer[j] = buffer[i - j - 1]; - buffer[i - j - 1] = c; - } - - // strip trailing 0s - i -= 1; - while (buffer[i] == '0') { - buffer[i] = 0; - i -= 1; - } - // strip trailing . - if (buffer[i] == '.') buffer[i] = 0; - strlcpy(out, buffer, out_len); - - char assetInfo[23]; // BANANANANANA@GBD..KHK4, 12 + 1 + 3 + 2 + 4 = 22 - - if (asset) { - // qualify amount - print_asset_t(asset, network_id, assetInfo, 23); - strlcat(out, " ", out_len); - strlcat(out, assetInfo, out_len); - } - return 0; -} - -int print_int(int64_t l, char *out, size_t out_len) { - if (out_len == 0) { - return -1; - } - if (l < 0) { - uint64_t n; - - out[0] = '-'; - if (l == INT64_MIN) { - n = (uint64_t) l; - } else { - n = -l; - } - return print_uint(n, out + 1, out_len - 1); - } - return print_uint(l, out, out_len); -} - -int print_uint(uint64_t l, char *out, size_t out_len) { - char buffer[AMOUNT_MAX_SIZE]; - uint64_t dVal = l; - size_t i, j; - - if (l == 0) { - if (out_len < 2) { - return -1; - } - strlcpy(out, "0", out_len); - return 0; - } - - memset(buffer, 0, AMOUNT_MAX_SIZE); - for (i = 0; dVal > 0; i++) { - if (i >= AMOUNT_MAX_SIZE) { - return -1; - } - buffer[i] = (dVal % 10) + '0'; - dVal /= 10; - } - if (out_len <= i) { - return -1; - } - // reverse order - for (j = 0; j < i; j++) { - out[j] = buffer[i - j - 1]; - } - out[i] = '\0'; - return 0; -} - -void print_asset_t(const Asset *asset, uint8_t network_id, char *out, size_t out_len) { - char issuer[12]; - char asset_name[12 + 1]; - - print_asset_name(asset, network_id, asset_name, sizeof(asset_name)); - - switch (asset->type) { - case ASSET_TYPE_CREDIT_ALPHANUM4: - print_public_key(asset->alphaNum4.issuer, issuer, 3, 4); - break; - case ASSET_TYPE_CREDIT_ALPHANUM12: - print_public_key(asset->alphaNum12.issuer, issuer, 3, 4); - break; - default: - break; - } - - bool is_native = asset->type == ASSET_TYPE_NATIVE ? true : false; - print_asset(asset_name, issuer, is_native, out, out_len); -} - -void print_asset(const char *code, char *issuer, bool is_native, char *out, size_t out_len) { - strlcpy(out, code, out_len); - if (!is_native) { - strlcat(out, "@", out_len); - strlcat(out, issuer, out_len); - } -} - -static void print_flag(char *flag, char *out, size_t out_len) { - if (out[0]) { - strlcat(out, ", ", out_len); - } - strlcat(out, flag, out_len); -} - -void print_flags(uint32_t flags, char *out, size_t out_len) { - if (flags & 0x01u) { - print_flag("Auth required", out, out_len); - } - if (flags & 0x02u) { - print_flag("Auth revocable", out, out_len); - } - if (flags & 0x04u) { - print_flag("Auth immutable", out, out_len); - } -} - -void print_trust_line_flags(uint32_t flags, char *out, size_t out_len) { - if (flags & AUTHORIZED_FLAG) { - print_flag("AUTHORIZED", out, out_len); - } - if (flags & AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG) { - print_flag("AUTHORIZED_TO_MAINTAIN_LIABILITIES", out, out_len); - } - if (flags & TRUSTLINE_CLAWBACK_ENABLED_FLAG) { - print_flag("TRUSTLINE_CLAWBACK_ENABLED", out, out_len); - } -} - -void print_native_asset_code(uint8_t network, char *out, size_t out_len) { - if (network == NETWORK_TYPE_UNKNOWN) { - strlcpy(out, "native", out_len); - } else { - strlcpy(out, "XLM", out_len); - } -} - -void print_claimable_balance_id(const ClaimableBalanceID *claimableBalanceID, char *out) { - size_t data_len = 36; - uint8_t data[data_len]; - memcpy(data, &claimableBalanceID->type, 4); - memcpy(data + 4, claimableBalanceID->v0, 32); - print_binary(data, out, data_len); -} - -bool print_time(uint64_t timestamp_in_seconds, char *out, size_t out_len) { - if (timestamp_in_seconds > 253402300799) { - // valid range 1970-01-01 00:00:00 - 9999-12-31 23:59:59 - return false; - } - char strTime[20] = {0}; // 1970-01-01 00:00:00 - struct tm tm; - if (!gmtime_r((time_t *) ×tamp_in_seconds, &tm)) { - return false; - }; - - if (snprintf(strTime, - sizeof(strTime), - "%04d-%02d-%02d %02d:%02d:%02d", - tm.tm_year + 1900, - tm.tm_mon + 1, - tm.tm_mday, - tm.tm_hour, - tm.tm_min, - tm.tm_sec) < 0) { - return false; - }; - strlcpy(out, strTime, out_len); - return true; -} \ No newline at end of file diff --git a/src/stellar_ux.h b/src/stellar_ux.h deleted file mode 100644 index fedb6eb3..00000000 --- a/src/stellar_ux.h +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ - -#ifndef STELLAR_UX_COMMON_H -#define STELLAR_UX_COMMON_H - -#include "stellar_types.h" - -#ifndef TEST -#include "ux.h" -// ------------------------------------------------------------------------- // -// Implemented by stellar_ux_common.c // -// ------------------------------------------------------------------------- // - -unsigned int io_seproxyhal_respond(unsigned short sw, uint32_t tx); -unsigned int io_seproxyhal_touch_tx_ok(const bagl_element_t *e); -unsigned int io_seproxyhal_touch_tx_cancel(const bagl_element_t *e); -unsigned int io_seproxyhal_touch_address_ok(const bagl_element_t *e); -unsigned int io_seproxyhal_touch_address_cancel(const bagl_element_t *e); - -// ------------------------------------------------------------------------- // -// Implemented by stellar_ux_nanox.c // -// ------------------------------------------------------------------------- // -#endif - -void ui_show_address_init(void); -void ui_approve_tx_init(void); -void display_next_screen(void); -void ui_approve_tx_hash_init(void); -void ui_idle(void); - -#endif diff --git a/src/stellar_ux_common.c b/src/stellar_ux_common.c deleted file mode 100644 index 2ed16d2c..00000000 --- a/src/stellar_ux_common.c +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ -#include "stellar_ux.h" - -#include "os_io_seproxyhal.h" -#include "stellar_api.h" -#include "stellar_vars.h" - -unsigned int io_seproxyhal_respond(unsigned short sw, uint32_t tx) { - G_io_apdu_buffer[tx++] = sw >> 8; - G_io_apdu_buffer[tx++] = sw; - - // Send back the response, do not restart the event loop - io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, tx); - - // Display back the original UX - ui_idle(); - return 0; // do not redraw the widgets -} - -unsigned int io_seproxyhal_touch_address_ok(const bagl_element_t *e) { - (void) e; - return io_seproxyhal_respond(0x9000, ctx.req.pk.tx); -} - -unsigned int io_seproxyhal_touch_address_cancel(const bagl_element_t *e) { - (void) e; - return io_seproxyhal_respond(0x6985, 0); -} - -unsigned int io_seproxyhal_touch_tx_ok(const bagl_element_t *e) { - (void) e; - ctx.state = STATE_NONE; - return io_seproxyhal_respond(0x9000, ctx.req.tx.tx); -} - -unsigned int io_seproxyhal_touch_tx_cancel(const bagl_element_t *e) { - (void) e; - explicit_bzero(G_io_apdu_buffer, sizeof(G_io_apdu_buffer)); - return io_seproxyhal_respond(0x6985, 0); -} diff --git a/src/stellar_ux_nanox.c b/src/stellar_ux_nanox.c deleted file mode 100644 index 5f68926e..00000000 --- a/src/stellar_ux_nanox.c +++ /dev/null @@ -1,344 +0,0 @@ -#ifdef HAVE_UX_FLOW - -#include "stellar_ux.h" -#include "stellar_types.h" -#include "stellar_api.h" -#include "stellar_vars.h" -#include "stellar_format.h" - -#include "glyphs.h" - -#include "ux.h" -ux_state_t G_ux; -bolos_ux_params_t G_ux_params; - -void settings_hash_signing_change(unsigned int enabled); -const char* settings_submenu_getter(unsigned int idx); -void settings_submenu_selector(unsigned int idx); - -// ------------------------------------------------------------------------- // -// MENUS // -// ------------------------------------------------------------------------- // - -////////////////////////////////////////////////////////////////////////////////////// -// clang-format off -UX_STEP_CB( - settings_hash_signing_enable_step, - pbb, - settings_hash_signing_change(1), - { - &C_icon_validate_14, - "Enable hash", - "signing?", - }); -UX_STEP_CB( - settings_hash_signing_disable_step, - pb, - settings_hash_signing_change(0), - { - &C_icon_crossmark, - "Disable", - }); -UX_STEP_CB( - settings_hash_signing_go_back_step, - pb, - ux_menulist_init(0, settings_submenu_getter, settings_submenu_selector), - { - &C_icon_back_x, - "Back", - }); - -UX_DEF(settings_hash_signing_flow, - &settings_hash_signing_enable_step, - &settings_hash_signing_disable_step, - &settings_hash_signing_go_back_step -); -// clang-format on - -void settings_hash_signing(void) { - ux_flow_init(0, settings_hash_signing_flow, NULL); -} - -void settings_hash_signing_change(unsigned int enabled) { - nvm_write((void*) &N_stellar_pstate.hashSigning, &enabled, 1); - ui_idle(); -} - -////////////////////////////////////////////////////////////////////////////////////// -// Settings menu: - -const char* const settings_submenu_getter_values[] = { - "Hash signing", - "Back", -}; - -const char* settings_submenu_getter(unsigned int idx) { - if (idx < ARRAYLEN(settings_submenu_getter_values)) { - return settings_submenu_getter_values[idx]; - } - return NULL; -} - -void settings_submenu_selector(unsigned int idx) { - switch (idx) { - case 0: - settings_hash_signing(); - break; - default: - ui_idle(); - } -} - -////////////////////////////////////////////////////////////////////////////////////// -// clang-format off -UX_STEP_NOCB( - idle_welcome_step, - pbb, - { - &C_icon_stellar, - "Use wallet to", - "view accounts", - }); -UX_STEP_CB( - idle_settings_step, - pb, - ux_menulist_init(0, settings_submenu_getter, settings_submenu_selector), - //ui_settings(), - { - &C_icon_coggle, - "Settings", - }); - -UX_STEP_NOCB( - idle_version_step, - bn, - { - "Version", - APPVERSION, - }); -UX_STEP_CB( - idle_quit_step, - pb, - os_sched_exit(-1), - { - &C_icon_dashboard_x, - "Quit", - }); - -UX_FLOW(idle_flow, - &idle_welcome_step, - &idle_settings_step, - &idle_version_step, - &idle_quit_step, - FLOW_LOOP -); -// clang-format on - -void ui_idle(void) { - if (G_ux.stack_count == 0) { - ux_stack_push(); - } - ux_flow_init(0, idle_flow, NULL); -} - -bagl_element_t tmp_element; - -// ------------------------------------------------------------------------- // -// CONFIRM ADDRESS // -// ------------------------------------------------------------------------- // - -////////////////////////////////////////////////////////////////////////////////////// -// clang-format off -UX_STEP_NOCB( - ux_display_public_flow_0_step, - pnn, - { - &C_icon_eye, - "Confirm", - "Address", - }); -UX_STEP_NOCB( - ux_display_public_flow_1_step, - bnnn_paging, - { - .title = "Confirm Address", - .text = detailValue, - }); -UX_STEP_CB( - ux_display_public_flow_2_step, - pb, - io_seproxyhal_touch_address_ok(NULL), - { - &C_icon_validate_14, - "Approve", - }); -UX_STEP_CB( - ux_display_public_flow_3_step, - pb, - io_seproxyhal_touch_address_cancel(NULL), - { - &C_icon_crossmark, - "Reject", - }); - -UX_DEF(ux_display_public_flow, - &ux_display_public_flow_0_step, - &ux_display_public_flow_1_step, - &ux_display_public_flow_2_step, - &ux_display_public_flow_3_step -); -// clang-format on - -void ui_show_address_init(void) { - if (G_ux.stack_count == 0) { - ux_stack_push(); - } - print_public_key(ctx.req.pk.publicKey, detailValue, 0, 0); - ux_flow_init(0, ux_display_public_flow, NULL); -} - -// ------------------------------------------------------------------------- // -// APPROVE TRANSACTION // -// ------------------------------------------------------------------------- // - -void display_next_state(bool is_upper_border); - -// clang-format off -UX_STEP_NOCB( - ux_confirm_tx_init_flow_step, - pnn, - { - &C_icon_eye, - "Review", - "Transaction", - }); - -UX_STEP_INIT( - ux_init_upper_border, - NULL, - NULL, - { - display_next_state(true); - }); -UX_STEP_NOCB( - ux_variable_display, - bnnn_paging, - { - .title = detailCaption, - .text = detailValue, - }); -UX_STEP_INIT( - ux_init_lower_border, - NULL, - NULL, - { - display_next_state(false); - }); - -UX_STEP_CB( - ux_confirm_tx_finalize_step, - pnn, - io_seproxyhal_touch_tx_ok(NULL), - { - &C_icon_validate_14, - "Finalize", - "Transaction", - }); - -UX_STEP_CB( - ux_reject_tx_flow_step, - pb, - io_seproxyhal_touch_tx_cancel(NULL), - { - &C_icon_crossmark, - "Cancel", - }); - -UX_FLOW(ux_confirm_flow, - &ux_confirm_tx_init_flow_step, - - &ux_init_upper_border, - &ux_variable_display, - &ux_init_lower_border, - - &ux_confirm_tx_finalize_step, - &ux_reject_tx_flow_step -); -// clang-format on - -uint8_t num_data; -volatile uint8_t current_state; - -#define INSIDE_BORDERS 0 -#define OUT_OF_BORDERS 1 - -void display_next_state(bool is_upper_border) { - if (is_upper_border) { // -> from first screen - if (current_state == OUT_OF_BORDERS) { - current_state = INSIDE_BORDERS; - set_state_data(true); - ux_flow_next(); - } else { - formatter_index -= 1; - if (current_data_index > 0) { // <- from middle, more screens available - set_state_data(false); - if (formatter_stack[formatter_index] != NULL) { - ux_flow_next(); - } else { - current_state = OUT_OF_BORDERS; - current_data_index = 0; - ux_flow_prev(); - } - } else { // <- from middle, no more screens available - current_state = OUT_OF_BORDERS; - current_data_index = 0; - ux_flow_prev(); - } - } - } else // walking over the second border - { - if (current_state == OUT_OF_BORDERS) { // <- from last screen - current_state = INSIDE_BORDERS; - set_state_data(false); - ux_flow_prev(); - } else { - if ((num_data != 0 && current_data_index < num_data - 1) || - formatter_stack[formatter_index + 1] != - NULL) { // -> from middle, more screens available - formatter_index += 1; - set_state_data(true); - /*dirty hack to have coherent behavior on bnnn_paging when there are multiple - * screens*/ - G_ux.flow_stack[G_ux.stack_count - 1].prev_index = - G_ux.flow_stack[G_ux.stack_count - 1].index - 2; - G_ux.flow_stack[G_ux.stack_count - 1].index--; - ux_flow_relayout(); - /*end of dirty hack*/ - } else { // -> from middle, no more screens available - current_state = OUT_OF_BORDERS; - ux_flow_next(); - } - } - } -} - -void ui_approve_tx_init(void) { - ctx.req.tx.offset = 0; - formatter_index = 0; - MEMCLEAR(formatter_stack); - num_data = ctx.req.tx.txDetails.opCount; - current_data_index = 0; - current_state = OUT_OF_BORDERS; - ux_flow_init(0, ux_confirm_flow, NULL); -} - -void ui_approve_tx_hash_init(void) { - formatter_index = 0; - MEMCLEAR(formatter_stack); - num_data = ctx.req.tx.txDetails.opCount; - current_data_index = 0; - current_state = OUT_OF_BORDERS; - ux_flow_init(0, ux_confirm_flow, NULL); -} - -#endif diff --git a/src/stellar_vars.h b/src/stellar_vars.h deleted file mode 100644 index e5a3de3e..00000000 --- a/src/stellar_vars.h +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2017-2018 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ - -#ifndef STELLAR_VARS_H -#define STELLAR_VARS_H - -#ifndef TEST -#include "os.h" -#include "ux.h" - -extern ux_state_t ux; -#endif - -#include "stellar_types.h" - -extern stellar_context_t ctx; -extern bool called_from_swap; -extern swap_values_t swap_values; -extern stellar_nv_state_t const N_state_pic; -#define N_stellar_pstate (*(volatile stellar_nv_state_t *) PIC(&N_state_pic)) - -void reset_ctx(); - -#endif diff --git a/src/sw.h b/src/sw.h new file mode 100644 index 00000000..c9d267e7 --- /dev/null +++ b/src/sw.h @@ -0,0 +1,96 @@ +#pragma once + +/** + * Status word for fail of transaction formatting. + */ +#define SW_TX_FORMATTING_FAIL 0x6125 + +/** + * Status word for denied by user. + */ +#define SW_DENY 0x6985 + +/** + * Status word for either wrong Lc or minimum APDU lenght is incorrect. + */ +#define SW_WRONG_DATA_LENGTH 0x6A87 + +/** + * Status word for incorrect P1 or P2. + */ +#define SW_WRONG_P1P2 0x6B00 + +/** + * Unknown stellar operation + */ +#define SW_UNKNOWN_OP 0x6C24 + +/** + * Unknown stellar operation + */ +#define SW_UNKNOWN_ENVELOPE_TYPE 0x6C25 + +/** + * Status word for hash signing model not enabled. + */ +#define SW_TX_HASH_SIGNING_MODE_NOT_ENABLED 0x6C66 + +/** + * Status word for unknown command with this INS. + */ +#define SW_INS_NOT_SUPPORTED 0x6D00 + +/** + * Status word for instruction class is different than CLA. + */ +#define SW_CLA_NOT_SUPPORTED 0x6E00 + +/** + * Status word for wrong response length (buffer too small or too big). + */ +#define SW_WRONG_RESPONSE_LENGTH 0xB000 + +/** + * Status word for fail to display address. + */ +#define SW_DISPLAY_ADDRESS_FAIL 0xB002 + +/** + * Status word for fail to display transaction hash. + */ +#define SW_DISPLAY_TRANSACTION_HASH_FAIL 0xB003 + +/** + * Status word for wrong transaction length. + */ +#define SW_WRONG_TX_LENGTH 0xB004 + +/** + * Status word for fail of transaction parsing. + */ +#define SW_TX_PARSING_FAIL 0xB005 + +/** + * Status word for fail of transaction hash. + */ +#define SW_TX_HASH_FAIL 0xB006 + +/** + * Status word for bad state. + */ +#define SW_BAD_STATE 0xB007 + +/** + * Status word for signature fail. + */ +#define SW_SIGNATURE_FAIL 0xB008 + +/** + * Status word for fail to check swap params + */ +#define SW_SWAP_CHECKING_FAIL 0xB009 + +/** + * Status word for success. + */ +#define SW_OK 0x9000 diff --git a/src/swap/handle_check_address.c b/src/swap/handle_check_address.c index e1f28a87..0d7a2425 100644 --- a/src/swap/handle_check_address.c +++ b/src/swap/handle_check_address.c @@ -1,8 +1,11 @@ #include -#include "swap_lib_calls.h" #include "os.h" -#include "stellar_api.h" + +#include "./swap_lib_calls.h" +#include "../utils.h" +#include "../crypto.h" +#include "../common/bip32.h" int handle_check_address(const check_address_parameters_t* params) { PRINTF("Params on the address %d\n", (unsigned int) params); @@ -14,12 +17,12 @@ int handle_check_address(const check_address_parameters_t* params) { return 0; } - uint32_t bip32_path[MAX_BIP32_LEN]; + uint32_t bip32_path[MAX_BIP32_PATH]; uint8_t bip32_path_length = *params->address_parameters; - if (!parse_bip32_path(params->address_parameters + 1, - bip32_path_length, - bip32_path, - MAX_BIP32_LEN)) { + if (!bip32_path_read(params->address_parameters + 1, + params->address_parameters_length - 1, + bip32_path, + bip32_path_length)) { PRINTF("Invalid path\n"); return 0; } @@ -27,21 +30,25 @@ int handle_check_address(const check_address_parameters_t* params) { cx_ecfp_private_key_t privateKey; cx_ecfp_public_key_t publicKey; uint8_t stellar_publicKey[32]; - int error = derive_private_key(&privateKey, bip32_path, bip32_path_length); - if (error) { + if (crypto_derive_private_key(&privateKey, bip32_path, bip32_path_length)) { explicit_bzero(&privateKey, sizeof(privateKey)); PRINTF("derive_private_key failed\n"); return 0; } - error = init_public_key(&privateKey, &publicKey, stellar_publicKey); - explicit_bzero(&privateKey, sizeof(privateKey)); - if (error) { + + if (crypto_init_public_key(&privateKey, &publicKey, stellar_publicKey)) { PRINTF("init_public_key failed\n"); + explicit_bzero(&privateKey, sizeof(privateKey)); return 0; } + explicit_bzero(&privateKey, sizeof(privateKey)); + char address[57]; - encode_public_key(stellar_publicKey, address); + if (!encode_ed25519_public_key(stellar_publicKey, address, sizeof(address))) { + PRINTF("public key encode failed\n"); + return 0; + }; if (strcmp(address, params->address_to_check) != 0) { PRINTF("Addresses do not match\n"); diff --git a/src/swap/handle_get_printable_amount.c b/src/swap/handle_get_printable_amount.c index 0e1e1277..29648cb6 100644 --- a/src/swap/handle_get_printable_amount.c +++ b/src/swap/handle_get_printable_amount.c @@ -1,13 +1,15 @@ #include #include -#include "swap_lib_calls.h" -#include "stellar_api.h" +#include "os.h" + +#include "./swap_lib_calls.h" +#include "../utils.h" /* return 0 on error, 1 otherwise */ int handle_get_printable_amount(get_printable_amount_parameters_t* params) { uint64_t amount; - Asset asset = {.type = ASSET_TYPE_NATIVE}; + asset_t asset = {.type = ASSET_TYPE_NATIVE}; params->printable_amount[0] = '\0'; diff --git a/src/swap/handle_swap_sign_transaction.c b/src/swap/handle_swap_sign_transaction.c index 1ac3c2c3..415cfcb9 100644 --- a/src/swap/handle_swap_sign_transaction.c +++ b/src/swap/handle_swap_sign_transaction.c @@ -1,7 +1,10 @@ -#include "os_io_seproxyhal.h" -#include "swap_lib_calls.h" +#include "os.h" #include "ux.h" -#include "stellar_vars.h" +#include "os_io_seproxyhal.h" + +#include "./swap_lib_calls.h" +#include "../globals.h" +#include "../types.h" bool copy_transaction_parameters(const create_transaction_parameters_t* params) { // first copy parameters to stack, and then to global data. @@ -13,9 +16,15 @@ bool copy_transaction_parameters(const create_transaction_parameters_t* params) strlen(params->destination_address_extra_id) >= sizeof(stack_data.memo)) { return false; } - strlcpy(stack_data.destination, params->destination_address, sizeof(stack_data.destination)); - strlcpy(stack_data.memo, params->destination_address_extra_id, sizeof(stack_data.memo)); - + if (strlcpy(stack_data.destination, + params->destination_address, + sizeof(stack_data.destination)) >= sizeof(stack_data.destination)) { + return false; + } + if (strlcpy(stack_data.memo, params->destination_address_extra_id, sizeof(stack_data.memo)) >= + sizeof(stack_data.memo)) { + return false; + } if (!swap_str_to_u64(params->amount, params->amount_length, &stack_data.amount)) { return false; } @@ -24,19 +33,15 @@ bool copy_transaction_parameters(const create_transaction_parameters_t* params) return false; } - memcpy(&swap_values, &stack_data, sizeof(stack_data)); - + memcpy(&G_swap_values, &stack_data, sizeof(stack_data)); return true; } void handle_swap_sign_transaction(void) { - called_from_swap = true; - reset_ctx(); io_seproxyhal_init(); UX_INIT(); USB_power(0); USB_power(1); - // ui_idle(); PRINTF("USB power ON/OFF\n"); #ifdef TARGET_NANOX // grab the current plane mode setting @@ -46,5 +51,5 @@ void handle_swap_sign_transaction(void) { BLE_power(0, NULL); BLE_power(1, "Nano X"); #endif // HAVE_BLE - stellar_main(); + app_main(); } diff --git a/src/swap/swap_check.c b/src/swap/swap_check.c index 055c6a63..273430d8 100644 --- a/src/swap/swap_check.c +++ b/src/swap/swap_check.c @@ -1,57 +1,66 @@ -#include "stellar_vars.h" -#include "stellar_ux.h" -#include "stellar_api.h" -#include "stellar_format.h" +#include -void swap_check() { - char *tmp_buf = detailValue; +#include "os.h" - tx_context_t *txCtx = &ctx.req.tx; +#include "../globals.h" +#include "../utils.h" + +bool swap_check() { + PRINTF("swap_check invoked.\n"); + char *tmp_buf = G_ui_detail_value; + + tx_ctx_t *tx_ctx = &G_context.tx_info; // tx type - if (txCtx->envelopeType != ENVELOPE_TYPE_TX) { - io_seproxyhal_touch_tx_cancel(NULL); + if (tx_ctx->envelope_type != ENVELOPE_TYPE_TX) { + return false; } // A XLM swap consist of only one "send" operation - if (txCtx->txDetails.opCount > 1) { - io_seproxyhal_touch_tx_cancel(NULL); + if (tx_ctx->tx_details.operations_count != 1) { + return false; } // op type - if (txCtx->txDetails.opDetails.type != XDR_OPERATION_TYPE_PAYMENT) { - io_seproxyhal_touch_tx_cancel(NULL); + if (tx_ctx->tx_details.op_details.type != OPERATION_TYPE_PAYMENT) { + return false; } // amount - if (txCtx->txDetails.opDetails.payment.asset.type != ASSET_TYPE_NATIVE || - txCtx->txDetails.opDetails.payment.amount != (int64_t) swap_values.amount) { - io_seproxyhal_touch_tx_cancel(NULL); + if (tx_ctx->tx_details.op_details.payment_op.asset.type != ASSET_TYPE_NATIVE || + tx_ctx->tx_details.op_details.payment_op.amount != (int64_t) G_swap_values.amount) { + return false; } // destination addr - print_muxed_account(&txCtx->txDetails.opDetails.payment.destination, tmp_buf, 0, 0); - if (strcmp(tmp_buf, swap_values.destination) != 0) { - io_seproxyhal_touch_tx_cancel(NULL); + if (!print_muxed_account(&tx_ctx->tx_details.op_details.payment_op.destination, + tmp_buf, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) { + return false; + }; + + if (strcmp(tmp_buf, G_swap_values.destination) != 0) { + return false; } - if (txCtx->txDetails.opDetails.sourceAccountPresent) { - io_seproxyhal_touch_tx_cancel(NULL); + if (tx_ctx->tx_details.op_details.source_account_present) { + return false; } // memo - if (txCtx->txDetails.memo.type != MEMO_TEXT || - strcmp(txCtx->txDetails.memo.text, swap_values.memo) != 0) { - io_seproxyhal_touch_tx_cancel(NULL); + if (tx_ctx->tx_details.memo.type != MEMO_TEXT || + strcmp((char *) tx_ctx->tx_details.memo.text.text, G_swap_values.memo) != 0) { + return false; } // fees - if (txCtx->network != NETWORK_TYPE_PUBLIC || txCtx->txDetails.fee != swap_values.fees) { - io_seproxyhal_touch_tx_cancel(NULL); + if (tx_ctx->network != NETWORK_TYPE_PUBLIC || tx_ctx->tx_details.fee != G_swap_values.fees) { + return false; } - // // we don't do any check on "TX Source" field - // // If we've reached this point without failure, we're good to go ! - io_seproxyhal_touch_tx_ok(NULL); - os_sched_exit(0); + // we don't do any check on "TX Source" field + // If we've reached this point without failure, we're good to go! + return true; } diff --git a/src/swap/swap_lib_calls.c b/src/swap/swap_lib_calls.c index 009a9bc5..090cc769 100644 --- a/src/swap/swap_lib_calls.c +++ b/src/swap/swap_lib_calls.c @@ -1,6 +1,6 @@ #include -#include "swap_lib_calls.h" +#include "./swap_lib_calls.h" bool swap_str_to_u64(const uint8_t* src, size_t length, uint64_t* result) { if (length > sizeof(uint64_t)) { diff --git a/src/swap/swap_lib_calls.h b/src/swap/swap_lib_calls.h index 56f58601..58464807 100644 --- a/src/swap/swap_lib_calls.h +++ b/src/swap/swap_lib_calls.h @@ -1,5 +1,4 @@ -#ifndef SWAP_LIB_CALLS -#define SWAP_LIB_CALLS +#pragma once #include #include @@ -9,8 +8,6 @@ #define CHECK_ADDRESS 3 #define GET_PRINTABLE_AMOUNT 4 -void stellar_main(void); - // structure that should be send to specific coin application to get address typedef struct check_address_parameters_s { // IN @@ -49,11 +46,20 @@ typedef struct create_transaction_parameters_s { char* destination_address_extra_id; } create_transaction_parameters_t; +typedef struct libargs_s { + unsigned int id; + unsigned int command; + unsigned int unused; + union { + check_address_parameters_t* check_address; + create_transaction_parameters_t* create_transaction; + get_printable_amount_parameters_t* get_printable_amount; + }; +} libargs_t; + int handle_check_address(const check_address_parameters_t* params); int handle_get_printable_amount(get_printable_amount_parameters_t* params); bool copy_transaction_parameters(const create_transaction_parameters_t* params); void handle_swap_sign_transaction(void); -void swap_check(); +bool swap_check(); bool swap_str_to_u64(const uint8_t* src, size_t length, uint64_t* result); - -#endif diff --git a/src/transaction/transaction_formatter.c b/src/transaction/transaction_formatter.c new file mode 100644 index 00000000..4bf03d06 --- /dev/null +++ b/src/transaction/transaction_formatter.c @@ -0,0 +1,1769 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // bool +#include +#include + +#include "os.h" +#include "bolos_target.h" + +#include "./transaction_formatter.h" +#include "../sw.h" +#include "../utils.h" +#include "../types.h" +#include "../globals.h" +#include "../settings.h" +#include "../common/format.h" +#include "../transaction/transaction_parser.h" + +#define FORMATTER_CHECK(x) \ + { \ + if (!(x)) THROW(SW_TX_FORMATTING_FAIL); \ + } + +#define STRLCPY(dst, src, size) \ + { \ + size_t len = strlcpy(dst, src, size); \ + if (len >= size) { \ + THROW(SW_TX_FORMATTING_FAIL); \ + } \ + } + +#define STRLCAT(dst, src, size) \ + { \ + size_t len = strlcat(dst, src, size); \ + if (len >= size) { \ + THROW(SW_TX_FORMATTING_FAIL); \ + } \ + } + +static const char *NETWORK_NAMES[3] = {"Public", "Testnet", "Unknown"}; + +char op_caption[OPERATION_CAPTION_MAX_LENGTH]; +format_function_t formatter_stack[MAX_FORMATTERS_PER_OPERATION]; +int8_t formatter_index; + +static void push_to_formatter_stack(format_function_t formatter) { + if (formatter_index + 1 >= MAX_FORMATTERS_PER_OPERATION) { + THROW(SW_TX_FORMATTING_FAIL); + } + formatter_stack[formatter_index + 1] = formatter; +} + +static void format_next_step(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + formatter_stack[formatter_index] = NULL; + set_state_data(true); +} + +static void format_transaction_source(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Tx Source", DETAIL_CAPTION_MAX_LENGTH); + if (tx_ctx->envelope_type == ENVELOPE_TYPE_TX && + tx_ctx->tx_details.source_account.type == KEY_TYPE_ED25519 && + memcmp(tx_ctx->tx_details.source_account.ed25519, + G_context.raw_public_key, + RAW_ED25519_PUBLIC_KEY_SIZE) == 0) { + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.source_account, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 6, + 6)) + } else { + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.source_account, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + } + push_to_formatter_stack(format_next_step); +} + +static void format_min_seq_ledger_gap(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Min Seq Ledger Gap", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.cond.min_seq_ledger_gap, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_transaction_source); +} + +static void format_min_seq_ledger_gap_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.cond.min_seq_ledger_gap == 0) { + format_transaction_source(tx_ctx); + } else { + format_min_seq_ledger_gap(tx_ctx); + } +} + +static void format_min_seq_age(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Min Seq Age", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_uint(tx_ctx->tx_details.cond.min_seq_age, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_min_seq_ledger_gap_prepare); +} + +static void format_min_seq_age_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.cond.min_seq_age == 0) { + format_min_seq_ledger_gap_prepare(tx_ctx); + } else { + format_min_seq_age(tx_ctx); + } +} + +static void format_min_seq_num(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Min Seq Num", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_uint(tx_ctx->tx_details.cond.min_seq_num, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_min_seq_age_prepare); +} + +static void format_min_seq_num_prepare(tx_ctx_t *tx_ctx) { + if (!tx_ctx->tx_details.cond.min_seq_num_present || tx_ctx->tx_details.cond.min_seq_num == 0) { + format_min_seq_age_prepare(tx_ctx); + } else { + format_min_seq_num(tx_ctx); + } +} + +static void format_ledger_bounds_max_ledger(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Ledger Bounds Max", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.cond.ledger_bounds.max_ledger, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_min_seq_num_prepare); +} + +static void format_ledger_bounds_min_ledger(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Ledger Bounds Min", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.cond.ledger_bounds.min_ledger, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + if (tx_ctx->tx_details.cond.ledger_bounds.max_ledger != 0) { + push_to_formatter_stack(&format_ledger_bounds_max_ledger); + } else { + push_to_formatter_stack(&format_min_seq_num_prepare); + } +} + +static void format_ledger_bounds(tx_ctx_t *tx_ctx) { + if (!tx_ctx->tx_details.cond.ledger_bounds_present || + (tx_ctx->tx_details.cond.ledger_bounds.min_ledger == 0 && + tx_ctx->tx_details.cond.ledger_bounds.max_ledger == 0)) { + format_min_seq_num_prepare(tx_ctx); + } else if (tx_ctx->tx_details.cond.ledger_bounds.min_ledger != 0) { + format_ledger_bounds_min_ledger(tx_ctx); + } else { + format_ledger_bounds_max_ledger(tx_ctx); + } +} + +static void format_time_bounds_max_time(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Valid Before (UTC)", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_time(tx_ctx->tx_details.cond.time_bounds.max_time, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_ledger_bounds); +} + +static void format_time_bounds_min_time(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Valid After (UTC)", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_time(tx_ctx->tx_details.cond.time_bounds.min_time, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + + if (tx_ctx->tx_details.cond.time_bounds.max_time != 0) { + push_to_formatter_stack(&format_time_bounds_max_time); + } else { + push_to_formatter_stack(&format_ledger_bounds); + } +} + +static void format_time_bounds(tx_ctx_t *tx_ctx) { + if (!tx_ctx->tx_details.cond.time_bounds_present || + (tx_ctx->tx_details.cond.time_bounds.min_time == 0 && + tx_ctx->tx_details.cond.time_bounds.max_time == 0)) { + format_ledger_bounds(tx_ctx); + } else if (tx_ctx->tx_details.cond.time_bounds.min_time != 0) { + format_time_bounds_min_time(tx_ctx); + } else { + format_time_bounds_max_time(tx_ctx); + } +} + +static void format_sequence(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Sequence Num", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_uint(tx_ctx->tx_details.sequence_number, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_time_bounds); +} + +static void format_fee(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Max Fee", DETAIL_CAPTION_MAX_LENGTH); + asset_t asset = {.type = ASSET_TYPE_NATIVE}; + FORMATTER_CHECK(print_amount(tx_ctx->tx_details.fee, + &asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) +#ifdef TEST + push_to_formatter_stack(&format_sequence); +#else + if (HAS_SETTING(S_SEQUENCE_NUMBER_ENABLED)) { + push_to_formatter_stack(&format_sequence); + } else { + push_to_formatter_stack(&format_time_bounds); + } +#endif // TEST +} + +static void format_memo(tx_ctx_t *tx_ctx) { + memo_t *memo = &tx_ctx->tx_details.memo; + switch (memo->type) { + case MEMO_ID: { + STRLCPY(G_ui_detail_caption, "Memo ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(memo->id, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + break; + } + case MEMO_TEXT: { + char tmp[DETAIL_VALUE_MAX_LENGTH]; + if (is_printable_binary(memo->text.text, memo->text.text_size)) { + STRLCPY(G_ui_detail_caption, "Memo Text", DETAIL_CAPTION_MAX_LENGTH); + memcpy(tmp, (char *) memo->text.text, memo->text.text_size); + tmp[memo->text.text_size] = '\0'; + STRLCPY(G_ui_detail_value, tmp, DETAIL_VALUE_MAX_LENGTH); + } else { + STRLCPY(G_ui_detail_caption, "Memo Text (base64)", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(base64_encode(memo->text.text, + memo->text.text_size, + tmp, + DETAIL_VALUE_MAX_LENGTH)) + FORMATTER_CHECK( + print_summary(tmp, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH, 6, 6)) + } + break; + } + case MEMO_HASH: { + STRLCPY(G_ui_detail_caption, "Memo Hash", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_binary(memo->hash, + HASH_SIZE, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + break; + } + case MEMO_RETURN: { + STRLCPY(G_ui_detail_caption, "Memo Return", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_binary(memo->hash, + HASH_SIZE, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + break; + } + default: + THROW(SW_TX_FORMATTING_FAIL); + return; + } + push_to_formatter_stack(&format_fee); +} + +static void format_transaction_details(tx_ctx_t *tx_ctx) { + switch (tx_ctx->envelope_type) { + case ENVELOPE_TYPE_TX_FEE_BUMP: + STRLCPY(G_ui_detail_caption, "InnerTx", DETAIL_CAPTION_MAX_LENGTH); + break; + case ENVELOPE_TYPE_TX: + STRLCPY(G_ui_detail_caption, "Transaction", DETAIL_CAPTION_MAX_LENGTH); + break; + } + STRLCPY(G_ui_detail_value, "Details", DETAIL_VALUE_MAX_LENGTH); + if (tx_ctx->tx_details.memo.type != MEMO_NONE) { + push_to_formatter_stack(&format_memo); + } else { + push_to_formatter_stack(&format_fee); + } +} + +static void format_operation_source(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Op Source", DETAIL_CAPTION_MAX_LENGTH); + if (tx_ctx->envelope_type == ENVELOPE_TYPE_TX && + tx_ctx->tx_details.source_account.type == KEY_TYPE_ED25519 && + tx_ctx->tx_details.op_details.source_account.type == KEY_TYPE_ED25519 && + memcmp(tx_ctx->tx_details.source_account.ed25519, + G_context.raw_public_key, + RAW_ED25519_PUBLIC_KEY_SIZE) == 0 && + memcmp(tx_ctx->tx_details.op_details.source_account.ed25519, + G_context.raw_public_key, + RAW_ED25519_PUBLIC_KEY_SIZE) == 0) { + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.op_details.source_account, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 6, + 6)) + } else { + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.op_details.source_account, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + } + + if (tx_ctx->tx_details.operation_index == tx_ctx->tx_details.operations_count) { + // last operation + push_to_formatter_stack(NULL); + } else { + // more operations + push_to_formatter_stack(&format_next_step); + } +} + +static void format_operation_source_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.source_account_present) { + // If the source exists, when the user clicks the next button, + // it will jump to the page showing the source + push_to_formatter_stack(&format_operation_source); + } else { + // If not, jump to the signing page or show the next operation. + if (tx_ctx->tx_details.operation_index == tx_ctx->tx_details.operations_count) { + // last operation + push_to_formatter_stack(NULL); + } else { + // more operations + push_to_formatter_stack(&format_next_step); + } + } +} + +static void format_bump_sequence_bump_to(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Bump To", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_int(tx_ctx->tx_details.op_details.bump_sequence_op.bump_to, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_bump_sequence(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Bump Sequence", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_bump_sequence_bump_to); +} + +static void format_inflation(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Inflation", DETAIL_VALUE_MAX_LENGTH); + format_operation_source_prepare(tx_ctx); +} + +static void format_account_merge_destination(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Destination", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.op_details.account_merge_op.destination, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_operation_source_prepare(tx_ctx); +} + +static void format_account_merge_detail(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Merge Account", DETAIL_CAPTION_MAX_LENGTH); + if (tx_ctx->tx_details.op_details.source_account_present) { + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.op_details.source_account, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + } else { + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.source_account, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + } + push_to_formatter_stack(&format_account_merge_destination); +} + +static void format_account_merge(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Account Merge", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_account_merge_detail); +} + +static void format_manage_data_value(tx_ctx_t *tx_ctx) { + char tmp[DETAIL_VALUE_MAX_LENGTH]; + if (is_printable_binary(tx_ctx->tx_details.op_details.manage_data_op.data_value, + tx_ctx->tx_details.op_details.manage_data_op.data_value_size)) { + STRLCPY(G_ui_detail_caption, "Data Value", DETAIL_CAPTION_MAX_LENGTH); + memcpy(tmp, + (char *) tx_ctx->tx_details.op_details.manage_data_op.data_value, + tx_ctx->tx_details.op_details.manage_data_op.data_value_size); + tmp[tx_ctx->tx_details.op_details.manage_data_op.data_value_size] = '\0'; + STRLCPY(G_ui_detail_value, tmp, DETAIL_VALUE_MAX_LENGTH); + } else { + STRLCPY(G_ui_detail_caption, "Data Value (base64)", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(base64_encode(tx_ctx->tx_details.op_details.manage_data_op.data_value, + tx_ctx->tx_details.op_details.manage_data_op.data_value_size, + tmp, + sizeof(tmp))) + FORMATTER_CHECK(print_summary(tmp, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH, 6, 6)) + } + format_operation_source_prepare(tx_ctx); +} + +static void format_manage_data(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.manage_data_op.data_value_size) { + STRLCPY(G_ui_detail_caption, "Set Data", DETAIL_CAPTION_MAX_LENGTH); + push_to_formatter_stack(&format_manage_data_value); + } else { + STRLCPY(G_ui_detail_caption, "Remove Data", DETAIL_CAPTION_MAX_LENGTH); + format_operation_source_prepare(tx_ctx); + } + char tmp[65]; + memcpy(tmp, + tx_ctx->tx_details.op_details.manage_data_op.data_name, + tx_ctx->tx_details.op_details.manage_data_op.data_name_size); + tmp[tx_ctx->tx_details.op_details.manage_data_op.data_name_size] = '\0'; + STRLCPY(G_ui_detail_value, tmp, DETAIL_VALUE_MAX_LENGTH); +} + +static void format_allow_trust_authorize(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Authorize Flag", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_allow_trust_flags(tx_ctx->tx_details.op_details.allow_trust_op.authorize, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_allow_trust_asset_code(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Asset Code", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, + tx_ctx->tx_details.op_details.allow_trust_op.asset_code, + DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_allow_trust_authorize); +} + +static void format_allow_trust_trustor(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Trustor", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_id(tx_ctx->tx_details.op_details.allow_trust_op.trustor, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_allow_trust_asset_code); +} + +static void format_allow_trust(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Allow Trust", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_allow_trust_trustor); +} + +static void format_set_option_signer_weight(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Weight", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.op_details.set_options_op.signer.weight, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_set_option_signer_detail(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Signer Key", DETAIL_CAPTION_MAX_LENGTH); + signer_key_t *key = &tx_ctx->tx_details.op_details.set_options_op.signer.key; + + switch (key->type) { + case SIGNER_KEY_TYPE_ED25519: { + FORMATTER_CHECK( + print_account_id(key->ed25519, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH, 0, 0)) + break; + } + case SIGNER_KEY_TYPE_HASH_X: { + FORMATTER_CHECK( + encode_hash_x_key(key->hash_x, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + break; + } + + case SIGNER_KEY_TYPE_PRE_AUTH_TX: { + FORMATTER_CHECK( + encode_pre_auth_x_key(key->pre_auth_tx, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + break; + } + default: + THROW(SW_TX_FORMATTING_FAIL); + return; + } + push_to_formatter_stack(&format_set_option_signer_weight); +} + +static void format_set_option_signer(tx_ctx_t *tx_ctx) { + signer_t *signer = &tx_ctx->tx_details.op_details.set_options_op.signer; + if (signer->weight) { + STRLCPY(G_ui_detail_caption, "Add Signer", DETAIL_CAPTION_MAX_LENGTH); + } else { + STRLCPY(G_ui_detail_caption, "Remove Signer", DETAIL_CAPTION_MAX_LENGTH); + } + switch (signer->key.type) { + case SIGNER_KEY_TYPE_ED25519: { + STRLCPY(G_ui_detail_value, "Type Public Key", DETAIL_VALUE_MAX_LENGTH); + break; + } + case SIGNER_KEY_TYPE_HASH_X: { + STRLCPY(G_ui_detail_value, "Type Hash(x)", DETAIL_VALUE_MAX_LENGTH); + break; + } + case SIGNER_KEY_TYPE_PRE_AUTH_TX: { + STRLCPY(G_ui_detail_value, "Type Pre-Auth", DETAIL_VALUE_MAX_LENGTH); + break; + } + default: + THROW(SW_TX_FORMATTING_FAIL); + return; + } + push_to_formatter_stack(&format_set_option_signer_detail); +} + +static void format_set_option_signer_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.signer_present) { + push_to_formatter_stack(&format_set_option_signer); + } else { + format_operation_source_prepare(tx_ctx); + } +} + +static void format_set_option_home_domain(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Home Domain", DETAIL_CAPTION_MAX_LENGTH); + if (tx_ctx->tx_details.op_details.set_options_op.home_domain_size) { + memcpy(G_ui_detail_value, + tx_ctx->tx_details.op_details.set_options_op.home_domain, + tx_ctx->tx_details.op_details.set_options_op.home_domain_size); + G_ui_detail_value[tx_ctx->tx_details.op_details.set_options_op.home_domain_size] = '\0'; + } else { + STRLCPY(G_ui_detail_value, "[remove home domain from account]", DETAIL_VALUE_MAX_LENGTH); + } + format_set_option_signer_prepare(tx_ctx); +} + +static void format_set_option_home_domain_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.home_domain_present) { + push_to_formatter_stack(&format_set_option_home_domain); + } else { + format_set_option_signer_prepare(tx_ctx); + } +} + +static void format_set_option_high_threshold(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "High Threshold", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.op_details.set_options_op.high_threshold, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_set_option_home_domain_prepare(tx_ctx); +} + +static void format_set_option_high_threshold_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.high_threshold_present) { + push_to_formatter_stack(&format_set_option_high_threshold); + } else { + format_set_option_home_domain_prepare(tx_ctx); + } +} + +static void format_set_option_medium_threshold(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Medium Threshold", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.op_details.set_options_op.medium_threshold, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_set_option_high_threshold_prepare(tx_ctx); +} + +static void format_set_option_medium_threshold_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.medium_threshold_present) { + push_to_formatter_stack(&format_set_option_medium_threshold); + } else { + format_set_option_high_threshold_prepare(tx_ctx); + } +} + +static void format_set_option_low_threshold(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Low Threshold", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.op_details.set_options_op.low_threshold, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_set_option_medium_threshold_prepare(tx_ctx); +} + +static void format_set_option_low_threshold_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.low_threshold_present) { + push_to_formatter_stack(&format_set_option_low_threshold); + } else { + format_set_option_medium_threshold_prepare(tx_ctx); + } +} + +static void format_set_option_master_weight(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Master Weight", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.op_details.set_options_op.master_weight, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_set_option_low_threshold_prepare(tx_ctx); +} + +static void format_set_option_master_weight_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.master_weight_present) { + push_to_formatter_stack(&format_set_option_master_weight); + } else { + format_set_option_low_threshold_prepare(tx_ctx); + } +} + +static void format_set_option_set_flags(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Set Flags", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_flags(tx_ctx->tx_details.op_details.set_options_op.set_flags, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_set_option_master_weight_prepare(tx_ctx); +} + +static void format_set_option_set_flags_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.set_flags_present) { + push_to_formatter_stack(&format_set_option_set_flags); + } else { + format_set_option_master_weight_prepare(tx_ctx); + } +} + +static void format_set_option_clear_flags(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Clear Flags", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_flags(tx_ctx->tx_details.op_details.set_options_op.clear_flags, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_set_option_set_flags_prepare(tx_ctx); +} + +static void format_set_option_clear_flags_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.clear_flags_present) { + push_to_formatter_stack(&format_set_option_clear_flags); + } else { + format_set_option_set_flags_prepare(tx_ctx); + } +} + +static void format_set_option_inflation_destination(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Inflation Dest", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_account_id(tx_ctx->tx_details.op_details.set_options_op.inflation_destination, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_set_option_clear_flags_prepare(tx_ctx); +} + +static void format_set_option_inflation_destination_prepare(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.set_options_op.inflation_destination_present) { + push_to_formatter_stack(format_set_option_inflation_destination); + } else { + format_set_option_clear_flags_prepare(tx_ctx); + } +} + +static void format_set_options_empty_body(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "SET OPTIONS", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "BODY IS EMPTY", DETAIL_VALUE_MAX_LENGTH); + format_operation_source_prepare(tx_ctx); +} + +static bool is_empty_set_options_body(tx_ctx_t *tx_ctx) { + return !(tx_ctx->tx_details.op_details.set_options_op.inflation_destination_present || + tx_ctx->tx_details.op_details.set_options_op.clear_flags_present || + tx_ctx->tx_details.op_details.set_options_op.set_flags_present || + tx_ctx->tx_details.op_details.set_options_op.master_weight_present || + tx_ctx->tx_details.op_details.set_options_op.low_threshold_present || + tx_ctx->tx_details.op_details.set_options_op.medium_threshold_present || + tx_ctx->tx_details.op_details.set_options_op.high_threshold_present || + tx_ctx->tx_details.op_details.set_options_op.home_domain_present || + tx_ctx->tx_details.op_details.set_options_op.signer_present); +} + +static void format_set_options(tx_ctx_t *tx_ctx) { + // this operation is a special one among all operations, because all its fields are optional. + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Set Options", DETAIL_VALUE_MAX_LENGTH); + if (is_empty_set_options_body(tx_ctx)) { + push_to_formatter_stack(format_set_options_empty_body); + } else { + format_set_option_inflation_destination_prepare(tx_ctx); + } +} + +static void format_change_trust_limit(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Trust Limit", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.change_trust_op.limit, + NULL, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_change_trust_detail_liquidity_pool_fee(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Pool Fee Rate", DETAIL_CAPTION_MAX_LENGTH); + uint64_t fee = ((uint64_t) tx_ctx->tx_details.op_details.change_trust_op.line.liquidity_pool + .constant_product.fee * + 10000000) / + 100; + FORMATTER_CHECK( + print_amount(fee, NULL, tx_ctx->network, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + STRLCAT(G_ui_detail_value, "%", DETAIL_VALUE_MAX_LENGTH); + if (tx_ctx->tx_details.op_details.change_trust_op.limit && + tx_ctx->tx_details.op_details.change_trust_op.limit != INT64_MAX) { + push_to_formatter_stack(&format_change_trust_limit); + } else { + format_operation_source_prepare(tx_ctx); + } +} + +static void format_change_trust_detail_liquidity_pool_asset_b(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Asset B", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_asset( + &tx_ctx->tx_details.op_details.change_trust_op.line.liquidity_pool.constant_product.asset_b, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_change_trust_detail_liquidity_pool_fee); +} + +static void format_change_trust_detail_liquidity_pool_asset_a(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Asset A", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_asset( + &tx_ctx->tx_details.op_details.change_trust_op.line.liquidity_pool.constant_product.asset_a, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_change_trust_detail_liquidity_pool_asset_b); +} + +static void format_change_trust(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.change_trust_op.limit) { + STRLCPY(G_ui_detail_caption, "Change Trust", DETAIL_CAPTION_MAX_LENGTH); + } else { + STRLCPY(G_ui_detail_caption, "Remove Trust", DETAIL_CAPTION_MAX_LENGTH); + } + uint8_t asset_type = tx_ctx->tx_details.op_details.change_trust_op.line.type; + switch (asset_type) { + case ASSET_TYPE_CREDIT_ALPHANUM4: + case ASSET_TYPE_CREDIT_ALPHANUM12: + FORMATTER_CHECK( + print_asset((asset_t *) &tx_ctx->tx_details.op_details.change_trust_op.line, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + if (tx_ctx->tx_details.op_details.change_trust_op.limit && + tx_ctx->tx_details.op_details.change_trust_op.limit != INT64_MAX) { + push_to_formatter_stack(&format_change_trust_limit); + } else { + format_operation_source_prepare(tx_ctx); + } + break; + case ASSET_TYPE_POOL_SHARE: + STRLCPY(G_ui_detail_value, "Liquidity Pool Asset", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_change_trust_detail_liquidity_pool_asset_a); + break; + default: + THROW(SW_TX_FORMATTING_FAIL); + return; + } +} + +static void format_manage_sell_offer_price(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Price", DETAIL_CAPTION_MAX_LENGTH); + uint64_t price = + ((uint64_t) tx_ctx->tx_details.op_details.manage_sell_offer_op.price.n * 10000000) / + tx_ctx->tx_details.op_details.manage_sell_offer_op.price.d; + FORMATTER_CHECK( + print_amount(price, NULL, tx_ctx->network, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + STRLCAT(G_ui_detail_value, " ", DETAIL_VALUE_MAX_LENGTH); + char tmp_asset_code[13] = {0}; + FORMATTER_CHECK(print_asset_name(&tx_ctx->tx_details.op_details.manage_sell_offer_op.buying, + tx_ctx->network, + tmp_asset_code, + sizeof(tmp_asset_code))) + STRLCAT(G_ui_detail_value, tmp_asset_code, DETAIL_VALUE_MAX_LENGTH); + STRLCAT(G_ui_detail_value, "/", DETAIL_VALUE_MAX_LENGTH); + FORMATTER_CHECK(print_asset_name(&tx_ctx->tx_details.op_details.manage_sell_offer_op.selling, + tx_ctx->network, + tmp_asset_code, + sizeof(tmp_asset_code))) + STRLCAT(G_ui_detail_value, tmp_asset_code, DETAIL_VALUE_MAX_LENGTH); + format_operation_source_prepare(tx_ctx); +} + +static void format_manage_sell_offer_sell(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Sell", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.manage_sell_offer_op.amount, + &tx_ctx->tx_details.op_details.manage_sell_offer_op.selling, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_manage_sell_offer_price); +} + +static void format_manage_sell_offer_buy(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Buy", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_asset(&tx_ctx->tx_details.op_details.manage_sell_offer_op.buying, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_manage_sell_offer_sell); +} + +static void format_manage_sell_offer(tx_ctx_t *tx_ctx) { + if (!tx_ctx->tx_details.op_details.manage_sell_offer_op.amount) { + STRLCPY(G_ui_detail_caption, "Remove Offer", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.op_details.manage_sell_offer_op.offer_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); + } else { + if (tx_ctx->tx_details.op_details.manage_sell_offer_op.offer_id) { + STRLCPY(G_ui_detail_caption, "Change Offer", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.op_details.manage_sell_offer_op.offer_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + } else { + STRLCPY(G_ui_detail_caption, "Create Offer", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Type Active", DETAIL_VALUE_MAX_LENGTH); + } + push_to_formatter_stack(&format_manage_sell_offer_buy); + } +} + +static void format_manage_buy_offer_price(tx_ctx_t *tx_ctx) { + manage_buy_offer_op_t *op = &tx_ctx->tx_details.op_details.manage_buy_offer_op; + + STRLCPY(G_ui_detail_caption, "Price", DETAIL_CAPTION_MAX_LENGTH); + uint64_t price = ((uint64_t) op->price.n * 10000000) / op->price.d; + FORMATTER_CHECK( + print_amount(price, NULL, tx_ctx->network, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + STRLCAT(G_ui_detail_value, " ", DETAIL_VALUE_MAX_LENGTH); + char tmp_asset_code[13] = {0}; + FORMATTER_CHECK(print_asset_name(&tx_ctx->tx_details.op_details.manage_buy_offer_op.selling, + tx_ctx->network, + tmp_asset_code, + sizeof(tmp_asset_code))) + STRLCAT(G_ui_detail_value, tmp_asset_code, DETAIL_VALUE_MAX_LENGTH); + STRLCAT(G_ui_detail_value, "/", DETAIL_VALUE_MAX_LENGTH); + FORMATTER_CHECK(print_asset_name(&tx_ctx->tx_details.op_details.manage_buy_offer_op.buying, + tx_ctx->network, + tmp_asset_code, + sizeof(tmp_asset_code))) + STRLCAT(G_ui_detail_value, tmp_asset_code, DETAIL_VALUE_MAX_LENGTH); + format_operation_source_prepare(tx_ctx); +} + +static void format_manage_buy_offer_buy(tx_ctx_t *tx_ctx) { + manage_buy_offer_op_t *op = &tx_ctx->tx_details.op_details.manage_buy_offer_op; + + STRLCPY(G_ui_detail_caption, "Buy", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_amount(op->buy_amount, + &op->buying, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_manage_buy_offer_price); +} + +static void format_manage_buy_offer_sell(tx_ctx_t *tx_ctx) { + manage_buy_offer_op_t *op = &tx_ctx->tx_details.op_details.manage_buy_offer_op; + + STRLCPY(G_ui_detail_caption, "Sell", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_asset(&op->selling, tx_ctx->network, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_manage_buy_offer_buy); +} + +static void format_manage_buy_offer(tx_ctx_t *tx_ctx) { + manage_buy_offer_op_t *op = &tx_ctx->tx_details.op_details.manage_buy_offer_op; + + if (op->buy_amount == 0) { + STRLCPY(G_ui_detail_caption, "Remove Offer", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(op->offer_id, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); + } else { + if (op->offer_id) { + STRLCPY(G_ui_detail_caption, "Change Offer", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_uint(op->offer_id, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + } else { + STRLCPY(G_ui_detail_caption, "Create Offer", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Type Active", DETAIL_VALUE_MAX_LENGTH); + } + push_to_formatter_stack(&format_manage_buy_offer_sell); + } +} + +static void format_create_passive_sell_offer_price(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Price", DETAIL_CAPTION_MAX_LENGTH); + + create_passive_sell_offer_op_t *op = + &tx_ctx->tx_details.op_details.create_passive_sell_offer_op; + uint64_t price = ((uint64_t) op->price.n * 10000000) / op->price.d; + FORMATTER_CHECK( + print_amount(price, NULL, tx_ctx->network, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + STRLCAT(G_ui_detail_value, " ", DETAIL_VALUE_MAX_LENGTH); + char tmp_asset_code[13] = {0}; + FORMATTER_CHECK( + print_asset_name(&tx_ctx->tx_details.op_details.create_passive_sell_offer_op.buying, + tx_ctx->network, + tmp_asset_code, + sizeof(tmp_asset_code))) + STRLCAT(G_ui_detail_value, tmp_asset_code, DETAIL_VALUE_MAX_LENGTH); + STRLCAT(G_ui_detail_value, "/", DETAIL_VALUE_MAX_LENGTH); + FORMATTER_CHECK( + print_asset_name(&tx_ctx->tx_details.op_details.create_passive_sell_offer_op.selling, + tx_ctx->network, + tmp_asset_code, + sizeof(tmp_asset_code))) + STRLCAT(G_ui_detail_value, tmp_asset_code, DETAIL_VALUE_MAX_LENGTH); + format_operation_source_prepare(tx_ctx); +} + +static void format_create_passive_sell_offer_sell(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Sell", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.create_passive_sell_offer_op.amount, + &tx_ctx->tx_details.op_details.create_passive_sell_offer_op.selling, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_create_passive_sell_offer_price); +} + +static void format_create_passive_sell_offer_buy(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Buy", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_asset(&tx_ctx->tx_details.op_details.create_passive_sell_offer_op.buying, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_create_passive_sell_offer_sell); +} + +static void format_create_passive_sell_offer(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Create Passive Sell Offer", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_create_passive_sell_offer_buy); +} + +static void format_path_payment_strict_receive_receive(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Receive", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.path_payment_strict_receive_op.dest_amount, + &tx_ctx->tx_details.op_details.path_payment_strict_receive_op.dest_asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_path_payment_strict_receive_destination(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Destination", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_muxed_account( + &tx_ctx->tx_details.op_details.path_payment_strict_receive_op.destination, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_path_payment_strict_receive_receive); +} + +static void format_path_payment_strict_receive(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Send Max", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.path_payment_strict_receive_op.send_max, + &tx_ctx->tx_details.op_details.path_payment_strict_receive_op.send_asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_path_payment_strict_receive_destination); +} + +static void format_path_payment_strict_send_receive(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Receive Min", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.path_payment_strict_send_op.dest_min, + &tx_ctx->tx_details.op_details.path_payment_strict_send_op.dest_asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_path_payment_strict_send_destination(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Destination", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_muxed_account(&tx_ctx->tx_details.op_details.path_payment_strict_send_op.destination, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_path_payment_strict_send_receive); +} + +static void format_path_payment_strict_send(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Send", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.path_payment_strict_send_op.send_amount, + &tx_ctx->tx_details.op_details.path_payment_strict_send_op.send_asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_path_payment_strict_send_destination); +} + +static void format_payment_destination(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Destination", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.op_details.payment_op.destination, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_operation_source_prepare(tx_ctx); +} + +static void format_payment(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Send", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.payment_op.amount, + &tx_ctx->tx_details.op_details.payment_op.asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_payment_destination); +} + +static void format_create_account_amount(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Starting Balance", DETAIL_CAPTION_MAX_LENGTH); + asset_t asset = {.type = ASSET_TYPE_NATIVE}; + FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.create_account_op.starting_balance, + &asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_create_account_destination(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Destination", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_id(tx_ctx->tx_details.op_details.create_account_op.destination, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_create_account_amount); +} + +static void format_create_account(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Create Account", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_create_account_destination); +} + +void format_create_claimable_balance_warning(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + // TODO: The claimant can be very complicated. I haven't figured out how to + // display it for the time being, so let's display an WARNING here first. + STRLCPY(G_ui_detail_caption, "WARNING", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, + "Currently does not support displaying claimant details", + DETAIL_VALUE_MAX_LENGTH); + format_operation_source_prepare(tx_ctx); +} + +static void format_create_claimable_balance_balance(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Balance", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.create_claimable_balance_op.amount, + &tx_ctx->tx_details.op_details.create_claimable_balance_op.asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_create_claimable_balance_warning); +} + +static void format_create_claimable_balance(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Create Claimable Balance", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_create_claimable_balance_balance); +} + +static void format_claim_claimable_balance_balance_id(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Balance ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_claimable_balance_id( + &tx_ctx->tx_details.op_details.claim_claimable_balance_op.balance_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 12, + 12)) + format_operation_source_prepare(tx_ctx); +} + +static void format_claim_claimable_balance(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Claim Claimable Balance", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_claim_claimable_balance_balance_id); +} + +static void format_claim_claimable_balance_sponsored_id(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Sponsored ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_id( + tx_ctx->tx_details.op_details.begin_sponsoring_future_reserves_op.sponsored_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_operation_source_prepare(tx_ctx); +} + +static void format_begin_sponsoring_future_reserves(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Begin Sponsoring Future Reserves", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_claim_claimable_balance_sponsored_id); +} + +static void format_end_sponsoring_future_reserves(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "End Sponsoring Future Reserves", DETAIL_VALUE_MAX_LENGTH); + format_operation_source_prepare(tx_ctx); +} + +static void format_revoke_sponsorship_account(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Account ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_id( + tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.account.account_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_operation_source_prepare(tx_ctx); +} + +static void format_revoke_sponsorship_trust_line_asset(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.trust_line.asset.type == + ASSET_TYPE_POOL_SHARE) { + STRLCPY(G_ui_detail_caption, "Liquidity Pool ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_binary(tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key + .trust_line.asset.liquidity_pool_id, + LIQUIDITY_POOL_ID_SIZE, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + } else { + STRLCPY(G_ui_detail_caption, "Asset", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_asset((asset_t *) &tx_ctx->tx_details.op_details.revoke_sponsorship_op + .ledger_key.trust_line.asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + } + format_operation_source_prepare(tx_ctx); +} + +static void format_revoke_sponsorship_trust_line_account(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Account ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_id( + tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.trust_line.account_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_revoke_sponsorship_trust_line_asset); +} +static void format_revoke_sponsorship_offer_offer_id(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Offer ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_uint(tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.offer.offer_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + + format_operation_source_prepare(tx_ctx); +} + +static void format_revoke_sponsorship_offer_seller_id(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Seller ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_id( + tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.offer.seller_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_revoke_sponsorship_offer_offer_id); +} + +static void format_revoke_sponsorship_data_data_name(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Data Name", DETAIL_CAPTION_MAX_LENGTH); + + _Static_assert(DATA_NAME_MAX_SIZE + 1 < DETAIL_VALUE_MAX_LENGTH, + "DATA_NAME_MAX_SIZE must be smaller than DETAIL_VALUE_MAX_LENGTH"); + + memcpy(G_ui_detail_value, + tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.data.data_name, + tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.data.data_name_size); + G_ui_detail_value[tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.data + .data_name_size] = '\0'; + format_operation_source_prepare(tx_ctx); +} + +static void format_revoke_sponsorship_data_account(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Account ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_id( + tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.data.account_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_revoke_sponsorship_data_data_name); +} + +static void format_revoke_sponsorship_claimable_balance(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Balance ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_claimable_balance_id(&tx_ctx->tx_details.op_details.revoke_sponsorship_op + .ledger_key.claimable_balance.balance_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_operation_source_prepare(tx_ctx); +} + +static void format_revoke_sponsorship_liquidity_pool(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Liquidity Pool ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_binary(tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key + .liquidity_pool.liquidity_pool_id, + LIQUIDITY_POOL_ID_SIZE, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_operation_source_prepare(tx_ctx); +} + +static void format_revoke_sponsorship_claimable_signer_signer_key_detail(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Signer Key", DETAIL_CAPTION_MAX_LENGTH); + signer_key_t *key = &tx_ctx->tx_details.op_details.revoke_sponsorship_op.signer.signer_key; + + switch (key->type) { + case SIGNER_KEY_TYPE_ED25519: { + FORMATTER_CHECK( + print_account_id(key->ed25519, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH, 0, 0)) + break; + } + case SIGNER_KEY_TYPE_HASH_X: { + FORMATTER_CHECK( + encode_hash_x_key(key->hash_x, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + break; + } + case SIGNER_KEY_TYPE_PRE_AUTH_TX: { + FORMATTER_CHECK( + encode_pre_auth_x_key(key->pre_auth_tx, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + break; + } + default: + THROW(SW_TX_FORMATTING_FAIL); + return; + } + format_operation_source_prepare(tx_ctx); +} + +static void format_revoke_sponsorship_claimable_signer_signer_key_type(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Signer Key Type", DETAIL_CAPTION_MAX_LENGTH); + switch (tx_ctx->tx_details.op_details.revoke_sponsorship_op.signer.signer_key.type) { + case SIGNER_KEY_TYPE_ED25519: { + STRLCPY(G_ui_detail_value, "Public Key", DETAIL_VALUE_MAX_LENGTH); + break; + } + case SIGNER_KEY_TYPE_HASH_X: { + STRLCPY(G_ui_detail_value, "Hash(x)", DETAIL_VALUE_MAX_LENGTH); + break; + } + case SIGNER_KEY_TYPE_PRE_AUTH_TX: { + STRLCPY(G_ui_detail_value, "Pre-Auth", DETAIL_VALUE_MAX_LENGTH); + break; + } + default: + THROW(SW_TX_FORMATTING_FAIL); + return; + } + + push_to_formatter_stack(&format_revoke_sponsorship_claimable_signer_signer_key_detail); +} + +static void format_revoke_sponsorship_claimable_signer_account(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Account ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_account_id(tx_ctx->tx_details.op_details.revoke_sponsorship_op.signer.account_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_revoke_sponsorship_claimable_signer_signer_key_type); +} + +static void format_revoke_sponsorship(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + if (tx_ctx->tx_details.op_details.revoke_sponsorship_op.type == REVOKE_SPONSORSHIP_SIGNER) { + STRLCPY(G_ui_detail_value, "Revoke Sponsorship (SIGNER_KEY)", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_revoke_sponsorship_claimable_signer_account); + } else { + switch (tx_ctx->tx_details.op_details.revoke_sponsorship_op.ledger_key.type) { + case ACCOUNT: + STRLCPY(G_ui_detail_value, "Revoke Sponsorship (ACCOUNT)", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_revoke_sponsorship_account); + break; + case OFFER: + STRLCPY(G_ui_detail_value, "Revoke Sponsorship (OFFER)", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_revoke_sponsorship_offer_seller_id); + break; + case TRUSTLINE: + STRLCPY(G_ui_detail_value, + "Revoke Sponsorship (TRUSTLINE)", + DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_revoke_sponsorship_trust_line_account); + break; + case DATA: + STRLCPY(G_ui_detail_value, "Revoke Sponsorship (DATA)", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_revoke_sponsorship_data_account); + break; + case CLAIMABLE_BALANCE: + STRLCPY(G_ui_detail_value, + "Revoke Sponsorship (CLAIMABLE_BALANCE)", + DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_revoke_sponsorship_claimable_balance); + break; + case LIQUIDITY_POOL: + STRLCPY(G_ui_detail_value, + "Revoke Sponsorship (LIQUIDITY_POOL)", + DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_revoke_sponsorship_liquidity_pool); + break; + default: + THROW(SW_TX_FORMATTING_FAIL); + break; + } + } +} + +static void format_clawback_from(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "From", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_muxed_account(&tx_ctx->tx_details.op_details.clawback_op.from, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_operation_source_prepare(tx_ctx); +} + +static void format_clawback_amount(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Clawback Balance", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.clawback_op.amount, + &tx_ctx->tx_details.op_details.clawback_op.asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_clawback_from); +} + +static void format_clawback(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Clawback", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_clawback_amount); +} + +static void format_clawback_claimable_balance_balance_id(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Balance ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_claimable_balance_id( + &tx_ctx->tx_details.op_details.clawback_claimable_balance_op.balance_id, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + format_operation_source_prepare(tx_ctx); +} + +static void format_clawback_claimable_balance(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Clawback Claimable Balance", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_clawback_claimable_balance_balance_id); +} + +static void format_set_trust_line_set_flags(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Set Flags", DETAIL_CAPTION_MAX_LENGTH); + if (tx_ctx->tx_details.op_details.set_trust_line_flags_op.set_flags) { + FORMATTER_CHECK( + print_trust_line_flags(tx_ctx->tx_details.op_details.set_trust_line_flags_op.set_flags, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + } else { + STRLCPY(G_ui_detail_value, "[none]", DETAIL_VALUE_MAX_LENGTH); + } + format_operation_source_prepare(tx_ctx); +} + +static void format_set_trust_line_clear_flags(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Clear Flags", DETAIL_CAPTION_MAX_LENGTH); + if (tx_ctx->tx_details.op_details.set_trust_line_flags_op.clear_flags) { + FORMATTER_CHECK(print_trust_line_flags( + tx_ctx->tx_details.op_details.set_trust_line_flags_op.clear_flags, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + } else { + STRLCPY(G_ui_detail_value, "[none]", DETAIL_VALUE_MAX_LENGTH); + } + push_to_formatter_stack(&format_set_trust_line_set_flags); +} + +static void format_set_trust_line_asset(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Asset", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_asset(&tx_ctx->tx_details.op_details.set_trust_line_flags_op.asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_set_trust_line_clear_flags); +} + +static void format_set_trust_line_trustor(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Trustor", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_account_id(tx_ctx->tx_details.op_details.set_trust_line_flags_op.trustor, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_set_trust_line_asset); +} + +static void format_set_trust_line_flags(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Set Trust Line Flags", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_set_trust_line_trustor); +} + +static void format_liquidity_pool_deposit_max_price(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Max Price", DETAIL_CAPTION_MAX_LENGTH); + uint64_t price = + ((uint64_t) tx_ctx->tx_details.op_details.liquidity_pool_deposit_op.max_price.n * + 10000000) / + tx_ctx->tx_details.op_details.liquidity_pool_deposit_op.max_price.d; + FORMATTER_CHECK( + print_amount(price, NULL, tx_ctx->network, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_liquidity_pool_deposit_min_price(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Min Price", DETAIL_CAPTION_MAX_LENGTH); + uint64_t price = + ((uint64_t) tx_ctx->tx_details.op_details.liquidity_pool_deposit_op.min_price.n * + 10000000) / + tx_ctx->tx_details.op_details.liquidity_pool_deposit_op.min_price.d; + FORMATTER_CHECK( + print_amount(price, NULL, tx_ctx->network, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_liquidity_pool_deposit_max_price); +} + +static void format_liquidity_pool_deposit_max_amount_b(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Max Amount B", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.liquidity_pool_deposit_op.max_amount_b, + NULL, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_liquidity_pool_deposit_min_price); +} + +static void format_liquidity_pool_deposit_max_amount_a(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Max Amount A", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.liquidity_pool_deposit_op.max_amount_a, + NULL, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_liquidity_pool_deposit_max_amount_b); +} + +static void format_liquidity_pool_deposit_liquidity_pool_id(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Liquidity Pool ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_binary(tx_ctx->tx_details.op_details.liquidity_pool_deposit_op.liquidity_pool_id, + LIQUIDITY_POOL_ID_SIZE, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_liquidity_pool_deposit_max_amount_a); +} + +static void format_liquidity_pool_deposit(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Liquidity Pool Deposit", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_liquidity_pool_deposit_liquidity_pool_id); +} + +static void format_liquidity_pool_withdraw_min_amount_b(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Min Amount B", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.liquidity_pool_withdraw_op.min_amount_b, + NULL, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + format_operation_source_prepare(tx_ctx); +} + +static void format_liquidity_pool_withdraw_min_amount_a(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Min Amount A", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_amount(tx_ctx->tx_details.op_details.liquidity_pool_withdraw_op.min_amount_a, + NULL, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_liquidity_pool_withdraw_min_amount_b); +} + +static void format_liquidity_pool_withdraw_amount(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Amount", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.liquidity_pool_withdraw_op.amount, + NULL, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_liquidity_pool_withdraw_min_amount_a); +} + +static void format_liquidity_pool_withdraw_liquidity_pool_id(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Liquidity Pool ID", DETAIL_CAPTION_MAX_LENGTH); + FORMATTER_CHECK( + print_binary(tx_ctx->tx_details.op_details.liquidity_pool_withdraw_op.liquidity_pool_id, + LIQUIDITY_POOL_ID_SIZE, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + push_to_formatter_stack(&format_liquidity_pool_withdraw_amount); +} + +static void format_liquidity_pool_withdraw(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Operation Type", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Liquidity Pool Withdraw", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_liquidity_pool_withdraw_liquidity_pool_id); +} + +static const format_function_t formatters[] = {&format_create_account, + &format_payment, + &format_path_payment_strict_receive, + &format_manage_sell_offer, + &format_create_passive_sell_offer, + &format_set_options, + &format_change_trust, + &format_allow_trust, + &format_account_merge, + &format_inflation, + &format_manage_data, + &format_bump_sequence, + &format_manage_buy_offer, + &format_path_payment_strict_send, + &format_create_claimable_balance, + &format_claim_claimable_balance, + &format_begin_sponsoring_future_reserves, + &format_end_sponsoring_future_reserves, + &format_revoke_sponsorship, + &format_clawback, + &format_clawback_claimable_balance, + &format_set_trust_line_flags, + &format_liquidity_pool_deposit, + &format_liquidity_pool_withdraw}; + +void format_confirm_operation(tx_ctx_t *tx_ctx) { + if (tx_ctx->tx_details.operations_count > 1) { + size_t len; + STRLCPY(op_caption, "Operation ", OPERATION_CAPTION_MAX_LENGTH); + len = strlen(op_caption); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.operation_index, + op_caption + len, + OPERATION_CAPTION_MAX_LENGTH - len)) + STRLCAT(op_caption, " of ", sizeof(op_caption)); + len = strlen(op_caption); + FORMATTER_CHECK(print_uint(tx_ctx->tx_details.operations_count, + op_caption + len, + OPERATION_CAPTION_MAX_LENGTH - len)) + push_to_formatter_stack( + ((format_function_t) PIC(formatters[tx_ctx->tx_details.op_details.type]))); + } else { + ((format_function_t) PIC(formatters[tx_ctx->tx_details.op_details.type]))(tx_ctx); + } +} + +static void format_fee_bump_transaction_fee(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Max Fee", DETAIL_CAPTION_MAX_LENGTH); + asset_t asset = {.type = ASSET_TYPE_NATIVE}; + FORMATTER_CHECK(print_amount(tx_ctx->fee_bump_tx_details.fee, + &asset, + tx_ctx->network, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH)) + push_to_formatter_stack(&format_transaction_details); +} + +static void format_fee_bump_transaction_source(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Fee Source", DETAIL_CAPTION_MAX_LENGTH); + if (tx_ctx->envelope_type == ENVELOPE_TYPE_TX_FEE_BUMP && + tx_ctx->fee_bump_tx_details.fee_source.type == KEY_TYPE_ED25519 && + memcmp(tx_ctx->fee_bump_tx_details.fee_source.ed25519, + G_context.raw_public_key, + RAW_ED25519_PUBLIC_KEY_SIZE) == 0) { + FORMATTER_CHECK(print_muxed_account(&tx_ctx->fee_bump_tx_details.fee_source, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 6, + 6)) + } else { + FORMATTER_CHECK(print_muxed_account(&tx_ctx->fee_bump_tx_details.fee_source, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + } + push_to_formatter_stack(&format_fee_bump_transaction_fee); +} + +static void format_fee_bump_transaction_details(tx_ctx_t *tx_ctx) { + (void) tx_ctx; + STRLCPY(G_ui_detail_caption, "Fee Bump", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, "Transaction Details", DETAIL_VALUE_MAX_LENGTH); + push_to_formatter_stack(&format_fee_bump_transaction_source); +} + +static format_function_t get_tx_details_formatter(tx_ctx_t *tx_ctx) { + if (tx_ctx->envelope_type == ENVELOPE_TYPE_TX_FEE_BUMP) { + return &format_fee_bump_transaction_details; + } + + if (tx_ctx->envelope_type == ENVELOPE_TYPE_TX) { + if (tx_ctx->tx_details.memo.type != MEMO_NONE) { + return &format_memo; + } else { + return &format_fee; + } + } + + THROW(SW_TX_FORMATTING_FAIL); + return NULL; +} + +static void format_network(tx_ctx_t *tx_ctx) { + STRLCPY(G_ui_detail_caption, "Network", DETAIL_CAPTION_MAX_LENGTH); + STRLCPY(G_ui_detail_value, + (char *) PIC(NETWORK_NAMES[tx_ctx->network]), + DETAIL_VALUE_MAX_LENGTH); + format_function_t formatter = get_tx_details_formatter(tx_ctx); + push_to_formatter_stack(formatter); +} + +static format_function_t get_tx_formatter(tx_ctx_t *tx_ctx) { + if (tx_ctx->network != 0) { + return &format_network; + } else { + return get_tx_details_formatter(tx_ctx); + } +} + +format_function_t get_formatter(tx_ctx_t *tx_ctx, bool forward) { + if (!forward) { + if (G_ui_current_data_index == + 0) { // if we're already at the beginning of the buffer, return NULL + return NULL; + } + // rewind to tx beginning if we're requesting a previous operation + tx_ctx->offset = 0; + tx_ctx->tx_details.operation_index = 0; + } + + if (G_ui_current_data_index == 1) { + return get_tx_formatter(tx_ctx); + } + + // 1 == data_count_before_ops + while (G_ui_current_data_index - 1 > tx_ctx->tx_details.operation_index) { + if (!parse_tx_xdr(tx_ctx->raw, tx_ctx->raw_size, tx_ctx)) { + return NULL; + } + } + return &format_confirm_operation; +} + +void ui_approve_tx_next_screen(tx_ctx_t *tx_ctx) { + if (!formatter_stack[formatter_index]) { + explicit_bzero(formatter_stack, sizeof(formatter_stack)); + formatter_index = 0; + G_ui_current_data_index++; + formatter_stack[0] = get_formatter(tx_ctx, true); + } +} + +void ui_approve_tx_prev_screen(tx_ctx_t *tx_ctx) { + if (formatter_index == -1) { + explicit_bzero(formatter_stack, sizeof(formatter_stack)); + formatter_index = 0; + G_ui_current_data_index--; + formatter_stack[0] = get_formatter(tx_ctx, false); + } +} + +void set_state_data(bool forward) { + PRINTF("set_state_data invoked, forward = %d\n", forward); + if (forward) { + ui_approve_tx_next_screen(&G_context.tx_info); + } else { + ui_approve_tx_prev_screen(&G_context.tx_info); + } + + // Apply last formatter to fill the screen's buffer + if (formatter_stack[formatter_index]) { + explicit_bzero(G_ui_detail_caption, sizeof(G_ui_detail_caption)); + explicit_bzero(G_ui_detail_value, sizeof(G_ui_detail_value)); + explicit_bzero(op_caption, sizeof(op_caption)); + formatter_stack[formatter_index](&G_context.tx_info); + + if (op_caption[0] != '\0') { + STRLCPY(G_ui_detail_caption, op_caption, sizeof(G_ui_detail_caption)); + G_ui_detail_value[0] = ' '; + } + } +} diff --git a/src/transaction/transaction_formatter.h b/src/transaction/transaction_formatter.h new file mode 100644 index 00000000..bb48c2db --- /dev/null +++ b/src/transaction/transaction_formatter.h @@ -0,0 +1,27 @@ +#pragma once + +#include // bool + +#include "../globals.h" + +/* + * Longest string will be "Operation ii of nn" + */ +#define OPERATION_CAPTION_MAX_LENGTH 20 + +/* + * the formatter prints the details and defines the order of the details + * by setting the next formatter to be called + */ +typedef void (*format_function_t)(tx_ctx_t *tx_ctx); + +/* 16 formatters in a row ought to be enough for everybody*/ +#define MAX_FORMATTERS_PER_OPERATION 16 + +/* the current formatter */ +extern format_function_t formatter_stack[MAX_FORMATTERS_PER_OPERATION]; +/* the current details printed by the formatter */ +extern char op_caption[OPERATION_CAPTION_MAX_LENGTH]; +extern int8_t formatter_index; + +void set_state_data(bool forward); diff --git a/src/transaction/transaction_parser.c b/src/transaction/transaction_parser.c new file mode 100644 index 00000000..7a89e8a7 --- /dev/null +++ b/src/transaction/transaction_parser.c @@ -0,0 +1,1036 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include +#include + +#include "os.h" + +#include "./transaction_parser.h" +#include "../types.h" +#include "../sw.h" +#include "../common/buffer.h" + +#define PARSER_CHECK(x) \ + { \ + if (!(x)) return false; \ + } + +/* SHA256("Public Global Stellar Network ; September 2015") */ +static const uint8_t NETWORK_ID_PUBLIC_HASH[32] = { + 0x7a, 0xc3, 0x39, 0x97, 0x54, 0x4e, 0x31, 0x75, 0xd2, 0x66, 0xbd, 0x02, 0x24, 0x39, 0xb2, 0x2c, + 0xdb, 0x16, 0x50, 0x8c, 0x01, 0x16, 0x3f, 0x26, 0xe5, 0xcb, 0x2a, 0x3e, 0x10, 0x45, 0xa9, 0x79}; + +/* SHA256("Test SDF Network ; September 2015") */ +static const uint8_t NETWORK_ID_TEST_HASH[32] = { + 0xce, 0xe0, 0x30, 0x2d, 0x59, 0x84, 0x4d, 0x32, 0xbd, 0xca, 0x91, 0x5c, 0x82, 0x03, 0xdd, 0x44, + 0xb3, 0x3f, 0xbb, 0x7e, 0xdc, 0x19, 0x05, 0x1e, 0xa3, 0x7a, 0xbe, 0xdf, 0x28, 0xec, 0xd4, 0x72}; + +static bool buffer_advance(buffer_t *buffer, size_t num_bytes) { + return buffer_seek_cur(buffer, num_bytes); +} + +static bool buffer_read32(buffer_t *buffer, uint32_t *n) { + return buffer_read_u32(buffer, n, BE); +} + +static bool buffer_read64(buffer_t *buffer, uint64_t *n) { + return buffer_read_u64(buffer, n, BE); +} + +static bool buffer_read_bool(buffer_t *buffer, bool *b) { + uint32_t val; + + if (!buffer_read32(buffer, &val)) { + return false; + } + if (val != 0 && val != 1) { + return false; + } + *b = val == 1 ? true : false; + return true; +} + +static bool buffer_read_bytes(buffer_t *buffer, uint8_t *out, size_t size) { + if (buffer->size - buffer->offset < size) { + return false; + } + memcpy(out, buffer->ptr + buffer->offset, size); + buffer->offset += size; + return true; +} + +static size_t num_bytes(size_t size) { + size_t remainder = size % 4; + if (remainder == 0) { + return size; + } + return size + 4 - remainder; +} + +static bool check_padding(const uint8_t *buffer, size_t offset, size_t length) { + unsigned int i; + for (i = 0; i < length - offset; i++) { + if (buffer[offset + i] != 0x00) { + return false; + } + } + return true; +} + +bool parse_binary_string_ptr(buffer_t *buffer, + const uint8_t **string, + size_t *out_len, + size_t max_length) { + /* max_length does not include terminal null character */ + uint32_t size; + + if (!buffer_read32(buffer, &size)) { + return false; + } + if (size > max_length || !buffer_can_read(buffer, num_bytes(size))) { + return false; + } + if (!check_padding(buffer->ptr + buffer->offset, size, + num_bytes(size))) { // security check + return false; + } + *string = (uint8_t *) buffer->ptr + buffer->offset; + if (out_len) { + *out_len = size; + } + PARSER_CHECK(buffer_advance(buffer, num_bytes(size))) + return true; +} + +typedef bool (*xdr_type_reader)(buffer_t *, void *); + +bool parse_optional_type(buffer_t *buffer, xdr_type_reader reader, void *dst, bool *opted) { + bool is_present; + + if (!buffer_read_bool(buffer, &is_present)) { + return false; + } + if (is_present) { + if (opted) { + *opted = true; + } + return reader(buffer, dst); + } else { + if (opted) { + *opted = false; + } + return true; + } +} + +bool parse_signer_key(buffer_t *buffer, signer_key_t *key) { + uint32_t signer_type; + + PARSER_CHECK(buffer_read32(buffer, &signer_type)) + key->type = signer_type; + + switch (signer_type) { + case SIGNER_KEY_TYPE_ED25519: + PARSER_CHECK(buffer_can_read(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + key->ed25519 = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + return true; + case SIGNER_KEY_TYPE_PRE_AUTH_TX: + PARSER_CHECK(buffer_can_read(buffer, RAW_PRE_AUTH_TX_KEY_SIZE)) + key->pre_auth_tx = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, RAW_PRE_AUTH_TX_KEY_SIZE)) + return true; + case SIGNER_KEY_TYPE_HASH_X: + PARSER_CHECK(buffer_can_read(buffer, RAW_HASH_X_KEY_SIZE)) + key->hash_x = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, RAW_HASH_X_KEY_SIZE)) + return true; + case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD: + PARSER_CHECK(buffer_can_read(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + key->ed25519_signed_payload.ed25519 = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + uint32_t payload_length; + PARSER_CHECK(buffer_read32(buffer, &payload_length)) + // valid length [1, 64] + if (payload_length == 0 || payload_length > 64) { + return false; + } + key->ed25519_signed_payload.payload_len = payload_length; + payload_length += (4 - payload_length % 4) % 4; + PARSER_CHECK(buffer_can_read(buffer, payload_length)) + key->ed25519_signed_payload.payload = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, payload_length)) + return true; + default: + return false; + } +} + +bool parse_account_id(buffer_t *buffer, const uint8_t **account_id) { + uint32_t account_type; + + PARSER_CHECK(buffer_read32(buffer, &account_type) || account_type != PUBLIC_KEY_TYPE_ED25519) + PARSER_CHECK(buffer_can_read(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + *account_id = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + return true; +} + +bool parse_muxed_account(buffer_t *buffer, muxed_account_t *muxed_account) { + uint32_t crypto_key_type; + PARSER_CHECK(buffer_read32(buffer, &crypto_key_type)) + muxed_account->type = crypto_key_type; + + switch (muxed_account->type) { + case KEY_TYPE_ED25519: + PARSER_CHECK(buffer_can_read(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + muxed_account->ed25519 = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + return true; + case KEY_TYPE_MUXED_ED25519: + PARSER_CHECK(buffer_read64(buffer, &muxed_account->med25519.id)) + PARSER_CHECK(buffer_can_read(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + muxed_account->med25519.ed25519 = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, RAW_ED25519_PUBLIC_KEY_SIZE)) + return true; + default: + return false; + } +} + +bool parse_time_bounds(buffer_t *buffer, time_bounds_t *bounds) { + PARSER_CHECK(buffer_read64(buffer, &bounds->min_time)) + return buffer_read64(buffer, &bounds->max_time); +} + +bool parse_ledger_bounds(buffer_t *buffer, ledger_bounds_t *ledger_bounds) { + PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &ledger_bounds->min_ledger)) + PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &ledger_bounds->max_ledger)) + return true; +} + +bool parse_extra_signers(buffer_t *buffer) { + uint32_t length; + PARSER_CHECK(buffer_read32(buffer, &length)) + if (length > 2) { // maximum length is 2 + return false; + } + signer_key_t signer_key; + for (uint32_t i = 0; i < length; i++) { + PARSER_CHECK(parse_signer_key(buffer, &signer_key)) + } + return true; +} + +bool parse_preconditions(buffer_t *buffer, preconditions_t *cond) { + uint32_t precondition_type; + PARSER_CHECK(buffer_read32(buffer, &precondition_type)) + switch (precondition_type) { + case PRECOND_NONE: + cond->time_bounds_present = false; + cond->min_seq_num_present = false; + cond->ledger_bounds_present = false; + cond->min_seq_ledger_gap = 0; + cond->min_seq_age = 0; + return true; + case PRECOND_TIME: + cond->time_bounds_present = true; + PARSER_CHECK(parse_time_bounds(buffer, &cond->time_bounds)) + cond->min_seq_num_present = false; + cond->ledger_bounds_present = false; + cond->min_seq_ledger_gap = 0; + cond->min_seq_age = 0; + return true; + case PRECOND_V2: + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) parse_time_bounds, + &cond->time_bounds, + &cond->time_bounds_present)) + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) parse_ledger_bounds, + &cond->ledger_bounds, + &cond->ledger_bounds_present)) + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) buffer_read64, + (uint64_t *) &cond->min_seq_num, + &cond->min_seq_num_present)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &cond->min_seq_age)) + PARSER_CHECK(buffer_read32(buffer, &cond->min_seq_ledger_gap)) + PARSER_CHECK(parse_extra_signers(buffer)) + return true; + default: + return false; + } +} + +bool parse_memo(buffer_t *buffer, memo_t *memo) { + uint32_t type; + + if (!buffer_read32(buffer, &type)) { + return 0; + } + memo->type = type; + switch (memo->type) { + case MEMO_NONE: + return true; + case MEMO_ID: + return buffer_read64(buffer, &memo->id); + case MEMO_TEXT: { + size_t size; + PARSER_CHECK( + parse_binary_string_ptr(buffer, (const uint8_t **) &memo->text.text, &size, 28)) + memo->text.text_size = size; + return true; + } + case MEMO_HASH: + PARSER_CHECK(buffer_can_read(buffer, HASH_SIZE)) + memo->hash = buffer->ptr + buffer->offset; + buffer->offset += HASH_SIZE; + return true; + case MEMO_RETURN: + PARSER_CHECK(buffer_can_read(buffer, HASH_SIZE)) + memo->return_hash = buffer->ptr + buffer->offset; + buffer->offset += HASH_SIZE; + return true; + default: + return false; // unknown memo type + } +} + +bool parse_alpha_num4_asset(buffer_t *buffer, alpha_num4_t *asset) { + PARSER_CHECK(buffer_can_read(buffer, 4)) + asset->asset_code = (const char *) buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, 4)) + PARSER_CHECK(parse_account_id(buffer, &asset->issuer)) + return true; +} + +bool parse_alpha_num12_asset(buffer_t *buffer, alpha_num12_t *asset) { + PARSER_CHECK(buffer_can_read(buffer, 12)) + asset->asset_code = (const char *) buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, 12)) + PARSER_CHECK(parse_account_id(buffer, &asset->issuer)) + return true; +} + +bool parse_asset(buffer_t *buffer, asset_t *asset) { + uint32_t asset_type; + + PARSER_CHECK(buffer_read32(buffer, &asset_type)) + asset->type = asset_type; + switch (asset->type) { + case ASSET_TYPE_NATIVE: { + return true; + } + case ASSET_TYPE_CREDIT_ALPHANUM4: { + return parse_alpha_num4_asset(buffer, &asset->alpha_num4); + } + case ASSET_TYPE_CREDIT_ALPHANUM12: { + return parse_alpha_num12_asset(buffer, &asset->alpha_num12); + } + default: + return false; // unknown asset type + } +} + +bool parse_trust_line_asset(buffer_t *buffer, trust_line_asset_t *asset) { + uint32_t asset_type; + + PARSER_CHECK(buffer_read32(buffer, &asset_type)) + asset->type = asset_type; + switch (asset->type) { + case ASSET_TYPE_NATIVE: { + return true; + } + case ASSET_TYPE_CREDIT_ALPHANUM4: { + return parse_alpha_num4_asset(buffer, &asset->alpha_num4); + } + case ASSET_TYPE_CREDIT_ALPHANUM12: { + return parse_alpha_num12_asset(buffer, &asset->alpha_num12); + } + case ASSET_TYPE_POOL_SHARE: { + PARSER_CHECK(buffer_can_read(buffer, LIQUIDITY_POOL_ID_SIZE)) + asset->liquidity_pool_id = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, LIQUIDITY_POOL_ID_SIZE)) + return true; + } + default: + return false; // unknown asset type + } +} + +bool parse_liquidity_pool_parameters(buffer_t *buffer, + liquidity_pool_parameters_t *liquidity_pool_parameters) { + uint32_t liquidity_pool_type; + PARSER_CHECK(buffer_read32(buffer, &liquidity_pool_type)) + switch (liquidity_pool_type) { + case LIQUIDITY_POOL_CONSTANT_PRODUCT: { + PARSER_CHECK(parse_asset(buffer, &liquidity_pool_parameters->constant_product.asset_a)) + PARSER_CHECK(parse_asset(buffer, &liquidity_pool_parameters->constant_product.asset_b)) + PARSER_CHECK( + buffer_read32(buffer, + (uint32_t *) &liquidity_pool_parameters->constant_product.fee)) + return true; + } + default: + return false; + } +} + +bool parse_change_trust_asset(buffer_t *buffer, change_trust_asset_t *asset) { + uint32_t asset_type; + + PARSER_CHECK(buffer_read32(buffer, &asset_type)) + asset->type = asset_type; + switch (asset->type) { + case ASSET_TYPE_NATIVE: { + return true; + } + case ASSET_TYPE_CREDIT_ALPHANUM4: { + return parse_alpha_num4_asset(buffer, &asset->alpha_num4); + } + case ASSET_TYPE_CREDIT_ALPHANUM12: { + return parse_alpha_num12_asset(buffer, &asset->alpha_num12); + } + case ASSET_TYPE_POOL_SHARE: { + return parse_liquidity_pool_parameters(buffer, &asset->liquidity_pool); + } + default: + return false; // unknown asset type + } +} + +bool parse_create_account(buffer_t *buffer, create_account_op_t *create_account_op) { + PARSER_CHECK(parse_account_id(buffer, &create_account_op->destination)) + return buffer_read64(buffer, (uint64_t *) &create_account_op->starting_balance); +} + +bool parse_payment(buffer_t *buffer, payment_op_t *payment_op) { + PARSER_CHECK(parse_muxed_account(buffer, &payment_op->destination)) + + PARSER_CHECK(parse_asset(buffer, &payment_op->asset)) + + return buffer_read64(buffer, (uint64_t *) &payment_op->amount); +} + +bool parse_path_payment_strict_receive(buffer_t *buffer, path_payment_strict_receive_op_t *op) { + uint32_t path_len; + + PARSER_CHECK(parse_asset(buffer, &op->send_asset)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->send_max)) + PARSER_CHECK(parse_muxed_account(buffer, &op->destination)) + PARSER_CHECK(parse_asset(buffer, &op->dest_asset)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->dest_amount)) + + PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &path_len)) + if (path_len > PATH_PAYMENT_MAX_PATH_LENGTH) { + return false; + } + return true; +} + +bool parse_allow_trust(buffer_t *buffer, allow_trust_op_t *op) { + uint32_t asset_type; + + PARSER_CHECK(parse_account_id(buffer, &op->trustor)) + PARSER_CHECK(buffer_read32(buffer, &asset_type)) + + switch (asset_type) { + case ASSET_TYPE_CREDIT_ALPHANUM4: { + PARSER_CHECK(buffer_read_bytes(buffer, (uint8_t *) op->asset_code, 4)) + op->asset_code[4] = '\0'; // FIXME: it's OK? + break; + } + case ASSET_TYPE_CREDIT_ALPHANUM12: { + PARSER_CHECK(buffer_read_bytes(buffer, (uint8_t *) op->asset_code, 12)) + op->asset_code[12] = '\0'; + break; + } + default: + return false; // unknown asset type + } + + return buffer_read32(buffer, &op->authorize); +} + +bool parse_account_merge(buffer_t *buffer, account_merge_op_t *op) { + return parse_muxed_account(buffer, &op->destination); +} + +bool parse_manage_data(buffer_t *buffer, manage_data_op_t *op) { + size_t size; + + PARSER_CHECK(parse_binary_string_ptr(buffer, + (const uint8_t **) &op->data_name, + &size, + DATA_NAME_MAX_SIZE)) + op->data_name_size = size; + + bool has_value; + PARSER_CHECK(buffer_read_bool(buffer, &has_value)) + if (has_value) { + PARSER_CHECK(parse_binary_string_ptr(buffer, + (const uint8_t **) &op->data_value, + &size, + DATA_VALUE_MAX_SIZE)) + op->data_value_size = size; + } else { + op->data_value_size = 0; + } + return true; +} + +bool parse_price(buffer_t *buffer, price_t *price) { + PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &price->n)) + PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &price->d)) + + // Denominator cannot be null, as it would lead to a division by zero. + return price->d != 0; +} + +bool parse_manage_sell_offer(buffer_t *buffer, manage_sell_offer_op_t *op) { + PARSER_CHECK(parse_asset(buffer, &op->selling)) + PARSER_CHECK(parse_asset(buffer, &op->buying)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)) + PARSER_CHECK(parse_price(buffer, &op->price)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->offer_id)) + return true; +} + +bool parse_manage_buy_offer(buffer_t *buffer, manage_buy_offer_op_t *op) { + PARSER_CHECK(parse_asset(buffer, &op->selling)) + PARSER_CHECK(parse_asset(buffer, &op->buying)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->buy_amount)) + PARSER_CHECK(parse_price(buffer, &op->price)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->offer_id)) + return true; +} + +bool parse_create_passive_sell_offer(buffer_t *buffer, create_passive_sell_offer_op_t *op) { + PARSER_CHECK(parse_asset(buffer, &op->selling)) + PARSER_CHECK(parse_asset(buffer, &op->buying)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)) + PARSER_CHECK(parse_price(buffer, &op->price)) + return true; +} + +bool parse_change_trust(buffer_t *buffer, change_trust_op_t *op) { + PARSER_CHECK(parse_change_trust_asset(buffer, &op->line)) + return buffer_read64(buffer, &op->limit); +} + +bool parse_signer(buffer_t *buffer, signer_t *signer) { + PARSER_CHECK(parse_signer_key(buffer, &signer->key)) + PARSER_CHECK(buffer_read32(buffer, &signer->weight)) + return true; +} + +bool parse_set_options(buffer_t *buffer, set_options_op_t *set_options) { + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) parse_account_id, + &set_options->inflation_destination, + &set_options->inflation_destination_present)) + + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) buffer_read32, + &set_options->clear_flags, + &set_options->clear_flags_present)) + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) buffer_read32, + &set_options->set_flags, + &set_options->set_flags_present)) + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) buffer_read32, + &set_options->master_weight, + &set_options->master_weight_present)) + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) buffer_read32, + &set_options->low_threshold, + &set_options->low_threshold_present)) + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) buffer_read32, + &set_options->medium_threshold, + &set_options->medium_threshold_present)) + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) buffer_read32, + &set_options->high_threshold, + &set_options->high_threshold_present)) + + uint32_t home_domain_present; + PARSER_CHECK(buffer_read32(buffer, &home_domain_present)) + set_options->home_domain_present = home_domain_present ? true : false; + if (set_options->home_domain_present) { + if (!buffer_read32(buffer, &set_options->home_domain_size) || + set_options->home_domain_size > HOME_DOMAIN_MAX_SIZE) { + return false; + } + PARSER_CHECK(buffer_can_read(buffer, num_bytes(set_options->home_domain_size))) + set_options->home_domain = buffer->ptr + buffer->offset; + PARSER_CHECK(check_padding(set_options->home_domain, + set_options->home_domain_size, + num_bytes(set_options->home_domain_size))) // security check + buffer->offset += num_bytes(set_options->home_domain_size); + } else { + set_options->home_domain_size = 0; + } + + return parse_optional_type(buffer, + (xdr_type_reader) parse_signer, + &set_options->signer, + &set_options->signer_present); +} + +bool parse_bump_sequence(buffer_t *buffer, bump_sequence_op_t *op) { + return buffer_read64(buffer, (uint64_t *) &op->bump_to); +} + +bool parse_path_payment_strict_send(buffer_t *buffer, path_payment_strict_send_op_t *op) { + uint32_t path_len; + + PARSER_CHECK(parse_asset(buffer, &op->send_asset)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->send_amount)) + PARSER_CHECK(parse_muxed_account(buffer, &op->destination)) + PARSER_CHECK(parse_asset(buffer, &op->dest_asset)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->dest_min)) + PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &path_len)) + if (path_len > PATH_PAYMENT_MAX_PATH_LENGTH) { + return false; + } + return true; +} + +bool parse_claimant_predicate(buffer_t *buffer) { + // Currently, does not support displaying claimant details. + // So here we will not store the parsed data, just to ensure that the data can be parsed + // correctly. + uint32_t claim_predicate_type; + uint32_t predicates_len; + bool not_predicate_present; + int64_t abs_before; + int64_t rel_before; + PARSER_CHECK(buffer_read32(buffer, &claim_predicate_type)) + switch (claim_predicate_type) { + case CLAIM_PREDICATE_UNCONDITIONAL: + return true; + case CLAIM_PREDICATE_AND: + case CLAIM_PREDICATE_OR: + PARSER_CHECK(buffer_read32(buffer, &predicates_len)) + if (predicates_len != 2) { + return false; + } + PARSER_CHECK(parse_claimant_predicate(buffer)) + PARSER_CHECK(parse_claimant_predicate(buffer)) + return true; + case CLAIM_PREDICATE_NOT: + PARSER_CHECK(buffer_read_bool(buffer, ¬_predicate_present)) + if (not_predicate_present) { + PARSER_CHECK(parse_claimant_predicate(buffer)) + } + return true; + case CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME: + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &abs_before)) + return true; + case CLAIM_PREDICATE_BEFORE_RELATIVE_TIME: + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &rel_before)) + return true; + default: + return false; + } +} + +bool parse_claimant(buffer_t *buffer, claimant_t *claimant) { + uint32_t claimant_type; + PARSER_CHECK(buffer_read32(buffer, &claimant_type)) + claimant->type = claimant_type; + + switch (claimant->type) { + case CLAIMANT_TYPE_V0: + PARSER_CHECK(parse_account_id(buffer, &claimant->v0.destination)) + PARSER_CHECK(parse_claimant_predicate(buffer)) + return true; + default: + return false; + } +} + +bool parse_create_claimable_balance(buffer_t *buffer, create_claimable_balance_op_t *op) { + uint32_t claimant_len; + PARSER_CHECK(parse_asset(buffer, &op->asset)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)) + PARSER_CHECK(buffer_read32(buffer, (uint32_t *) &claimant_len)) + if (claimant_len > CLAIMANTS_MAX_LENGTH) { + return false; + } + op->claimant_len = claimant_len; + for (int i = 0; i < op->claimant_len; i++) { + PARSER_CHECK(parse_claimant(buffer, &op->claimants[i])) + } + return true; +} +bool parse_claimable_balance_id(buffer_t *buffer, claimable_balance_id *claimable_balance_id) { + uint32_t claimable_balance_id_type; + PARSER_CHECK(buffer_read32(buffer, &claimable_balance_id_type)) + claimable_balance_id->type = claimable_balance_id_type; + + switch (claimable_balance_id->type) { + case CLAIMABLE_BALANCE_ID_TYPE_V0: + PARSER_CHECK(buffer_can_read(buffer, CLAIMABLE_BALANCE_ID_SIZE)) + claimable_balance_id->v0 = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, CLAIMABLE_BALANCE_ID_SIZE)) + return true; + default: + return false; + } +} + +bool parse_claim_claimable_balance(buffer_t *buffer, claim_claimable_balance_op_t *op) { + PARSER_CHECK(parse_claimable_balance_id(buffer, &op->balance_id)) + return true; +} + +bool parse_begin_sponsoring_future_reserves(buffer_t *buffer, + begin_sponsoring_future_reserves_op_t *op) { + PARSER_CHECK(parse_account_id(buffer, &op->sponsored_id)) + return true; +} + +bool parse_ledger_key(buffer_t *buffer, ledger_key_t *ledger_key) { + uint32_t ledger_entry_type; + PARSER_CHECK(buffer_read32(buffer, &ledger_entry_type)) + ledger_key->type = ledger_entry_type; + switch (ledger_key->type) { + case ACCOUNT: + PARSER_CHECK(parse_account_id(buffer, &ledger_key->account.account_id)) + return true; + case TRUSTLINE: + PARSER_CHECK(parse_account_id(buffer, &ledger_key->trust_line.account_id)) + PARSER_CHECK(parse_trust_line_asset(buffer, &ledger_key->trust_line.asset)) + return true; + case OFFER: + PARSER_CHECK(parse_account_id(buffer, &ledger_key->offer.seller_id)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &ledger_key->offer.offer_id)) + return true; + case DATA: + PARSER_CHECK(parse_account_id(buffer, &ledger_key->data.account_id)) + PARSER_CHECK(parse_binary_string_ptr(buffer, + (const uint8_t **) &ledger_key->data.data_name, + (size_t *) &ledger_key->data.data_name_size, + DATA_NAME_MAX_SIZE)) + return true; + case CLAIMABLE_BALANCE: + PARSER_CHECK( + parse_claimable_balance_id(buffer, &ledger_key->claimable_balance.balance_id)) + return true; + case LIQUIDITY_POOL: + PARSER_CHECK(buffer_can_read(buffer, LIQUIDITY_POOL_ID_SIZE)) + ledger_key->liquidity_pool.liquidity_pool_id = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, LIQUIDITY_POOL_ID_SIZE)) + return true; + default: + return false; + } +} + +bool parse_revoke_sponsorship(buffer_t *buffer, revoke_sponsorship_op_t *op) { + uint32_t revoke_sponsorship_type; + PARSER_CHECK(buffer_read32(buffer, &revoke_sponsorship_type)) + op->type = revoke_sponsorship_type; + + switch (op->type) { + case REVOKE_SPONSORSHIP_LEDGER_ENTRY: + PARSER_CHECK(parse_ledger_key(buffer, &op->ledger_key)) + return true; + case REVOKE_SPONSORSHIP_SIGNER: + PARSER_CHECK(parse_account_id(buffer, &op->signer.account_id)) + PARSER_CHECK(parse_signer_key(buffer, &op->signer.signer_key)) + return true; + default: + return false; + } +} + +bool parse_clawback(buffer_t *buffer, clawback_op_t *op) { + PARSER_CHECK(parse_asset(buffer, &op->asset)) + PARSER_CHECK(parse_muxed_account(buffer, &op->from)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)) + return true; +} + +bool parse_clawback_claimable_balance(buffer_t *buffer, clawback_claimable_balance_op_t *op) { + PARSER_CHECK(parse_claimable_balance_id(buffer, &op->balance_id)) + return true; +} + +bool parse_set_trust_line_flags(buffer_t *buffer, set_trust_line_flags_op_t *op) { + PARSER_CHECK(parse_account_id(buffer, &op->trustor)) + PARSER_CHECK(parse_asset(buffer, &op->asset)) + PARSER_CHECK(buffer_read32(buffer, &op->clear_flags)) + PARSER_CHECK(buffer_read32(buffer, &op->set_flags)) + return true; +} + +bool parse_liquidity_pool_deposit(buffer_t *buffer, liquidity_pool_deposit_op_t *op) { + PARSER_CHECK(buffer_can_read(buffer, LIQUIDITY_POOL_ID_SIZE)) + op->liquidity_pool_id = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, LIQUIDITY_POOL_ID_SIZE)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->max_amount_a)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->max_amount_b)) + PARSER_CHECK(parse_price(buffer, &op->min_price)) + PARSER_CHECK(parse_price(buffer, &op->max_price)) + return true; +} + +bool parse_liquidity_pool_withdraw(buffer_t *buffer, liquidity_pool_withdraw_op_t *op) { + PARSER_CHECK(buffer_can_read(buffer, LIQUIDITY_POOL_ID_SIZE)) + op->liquidity_pool_id = buffer->ptr + buffer->offset; + PARSER_CHECK(buffer_advance(buffer, LIQUIDITY_POOL_ID_SIZE)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->amount)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->min_amount_a)) + PARSER_CHECK(buffer_read64(buffer, (uint64_t *) &op->min_amount_b)) + return true; +} + +bool parse_operation(buffer_t *buffer, operation_t *operation) { + explicit_bzero(operation, sizeof(operation_t)); + uint32_t op_type; + + PARSER_CHECK(parse_optional_type(buffer, + (xdr_type_reader) parse_muxed_account, + &operation->source_account, + &operation->source_account_present)) + + PARSER_CHECK(buffer_read32(buffer, &op_type)) + operation->type = op_type; + switch (operation->type) { + case OPERATION_TYPE_CREATE_ACCOUNT: { + return parse_create_account(buffer, &operation->create_account_op); + } + case OPERATION_TYPE_PAYMENT: { + return parse_payment(buffer, &operation->payment_op); + } + case OPERATION_TYPE_PATH_PAYMENT_STRICT_RECEIVE: { + return parse_path_payment_strict_receive(buffer, + &operation->path_payment_strict_receive_op); + } + case OPERATION_TYPE_CREATE_PASSIVE_SELL_OFFER: { + return parse_create_passive_sell_offer(buffer, + &operation->create_passive_sell_offer_op); + } + case OPERATION_TYPE_MANAGE_SELL_OFFER: { + return parse_manage_sell_offer(buffer, &operation->manage_sell_offer_op); + } + case OPERATION_TYPE_SET_OPTIONS: { + return parse_set_options(buffer, &operation->set_options_op); + } + case OPERATION_TYPE_CHANGE_TRUST: { + return parse_change_trust(buffer, &operation->change_trust_op); + } + case OPERATION_TYPE_ALLOW_TRUST: { + return parse_allow_trust(buffer, &operation->allow_trust_op); + } + case OPERATION_TYPE_ACCOUNT_MERGE: { + return parse_account_merge(buffer, &operation->account_merge_op); + } + case OPERATION_TYPE_INFLATION: { + return true; + } + case OPERATION_TYPE_MANAGE_DATA: { + return parse_manage_data(buffer, &operation->manage_data_op); + } + case OPERATION_TYPE_BUMP_SEQUENCE: { + return parse_bump_sequence(buffer, &operation->bump_sequence_op); + } + case OPERATION_TYPE_MANAGE_BUY_OFFER: { + return parse_manage_buy_offer(buffer, &operation->manage_buy_offer_op); + } + case OPERATION_TYPE_PATH_PAYMENT_STRICT_SEND: { + return parse_path_payment_strict_send(buffer, &operation->path_payment_strict_send_op); + } + case OPERATION_TYPE_CREATE_CLAIMABLE_BALANCE: { + return parse_create_claimable_balance(buffer, &operation->create_claimable_balance_op); + } + case OPERATION_TYPE_CLAIM_CLAIMABLE_BALANCE: { + return parse_claim_claimable_balance(buffer, &operation->claim_claimable_balance_op); + } + case OPERATION_TYPE_BEGIN_SPONSORING_FUTURE_RESERVES: { + return parse_begin_sponsoring_future_reserves( + buffer, + &operation->begin_sponsoring_future_reserves_op); + } + case OPERATION_TYPE_END_SPONSORING_FUTURE_RESERVES: { + return true; + } + case OPERATION_TYPE_REVOKE_SPONSORSHIP: { + return parse_revoke_sponsorship(buffer, &operation->revoke_sponsorship_op); + } + case OPERATION_TYPE_CLAWBACK: { + return parse_clawback(buffer, &operation->clawback_op); + } + case OPERATION_TYPE_CLAWBACK_CLAIMABLE_BALANCE: { + return parse_clawback_claimable_balance(buffer, + &operation->clawback_claimable_balance_op); + } + case OPERATION_TYPE_SET_TRUST_LINE_FLAGS: { + return parse_set_trust_line_flags(buffer, &operation->set_trust_line_flags_op); + } + case OPERATION_TYPE_LIQUIDITY_POOL_DEPOSIT: + return parse_liquidity_pool_deposit(buffer, &operation->liquidity_pool_deposit_op); + case OPERATION_TYPE_LIQUIDITY_POOL_WITHDRAW: + return parse_liquidity_pool_withdraw(buffer, &operation->liquidity_pool_withdraw_op); + default: + return false; + } + return false; +} + +bool parse_transaction_source(buffer_t *buffer, muxed_account_t *source) { + return parse_muxed_account(buffer, source); +} + +bool parse_transaction_fee(buffer_t *buffer, uint32_t *fee) { + return buffer_read32(buffer, fee); +} + +bool parse_transaction_sequence(buffer_t *buffer, sequence_number_t *sequence_number) { + return buffer_read64(buffer, (uint64_t *) sequence_number); +} + +bool parse_transaction_preconditions(buffer_t *buffer, preconditions_t *preconditions) { + return parse_preconditions(buffer, preconditions); +} + +bool parse_transaction_memo(buffer_t *buffer, memo_t *memo) { + return parse_memo(buffer, memo); +} + +bool parse_transaction_operation_len(buffer_t *buffer, uint8_t *operations_count) { + uint32_t len; + PARSER_CHECK(buffer_read32(buffer, &len)) + if (len > MAX_OPS) { + return false; + } + *operations_count = len; + return true; +} + +bool parse_transaction_details(buffer_t *buffer, transaction_details_t *transaction) { + // account used to run the (inner)transaction + PARSER_CHECK(parse_transaction_source(buffer, &transaction->source_account)) + + // the fee the source_account will pay + PARSER_CHECK(parse_transaction_fee(buffer, &transaction->fee)) + + // sequence number to consume in the account + PARSER_CHECK(parse_transaction_sequence(buffer, &transaction->sequence_number)) + + // validity conditions + PARSER_CHECK(parse_transaction_preconditions(buffer, &transaction->cond)) + + PARSER_CHECK(parse_transaction_memo(buffer, &transaction->memo)) + PARSER_CHECK(parse_transaction_operation_len(buffer, &transaction->operations_count)) + return true; +} + +bool parse_fee_bump_transaction_fee_source(buffer_t *buffer, muxed_account_t *fee_source) { + return parse_muxed_account(buffer, fee_source); +} + +bool parse_fee_bump_transaction_fee(buffer_t *buffer, int64_t *fee) { + return buffer_read64(buffer, (uint64_t *) fee); +} + +bool parse_fee_bump_transaction_details(buffer_t *buffer, + fee_bump_transaction_details_t *fee_bump_transaction) { + PARSER_CHECK(parse_fee_bump_transaction_fee_source(buffer, &fee_bump_transaction->fee_source)) + PARSER_CHECK(parse_fee_bump_transaction_fee(buffer, &fee_bump_transaction->fee)) + return true; +} + +bool parse_fee_bump_transaction_ext(buffer_t *buffer) { + uint32_t ext; + PARSER_CHECK(buffer_read32(buffer, &ext)) + if (ext != 0) { + return false; + } + return true; +} + +bool parse_transaction_envelope_type(buffer_t *buffer, envelope_type_t *envelope_type) { + uint32_t type; + PARSER_CHECK(buffer_read32(buffer, &type)) + if (type != ENVELOPE_TYPE_TX && type != ENVELOPE_TYPE_TX_FEE_BUMP) { + THROW(SW_UNKNOWN_ENVELOPE_TYPE); + return false; + } + + *envelope_type = type; + return true; +} + +bool parse_network(buffer_t *buffer, uint8_t *network) { + PARSER_CHECK(buffer_can_read(buffer, HASH_SIZE)) + if (memcmp(buffer->ptr, NETWORK_ID_PUBLIC_HASH, HASH_SIZE) == 0) { + *network = NETWORK_TYPE_PUBLIC; + } else if (memcmp(buffer->ptr, NETWORK_ID_TEST_HASH, HASH_SIZE) == 0) { + *network = NETWORK_TYPE_TEST; + } else { + *network = NETWORK_TYPE_UNKNOWN; + } + PARSER_CHECK(buffer_advance(buffer, HASH_SIZE)) + return true; +} + +bool parse_tx_xdr(const uint8_t *data, size_t size, tx_ctx_t *tx_ctx) { + buffer_t buffer = {data, size, 0}; + uint32_t envelope_type; + + uint16_t offset = tx_ctx->offset; + buffer.offset = tx_ctx->offset; + + if (offset == 0) { + explicit_bzero(&tx_ctx->tx_details, sizeof(transaction_details_t)); + explicit_bzero(&tx_ctx->fee_bump_tx_details, sizeof(fee_bump_transaction_details_t)); + PARSER_CHECK(parse_network(&buffer, &tx_ctx->network)) + PARSER_CHECK(buffer_read32(&buffer, &envelope_type)) + tx_ctx->envelope_type = envelope_type; + switch (envelope_type) { + case ENVELOPE_TYPE_TX: + PARSER_CHECK(parse_transaction_details(&buffer, &tx_ctx->tx_details)) + break; + case ENVELOPE_TYPE_TX_FEE_BUMP: + PARSER_CHECK( + parse_fee_bump_transaction_details(&buffer, &tx_ctx->fee_bump_tx_details)) + uint32_t inner_envelope_type; + PARSER_CHECK(buffer_read32(&buffer, &inner_envelope_type)) + if (inner_envelope_type != ENVELOPE_TYPE_TX) { + return false; + } + PARSER_CHECK(parse_transaction_details(&buffer, &tx_ctx->tx_details)) + break; + default: + THROW(SW_UNKNOWN_OP); + return false; + } + } + + PARSER_CHECK(parse_operation(&buffer, &tx_ctx->tx_details.op_details)) + offset = buffer.offset; + tx_ctx->tx_details.operation_index += 1; + tx_ctx->offset = offset; + return true; +} diff --git a/src/transaction/transaction_parser.h b/src/transaction/transaction_parser.h new file mode 100644 index 00000000..1bac58ac --- /dev/null +++ b/src/transaction/transaction_parser.h @@ -0,0 +1,4 @@ +#pragma once +#include "../types.h" + +bool parse_tx_xdr(const uint8_t *data, size_t size, tx_ctx_t *tx_ctx); diff --git a/src/transaction/transaction_types.h b/src/transaction/transaction_types.h new file mode 100644 index 00000000..9ec3ae95 --- /dev/null +++ b/src/transaction/transaction_types.h @@ -0,0 +1,549 @@ +#pragma once + +#include // size_t +#include // uint*_t +#include + +// ------------------------------------------------------------------------- // +// TRANSACTION PARSING CONSTANTS // +// ------------------------------------------------------------------------- // + +#define ENCODED_ED25519_PUBLIC_KEY_LENGTH 57 +#define ENCODED_ED25519_PRIVATE_KEY_LENGTH 57 +#define ENCODED_HASH_X_KEY_LENGTH 57 +#define ENCODED_PRE_AUTH_TX_KEY_LENGTH 57 +#define ENCODED_MUXED_ACCOUNT_KEY_LENGTH 70 + +#define RAW_ED25519_PUBLIC_KEY_SIZE 32 +#define RAW_ED25519_PRIVATE_KEY_SIZE 32 +#define RAW_HASH_X_KEY_SIZE 32 +#define RAW_PRE_AUTH_TX_KEY_SIZE 32 +#define RAW_MUXED_ACCOUNT_KEY_SIZE 40 + +#define VERSION_BYTE_ED25519_PUBLIC_KEY 6 << 3 +#define VERSION_BYTE_ED25519_SECRET_SEED 18 << 3 +#define VERSION_BYTE_PRE_AUTH_TX_KEY 19 << 3 +#define VERSION_BYTE_HASH_X 23 << 3 +#define VERSION_BYTE_MUXED_ACCOUNT 12 << 3 + +#define ASSET_CODE_MAX_LENGTH 13 +#define CLAIMANTS_MAX_LENGTH 10 +#define PATH_PAYMENT_MAX_PATH_LENGTH 5 + +/* For sure not more than 35 operations will fit in that */ +#define MAX_OPS 35 + +/* max amount is max int64 scaled down: "922337203685.4775807" */ +#define AMOUNT_MAX_LENGTH 21 + +#define HASH_SIZE 32 +#define LIQUIDITY_POOL_ID_SIZE 32 +#define CLAIMABLE_BALANCE_ID_SIZE 32 + +#define PUBLIC_KEY_TYPE_ED25519 0 +#define MEMO_TEXT_MAX_SIZE 28 +#define DATA_NAME_MAX_SIZE 64 +#define DATA_VALUE_MAX_SIZE 64 +#define HOME_DOMAIN_MAX_SIZE 32 + +#define NETWORK_TYPE_PUBLIC 0 +#define NETWORK_TYPE_TEST 1 +#define NETWORK_TYPE_UNKNOWN 2 + +typedef enum { + ASSET_TYPE_NATIVE = 0, + ASSET_TYPE_CREDIT_ALPHANUM4 = 1, + ASSET_TYPE_CREDIT_ALPHANUM12 = 2, + ASSET_TYPE_POOL_SHARE = 3, +} asset_type_t; + +typedef enum { + MEMO_NONE = 0, + MEMO_TEXT = 1, + MEMO_ID = 2, + MEMO_HASH = 3, + MEMO_RETURN = 4, +} memo_type_t; + +typedef enum { + ENVELOPE_TYPE_TX = 2, + ENVELOPE_TYPE_TX_FEE_BUMP = 5, +} envelope_type_t; + +typedef enum { + OPERATION_TYPE_CREATE_ACCOUNT = 0, + OPERATION_TYPE_PAYMENT = 1, + OPERATION_TYPE_PATH_PAYMENT_STRICT_RECEIVE = 2, + OPERATION_TYPE_MANAGE_SELL_OFFER = 3, + OPERATION_TYPE_CREATE_PASSIVE_SELL_OFFER = 4, + OPERATION_TYPE_SET_OPTIONS = 5, + OPERATION_TYPE_CHANGE_TRUST = 6, + OPERATION_TYPE_ALLOW_TRUST = 7, + OPERATION_TYPE_ACCOUNT_MERGE = 8, + OPERATION_TYPE_INFLATION = 9, + OPERATION_TYPE_MANAGE_DATA = 10, + OPERATION_TYPE_BUMP_SEQUENCE = 11, + OPERATION_TYPE_MANAGE_BUY_OFFER = 12, + OPERATION_TYPE_PATH_PAYMENT_STRICT_SEND = 13, + OPERATION_TYPE_CREATE_CLAIMABLE_BALANCE = 14, + OPERATION_TYPE_CLAIM_CLAIMABLE_BALANCE = 15, + OPERATION_TYPE_BEGIN_SPONSORING_FUTURE_RESERVES = 16, + OPERATION_TYPE_END_SPONSORING_FUTURE_RESERVES = 17, + OPERATION_TYPE_REVOKE_SPONSORSHIP = 18, + OPERATION_TYPE_CLAWBACK = 19, + OPERATION_TYPE_CLAWBACK_CLAIMABLE_BALANCE = 20, + OPERATION_TYPE_SET_TRUST_LINE_FLAGS = 21, + OPERATION_TYPE_LIQUIDITY_POOL_DEPOSIT = 22, + OPERATION_TYPE_LIQUIDITY_POOL_WITHDRAW = 23, +} operation_type_t; + +typedef const uint8_t *account_id_t; +typedef int64_t sequence_number_t; +typedef uint64_t time_point_t; +typedef int64_t duration_t; + +typedef enum { + KEY_TYPE_ED25519 = 0, + KEY_TYPE_PRE_AUTH_TX = 1, + KEY_TYPE_HASH_X = 2, + KEY_TYPE_ED25519_SIGNED_PAYLOAD = 3, + KEY_TYPE_MUXED_ED25519 = 0x100 +} crypto_key_type_t; + +typedef enum { + SIGNER_KEY_TYPE_ED25519 = KEY_TYPE_ED25519, + SIGNER_KEY_TYPE_PRE_AUTH_TX = KEY_TYPE_PRE_AUTH_TX, + SIGNER_KEY_TYPE_HASH_X = KEY_TYPE_HASH_X, + SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD = KEY_TYPE_ED25519_SIGNED_PAYLOAD +} signer_key_type_t; + +typedef enum { + // issuer has authorized account to perform transactions with its credit + AUTHORIZED_FLAG = 1, + // issuer has authorized account to maintain and reduce liabilities for its + // credit + AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG = 2, + // issuer has specified that it may clawback its credit, and that claimable + // balances created with its credit may also be clawed back + TRUSTLINE_CLAWBACK_ENABLED_FLAG = 4 +} trust_line_flags_t; + +typedef struct { + uint64_t id; + const uint8_t *ed25519; +} muxed_account_med25519_t; + +typedef struct { + crypto_key_type_t type; + union { + const uint8_t *ed25519; + muxed_account_med25519_t med25519; + }; +} muxed_account_t; + +typedef struct { + const char *asset_code; + account_id_t issuer; +} alpha_num4_t; + +typedef struct { + const char *asset_code; + account_id_t issuer; +} alpha_num12_t; + +typedef struct { + asset_type_t type; + union { + alpha_num4_t alpha_num4; + alpha_num12_t alpha_num12; + }; +} asset_t; + +typedef enum { LIQUIDITY_POOL_CONSTANT_PRODUCT = 0 } liquidity_pool_type_t; + +typedef struct { + asset_t asset_a; + asset_t asset_b; + int32_t fee; // Fee is in basis points, so the actual rate is (fee/100)% +} liquidity_pool_constant_product_parameters_t; + +typedef struct { + liquidity_pool_type_t type; + union { + liquidity_pool_constant_product_parameters_t + constant_product; // type == LIQUIDITY_POOL_CONSTANT_PRODUCT + }; +} liquidity_pool_parameters_t; + +typedef struct { + asset_type_t type; + union { + alpha_num4_t alpha_num4; + alpha_num12_t alpha_num12; + liquidity_pool_parameters_t liquidity_pool; + }; +} change_trust_asset_t; + +typedef struct { + asset_type_t type; + union { + alpha_num4_t alpha_num4; + alpha_num12_t alpha_num12; + const uint8_t *liquidity_pool_id; + }; +} trust_line_asset_t; + +typedef struct { + int32_t n; // numerator + int32_t d; // denominator +} price_t; + +typedef struct { + account_id_t destination; // account to create + int64_t starting_balance; // amount they end up with +} create_account_op_t; + +typedef struct { + muxed_account_t destination; // recipient of the payment_op + asset_t asset; // what they end up with + int64_t amount; // amount they end up with +} payment_op_t; + +typedef struct { + muxed_account_t destination; // recipient of the payment_op + int64_t send_max; // the maximum amount of send_asset to send (excluding fees). + // The operation will fail if can't be met + int64_t dest_amount; // amount they end up with + asset_t send_asset; // asset we pay with + asset_t dest_asset; // what they end up with +} path_payment_strict_receive_op_t; + +typedef struct { + asset_t selling; // A + asset_t buying; // B + int64_t amount; // amount taker gets + price_t price; // cost of A in terms of B +} create_passive_sell_offer_op_t; + +typedef struct { + asset_t selling; + asset_t buying; + int64_t amount; // amount being sold. if set to 0, delete the offer + price_t price; // price of thing being sold in terms of what you are buying + + // 0=create a new offer, otherwise edit an existing offer + int64_t offer_id; +} manage_sell_offer_op_t; + +typedef struct { + asset_t selling; + asset_t buying; + int64_t buy_amount; // amount being bought. if set to 0, delete the offer + price_t price; // price of thing being bought in terms of what you are + // selling + + // 0=create a new offer, otherwise edit an existing offer + int64_t offer_id; +} manage_buy_offer_op_t; + +typedef struct { + muxed_account_t destination; // recipient of the payment_op + int64_t send_amount; // amount of send_asset to send (excluding fees) + // The operation will fail if can't be met + int64_t dest_min; // the minimum amount of dest asset to + // be received + // The operation will fail if it can't be met + asset_t send_asset; // asset we pay with + asset_t dest_asset; // what they end up with +} path_payment_strict_send_op_t; + +typedef struct { + change_trust_asset_t line; + uint64_t limit; // if limit is set to 0, deletes the trust line +} change_trust_op_t; + +typedef struct { + account_id_t trustor; + char asset_code[ASSET_CODE_MAX_LENGTH]; + // One of 0, AUTHORIZED_FLAG, or AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG. + uint32_t authorize; +} allow_trust_op_t; + +typedef struct { + muxed_account_t destination; +} account_merge_op_t; + +typedef struct { + sequence_number_t bump_to; +} bump_sequence_op_t; + +typedef struct { + const uint8_t *ed25519; + const uint8_t *payload; + size_t payload_len; +} ed25519_signed_payload_t; + +typedef struct { + signer_key_type_t type; + union { + const uint8_t *ed25519; + const uint8_t *pre_auth_tx; + const uint8_t *hash_x; + ed25519_signed_payload_t ed25519_signed_payload; + }; +} signer_key_t; + +typedef struct { + signer_key_t key; + uint32_t weight; // really only need 1 byte +} signer_t; + +typedef struct { + bool inflation_destination_present; + account_id_t inflation_destination; + bool clear_flags_present; + uint32_t clear_flags; + bool set_flags_present; + uint32_t set_flags; + bool master_weight_present; + uint32_t master_weight; + bool low_threshold_present; + uint32_t low_threshold; + bool medium_threshold_present; + uint32_t medium_threshold; + bool high_threshold_present; + uint32_t high_threshold; + bool home_domain_present; + uint32_t home_domain_size; + const uint8_t *home_domain; + bool signer_present; + signer_t signer; +} set_options_op_t; + +typedef struct { + uint8_t data_name_size; + const uint8_t *data_name; + uint8_t data_value_size; + const uint8_t *data_value; +} manage_data_op_t; + +typedef enum { + CLAIM_PREDICATE_UNCONDITIONAL = 0, + CLAIM_PREDICATE_AND = 1, + CLAIM_PREDICATE_OR = 2, + CLAIM_PREDICATE_NOT = 3, + CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME = 4, + CLAIM_PREDICATE_BEFORE_RELATIVE_TIME = 5 +} claim_predicate_type_t; + +typedef enum { + CLAIMANT_TYPE_V0 = 0, +} claimant_type_t; + +typedef struct { + claimant_type_t type; + union { + struct { + account_id_t destination; // The account that can use this condition + } v0; + }; + +} claimant_t; + +typedef struct { + asset_t asset; + int64_t amount; + uint8_t claimant_len; + claimant_t claimants[CLAIMANTS_MAX_LENGTH]; +} create_claimable_balance_op_t; + +typedef enum { + CLAIMABLE_BALANCE_ID_TYPE_V0 = 0, +} claimable_balance_id_type_t; + +typedef struct { + claimable_balance_id_type_t type; + const uint8_t *v0; +} claimable_balance_id; + +typedef struct { + claimable_balance_id balance_id; +} claim_claimable_balance_op_t; + +typedef struct { + account_id_t sponsored_id; +} begin_sponsoring_future_reserves_op_t; + +typedef enum { + ACCOUNT = 0, + TRUSTLINE = 1, + OFFER = 2, + DATA = 3, + CLAIMABLE_BALANCE = 4, + LIQUIDITY_POOL = 5 +} ledger_entry_type_t; + +typedef struct { + ledger_entry_type_t type; + union { + struct { + account_id_t account_id; + } account; // type == ACCOUNT + + struct { + account_id_t account_id; + trust_line_asset_t asset; + } trust_line; // type == TRUSTLINE + + struct { + account_id_t seller_id; + int64_t offer_id; + } offer; // type == OFFER + + struct { + account_id_t account_id; + uint8_t data_name_size; + const uint8_t *data_name; + } data; // type == DATA + + struct { + claimable_balance_id balance_id; + } claimable_balance; // type == CLAIMABLE_BALANCE + + struct { + const uint8_t *liquidity_pool_id; + } liquidity_pool; // type == LIQUIDITY_POOL + }; + +} ledger_key_t; + +typedef enum { + REVOKE_SPONSORSHIP_LEDGER_ENTRY = 0, + REVOKE_SPONSORSHIP_SIGNER = 1 +} revoke_sponsorship_type_t; + +typedef struct { + revoke_sponsorship_type_t type; + union { + ledger_key_t ledger_key; + struct { + account_id_t account_id; + signer_key_t signer_key; + } signer; + }; + +} revoke_sponsorship_op_t; + +typedef struct { + asset_t asset; + muxed_account_t from; + int64_t amount; +} clawback_op_t; + +typedef struct { + claimable_balance_id balance_id; +} clawback_claimable_balance_op_t; + +typedef struct { + account_id_t trustor; + asset_t asset; + uint32_t clear_flags; // which flags to clear + uint32_t set_flags; // which flags to set +} set_trust_line_flags_op_t; + +typedef struct { + const uint8_t *liquidity_pool_id; + int64_t max_amount_a; // maximum amount of first asset to deposit + int64_t max_amount_b; // maximum amount of second asset to deposit + price_t min_price; // minimum depositA/depositB + price_t max_price; // maximum depositA/depositB +} liquidity_pool_deposit_op_t; + +typedef struct { + const uint8_t *liquidity_pool_id; + int64_t amount; // amount of pool shares to withdraw + int64_t min_amount_a; // minimum amount of first asset to withdraw + int64_t min_amount_b; // minimum amount of second asset to withdraw +} liquidity_pool_withdraw_op_t; + +typedef struct { + muxed_account_t source_account; + uint8_t type; + bool source_account_present; + union { + create_account_op_t create_account_op; + payment_op_t payment_op; + path_payment_strict_receive_op_t path_payment_strict_receive_op; + manage_sell_offer_op_t manage_sell_offer_op; + create_passive_sell_offer_op_t create_passive_sell_offer_op; + set_options_op_t set_options_op; + change_trust_op_t change_trust_op; + allow_trust_op_t allow_trust_op; + account_merge_op_t account_merge_op; + manage_data_op_t manage_data_op; + bump_sequence_op_t bump_sequence_op; + manage_buy_offer_op_t manage_buy_offer_op; + path_payment_strict_send_op_t path_payment_strict_send_op; + create_claimable_balance_op_t create_claimable_balance_op; + claim_claimable_balance_op_t claim_claimable_balance_op; + begin_sponsoring_future_reserves_op_t begin_sponsoring_future_reserves_op; + revoke_sponsorship_op_t revoke_sponsorship_op; + clawback_op_t clawback_op; + clawback_claimable_balance_op_t clawback_claimable_balance_op; + set_trust_line_flags_op_t set_trust_line_flags_op; + liquidity_pool_deposit_op_t liquidity_pool_deposit_op; + liquidity_pool_withdraw_op_t liquidity_pool_withdraw_op; + }; +} operation_t; + +typedef struct { + memo_type_t type; + union { + uint64_t id; + struct { + uint8_t text_size; + const uint8_t *text; + } text; + const uint8_t *hash; + const uint8_t *return_hash; + }; +} memo_t; + +typedef struct { + time_point_t min_time; + time_point_t max_time; // 0 here means no max_time +} time_bounds_t; + +typedef struct { + uint32_t min_ledger; + uint32_t max_ledger; +} ledger_bounds_t; + +typedef enum { PRECOND_NONE = 0, PRECOND_TIME = 1, PRECOND_V2 = 2 } precondition_type_t; + +typedef struct { + time_bounds_t time_bounds; + ledger_bounds_t ledger_bounds; + sequence_number_t min_seq_num; + duration_t min_seq_age; + uint32_t min_seq_ledger_gap; + bool time_bounds_present; + bool ledger_bounds_present; + bool min_seq_num_present; +} preconditions_t; + +typedef struct { + muxed_account_t source_account; // account used to run the transaction + sequence_number_t sequence_number; // sequence number to consume in the account + preconditions_t cond; // validity conditions + memo_t memo; + operation_t op_details; + uint32_t fee; // the fee the source_account will pay + uint8_t operations_count; + uint8_t operation_index; +} transaction_details_t; + +typedef struct { + muxed_account_t fee_source; + int64_t fee; +} fee_bump_transaction_details_t; diff --git a/src/types.h b/src/types.h new file mode 100644 index 00000000..3487165c --- /dev/null +++ b/src/types.h @@ -0,0 +1,137 @@ +#pragma once + +#include // size_t +#include // uint*_t + +#include "./common/bip32.h" +#include "./transaction/transaction_types.h" + +/** + * Instruction class of the Stellar application. + */ +#define CLA 0xE0 + +/** + * Maximum length of MAJOR_VERSION || MINOR_VERSION || PATCH_VERSION. + */ +#define APP_VERSION_SIZE 3 + +/** + * Length of hash_signing_enabled + */ +#define APP_CONFIGURATION_SIZE 1 + +/* + * Captions don't scroll so there is no use in having more capacity than can fit on screen at once. + */ +#define DETAIL_CAPTION_MAX_LENGTH 20 + +/* + * DETAIL_VALUE_MAX_LENGTH value of 89 is due to the maximum length of managed data value which can + * be 64 bytes long. Managed data values are displayed as base64 encoded strings, which are + * 4*((len+2)/3) characters long. (An additional slot is required for the end-of-string character of + * course) + */ +#define DETAIL_VALUE_MAX_LENGTH 89 + +/** + * Maximum transaction size (bytes). + */ +#ifdef TARGET_NANOS +#define RAW_TX_MAX_SIZE 1120 +#else +#define RAW_TX_MAX_SIZE 5120 +#endif + +/** + * signature length (bytes). + */ +#define SIGNATURE_SIZE 64 + +/** + * Callback to reuse action with approve/reject in step FLOW. + */ +typedef void (*ui_action_validate_cb)(bool); + +/** + * Enumeration for the status of IO. + */ +typedef enum { + READY, // ready for new event + RECEIVED, // data received + WAITING // waiting +} io_state_e; + +/** + * Enumeration with expected INS of APDU commands. + */ +typedef enum { + INS_GET_PUBLIC_KEY = 0x02, // public key of corresponding BIP32 path + INS_SIGN_TX = 0x04, // sign transaction with BIP32 path + INS_GET_APP_CONFIGURATION = 0x06, // app configuration of the application + INS_SIGN_TX_HASH = 0x08, // sign transaction in hash mode +} command_e; + +/** + * Structure with fields of APDU command. + */ +typedef struct { + uint8_t cla; // Instruction class + command_e ins; // Instruction code + uint8_t p1; // Instruction parameter 1 + uint8_t p2; // Instruction parameter 2 + uint8_t lc; // Lenght of command data + uint8_t *data; // Command data +} command_t; + +/** + * Enumeration with user request type. + */ +typedef enum { + CONFIRM_ADDRESS, // confirm address derived from public key + CONFIRM_TRANSACTION, // confirm transaction information + CONFIRM_TRANSACTION_HASH // confirm transaction hash information +} request_type_e; + +/** + * Enumeration with parsing state. + */ +typedef enum { + STATE_NONE, // No state + STATE_PARSED, // Transaction data parsed + STATE_APPROVED // Transaction data approved +} state_e; + +/** + * Structure for transaction context. + * + */ +typedef struct { + uint8_t raw[RAW_TX_MAX_SIZE]; + uint32_t raw_size; + uint16_t offset; + uint8_t network; + envelope_type_t envelope_type; + fee_bump_transaction_details_t fee_bump_tx_details; + transaction_details_t tx_details; +} tx_ctx_t; + +/** + * Structure for global context. + */ +typedef struct { + tx_ctx_t tx_info; // tx + uint8_t hash[HASH_SIZE]; // tx hash + uint32_t bip32_path[MAX_BIP32_PATH]; // BIP32 path + uint8_t raw_public_key[RAW_ED25519_PUBLIC_KEY_SIZE]; // BIP32 path public key + uint8_t bip32_path_len; // length of BIP32 path + state_e state; // state of the context + request_type_e req_type; // user request +} global_ctx_t; + +typedef struct { + uint64_t amount; + uint64_t fees; + char destination[ENCODED_ED25519_PUBLIC_KEY_LENGTH]; // ed25519 address only + char memo[20]; +} swap_values_t; diff --git a/src/ui/action/validate.c b/src/ui/action/validate.c new file mode 100644 index 00000000..f46f4b1b --- /dev/null +++ b/src/ui/action/validate.c @@ -0,0 +1,53 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // bool + +#include "./validate.h" +#include "../ui.h" +#include "../../send_response.h" +#include "../../sw.h" +#include "../../crypto.h" +#include "../../globals.h" + +void ui_action_validate_pubkey(bool choice) { + if (choice) { + send_response_pubkey(); + } else { + io_send_sw(SW_DENY); + } + + ui_menu_main(); +} + +void ui_action_validate_transaction(bool choice) { + if (choice) { + G_context.state = STATE_APPROVED; + uint8_t signature[SIGNATURE_SIZE]; + if (crypto_sign_message(G_context.hash, sizeof(G_context.hash), signature, SIGNATURE_SIZE) < + 0) { + G_context.state = STATE_NONE; + io_send_sw(SW_SIGNATURE_FAIL); + } else { + send_response_sig(signature, SIGNATURE_SIZE); + } + } else { + G_context.state = STATE_NONE; + io_send_sw(SW_DENY); + } + ui_menu_main(); +}; diff --git a/src/ui/action/validate.h b/src/ui/action/validate.h new file mode 100644 index 00000000..a8b03565 --- /dev/null +++ b/src/ui/action/validate.h @@ -0,0 +1,21 @@ +#pragma once + +#include // bool + +/** + * Action for public key validation and export. + * + * @param[in] choice + * User choice (either approved or rejected). + * + */ +void ui_action_validate_pubkey(bool choice); + +/** + * Action for signature validation and export. + * + * @param[in] choice + * User choice (either approved or rejected). + * + */ +void ui_action_validate_transaction(bool choice); diff --git a/src/ui/ui.h b/src/ui/ui.h new file mode 100644 index 00000000..ecd9508b --- /dev/null +++ b/src/ui/ui.h @@ -0,0 +1,39 @@ +#pragma once + +#include // bool + +#include "os.h" +#include "ux.h" + +#include "../glyphs.h" + +#define INSIDE_BORDERS 0 +#define OUT_OF_BORDERS 1 + +/** + * Display address on the device and ask confirmation to export. + * + * @return 0 if success, negative integer otherwise. + * + */ +int ui_display_address(); + +/** + * Show main menu (ready screen, version, about, quit). + */ +void ui_menu_main(); + +/** + * Shows the process of signing a transaction hash. + * + * @return 0 if success, negative integer otherwise. + * + */ +int ui_approve_tx_hash_init(); + +/** + * Shows the process of signing a transaction. + * + * @return 0 if success, negative integer otherwise. + */ +int ui_approve_tx_init(); \ No newline at end of file diff --git a/src/ui/ui_address.c b/src/ui/ui_address.c new file mode 100644 index 00000000..83871b97 --- /dev/null +++ b/src/ui/ui_address.c @@ -0,0 +1,80 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // bool +#include // memset + +#include "./ui.h" +#include "./action/validate.h" +#include "../globals.h" +#include "../sw.h" +#include "../utils.h" +#include "../io.h" + +// Step with icon and text +UX_STEP_NOCB(ux_display_confirm_addr_step, pnn, {&C_icon_eye, "Confirm", "Address"}); +// Step with title/text for address +UX_STEP_NOCB(ux_display_address_step, + bnnn_paging, + { + .title = "Address", + .text = G_ui_detail_value, + }); +// Step with approve button +UX_STEP_CB(ux_display_approve_step, + pb, + (*G_ui_validate_callback)(true), + { + &C_icon_validate_14, + "Approve", + }); +// Step with reject button +UX_STEP_CB(ux_display_reject_step, + pb, + (*G_ui_validate_callback)(false), + { + &C_icon_crossmark, + "Reject", + }); + +// FLOW to display address and BIP32 path: +// #1 screen: eye icon + "Confirm Address" +// #2 screen: display address +// #3 screen: approve button +// #4 screen: reject button +UX_FLOW(ux_display_pubkey_flow, + &ux_display_confirm_addr_step, + &ux_display_address_step, + &ux_display_approve_step, + &ux_display_reject_step); + +int ui_display_address() { + if (G_context.req_type != CONFIRM_ADDRESS || G_context.state != STATE_NONE) { + G_context.state = STATE_NONE; + return io_send_sw(SW_BAD_STATE); + } + + memset(G_ui_detail_value, 0, sizeof(G_ui_detail_value)); + if (!encode_ed25519_public_key(G_context.raw_public_key, + G_ui_detail_value, + sizeof(G_ui_detail_value))) { + return io_send_sw(SW_DISPLAY_ADDRESS_FAIL); + } + G_ui_validate_callback = &ui_action_validate_pubkey; + ux_flow_init(0, ux_display_pubkey_flow, NULL); + return 0; +} diff --git a/src/ui/ui_menu.c b/src/ui/ui_menu.c new file mode 100644 index 00000000..f4a7308a --- /dev/null +++ b/src/ui/ui_menu.c @@ -0,0 +1,126 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include "./ui.h" +#include "../globals.h" +#include "../settings.h" + +void ui_idle(void); +void display_settings(const ux_flow_step_t* const start_step); +void switch_settings_hash_signing(); +void switch_settings_sequence_number(); +// FLOW for the settings menu: +// #1 screen: enable hash signing +// #2 screen: quit +#if defined(TARGET_NANOS) +UX_STEP_CB(ux_settings_hash_signing_step, + bnnn_paging, + switch_settings_hash_signing(), + { + .title = "Hash signing", + .text = G_ui_detail_value, + }); +UX_STEP_CB(ux_settings_sequence_number_step, + bnnn_paging, + switch_settings_sequence_number(), + { + .title = "Sequence Number", + .text = G_ui_detail_value + 12, + }); +#else +UX_STEP_CB(ux_settings_hash_signing_step, + bnnn, + switch_settings_hash_signing(), + { + "Hash signing", + "Enable transaction", + "hash signing", + G_ui_detail_value, + }); +UX_STEP_CB(ux_settings_sequence_number_step, + bnnn, + switch_settings_sequence_number(), + { + "Sequence Number", + "Display sequence", + "in transactions", + G_ui_detail_value + 12, + }); +#endif +UX_STEP_CB(ux_settings_exit_step, + pb, + ui_idle(), + { + &C_icon_back_x, + "Back", + }); +UX_FLOW(ux_settings_flow, + &ux_settings_hash_signing_step, + &ux_settings_sequence_number_step, + &ux_settings_exit_step); + +// We have a screen with the icon and "Stellar is ready" +UX_STEP_NOCB(ux_menu_ready_step, pnn, {&C_icon_stellar, "Stellar", "is ready"}); +UX_STEP_NOCB(ux_menu_version_step, bn, {"Version", APPVERSION}); +UX_STEP_CB(ux_menu_settings_step, pb, display_settings(NULL), {&C_icon_coggle, "Settings"}); +UX_STEP_VALID(ux_menu_exit_step, pb, os_sched_exit(-1), {&C_icon_dashboard_x, "Quit"}); + +// FLOW for the main menu: +// #1 screen: ready +// #2 screen: version of the app +// #3 screen: quit +UX_FLOW(ux_menu_main_flow, + &ux_menu_ready_step, + &ux_menu_settings_step, + &ux_menu_version_step, + &ux_menu_exit_step, + FLOW_LOOP); + +void ui_menu_main(void) { + if (G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_menu_main_flow, NULL); +}; + +void ui_idle(void) { + // reserve a display stack slot if none yet + if (G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_menu_main_flow, NULL); +} + +void display_settings(const ux_flow_step_t* const start_step) { + strlcpy(G_ui_detail_value, + (HAS_SETTING(S_HASH_SIGNING_ENABLED) ? "Enabled" : "NOT Enabled"), + 12); + strlcpy(G_ui_detail_value + 12, + (HAS_SETTING(S_SEQUENCE_NUMBER_ENABLED) ? "Displayed" : "NOT Displayed"), + 14); + ux_flow_init(0, ux_settings_flow, start_step); +} + +void switch_settings_hash_signing() { + SETTING_TOGGLE(S_HASH_SIGNING_ENABLED); + display_settings(&ux_settings_hash_signing_step); +} + +void switch_settings_sequence_number() { + SETTING_TOGGLE(S_SEQUENCE_NUMBER_ENABLED); + display_settings(&ux_settings_sequence_number_step); +} diff --git a/src/ui/ui_transaction.c b/src/ui/ui_transaction.c new file mode 100644 index 00000000..38d430dd --- /dev/null +++ b/src/ui/ui_transaction.c @@ -0,0 +1,169 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // bool +#include // memset + +#include "./ui.h" +#include "./action/validate.h" +#include "../globals.h" +#include "../utils.h" +#include "../sw.h" +#include "../io.h" +#include "../transaction/transaction_parser.h" +#include "../transaction/transaction_formatter.h" + +static uint8_t num_data; + +static void display_next_state(bool is_upper_border); +// clang-format off +UX_STEP_NOCB( + ux_confirm_tx_init_flow_step, + pnn, + { + &C_icon_eye, + "Review", + "Transaction", + }); + +UX_STEP_INIT( + ux_init_upper_border, + NULL, + NULL, + { + display_next_state(true); + }); +UX_STEP_NOCB( + ux_variable_display, + bnnn_paging, + { + .title = G_ui_detail_caption, + .text = G_ui_detail_value, + }); +UX_STEP_INIT( + ux_init_lower_border, + NULL, + NULL, + { + display_next_state(false); + }); + +UX_STEP_CB( + ux_confirm_tx_finalize_step, + pnn, + G_ui_validate_callback(true), + { + &C_icon_validate_14, + "Finalize", + "Transaction", + }); + +UX_STEP_CB( + ux_reject_tx_flow_step, + pb, + G_ui_validate_callback(false), + { + &C_icon_crossmark, + "Cancel", + }); + +UX_FLOW(ux_confirm_flow, + &ux_confirm_tx_init_flow_step, + + &ux_init_upper_border, + &ux_variable_display, + &ux_init_lower_border, + + &ux_confirm_tx_finalize_step, + &ux_reject_tx_flow_step +); + + +static void display_next_state(bool is_upper_border) { + PRINTF( + "display_next_state invoked. is_upper_border = %d, G_ui_current_state = %d, formatter_index = " + "%d, G_ui_current_data_index = %d\n", + is_upper_border, + G_ui_current_state, + formatter_index, + G_ui_current_data_index); + if (is_upper_border) { // -> from first screen + if (G_ui_current_state == OUT_OF_BORDERS) { + G_ui_current_state = INSIDE_BORDERS; + set_state_data(true); + ux_flow_next(); + } else { + formatter_index -= 1; + if (G_ui_current_data_index > 0) { // <- from middle, more screens available + set_state_data(false); + if (formatter_stack[formatter_index] != NULL) { + ux_flow_next(); + } else { + G_ui_current_state = OUT_OF_BORDERS; + G_ui_current_data_index = 0; + ux_flow_prev(); + } + } else { // <- from middle, no more screens available + G_ui_current_state = OUT_OF_BORDERS; + G_ui_current_data_index = 0; + ux_flow_prev(); + } + } + } else // walking over the second border + { + if (G_ui_current_state == OUT_OF_BORDERS) { // <- from last screen + G_ui_current_state = INSIDE_BORDERS; + set_state_data(false); + ux_flow_prev(); + } else { + if ((num_data != 0 && G_ui_current_data_index < num_data - 1) || + formatter_stack[formatter_index + 1] != + NULL) { // -> from middle, more screens available + formatter_index += 1; + set_state_data(true); + /*dirty hack to have coherent behavior on bnnn_paging when there are multiple + * screens*/ + G_ux.flow_stack[G_ux.stack_count - 1].prev_index = + G_ux.flow_stack[G_ux.stack_count - 1].index - 2; + G_ux.flow_stack[G_ux.stack_count - 1].index--; + ux_flow_relayout(); + /*end of dirty hack*/ + } else { // -> from middle, no more screens available + G_ui_current_state = OUT_OF_BORDERS; + ux_flow_next(); + } + } + } +} + + +int ui_approve_tx_init(void) { + if (G_context.req_type != CONFIRM_TRANSACTION || G_context.state != STATE_PARSED) { + G_context.state = STATE_NONE; + return io_send_sw(SW_BAD_STATE); + } + G_ui_current_data_index = 0; + G_ui_current_state = OUT_OF_BORDERS; + G_context.tx_info.offset = 0; + formatter_index = 0; + + explicit_bzero(formatter_stack, sizeof(formatter_stack)); + num_data = G_context.tx_info.tx_details.operations_count; + G_ui_validate_callback = &ui_action_validate_transaction; + ux_flow_init(0, ux_confirm_flow, NULL); + return 0; +} \ No newline at end of file diff --git a/src/ui/ui_transaction_hash.c b/src/ui/ui_transaction_hash.c new file mode 100644 index 00000000..02cd3e0e --- /dev/null +++ b/src/ui/ui_transaction_hash.c @@ -0,0 +1,201 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // bool +#include // memset + +#include "./ui.h" +#include "./action/validate.h" +#include "../globals.h" +#include "../sw.h" +#include "../utils.h" +#include "../io.h" +#include "../common/format.h" + +static void display_next_state(bool is_upper_delimiter); + +// Step with icon and text +UX_STEP_NOCB(ux_tx_hash_signing_review_step, + pnn, + { + &C_icon_eye, + "Review", + "Transaction", + }); +UX_STEP_NOCB(ux_tx_hash_signing_warning_step, + pbb, + { + &C_icon_warning, + "Hash", + "Signing", + }); +// what we're doing here is a little more complicated due to the need to reduce memory usage +UX_STEP_INIT(ux_tx_init_upper_border, NULL, NULL, { display_next_state(true); }); +UX_STEP_NOCB(ux_tx_variable_display, + bnnn_paging, + { + .title = G_ui_detail_caption, + .text = G_ui_detail_value, + }); +UX_STEP_INIT(ux_tx_init_lower_border, NULL, NULL, { display_next_state(false); }); +// Step with approve button +UX_STEP_CB(ux_tx_hash_display_approve_step, + pb, + (*G_ui_validate_callback)(true), + { + &C_icon_validate_14, + "Approve", + }); +// Step with reject button +UX_STEP_CB(ux_tx_hash_display_reject_step, + pb, + (*G_ui_validate_callback)(false), + { + &C_icon_crossmark, + "Reject", + }); +// FLOW to display hash signing +// #1 screen: eye icon + "Review Transaction" +// #1 screen: warning icon + "Hash Signing" +// #2 screen: display address +// #3 screen: display hash +// #4 screen: approve button +// #5 screen: reject button +UX_FLOW(ux_tx_hash_signing_flow, + &ux_tx_hash_signing_review_step, + &ux_tx_hash_signing_warning_step, + &ux_tx_init_upper_border, + &ux_tx_variable_display, + &ux_tx_init_lower_border, + &ux_tx_hash_display_approve_step, + &ux_tx_hash_display_reject_step); + +static bool get_next_data(char *caption, char *value, bool forward) { + if (forward) { + G_ui_current_data_index++; + } else { + G_ui_current_data_index--; + } + switch (G_ui_current_data_index) { + case 1: + strlcpy(caption, "Address", DETAIL_CAPTION_MAX_LENGTH); + if (!encode_ed25519_public_key(G_context.raw_public_key, + value, + DETAIL_VALUE_MAX_LENGTH)) { + return io_send_sw(SW_DISPLAY_ADDRESS_FAIL); + } + break; + case 2: + strlcpy(caption, "Hash", DETAIL_CAPTION_MAX_LENGTH); + if (!format_hex(G_context.hash, 32, value, DETAIL_VALUE_MAX_LENGTH)) { + return io_send_sw(SW_DISPLAY_TRANSACTION_HASH_FAIL); + } + break; + default: + return false; + } + return true; +} + +// This is a special function you must call for bnnn_paging to work properly in an edgecase. +// It does some weird stuff with the `G_ux` global which is defined by the SDK. +// No need to dig deeper into the code, a simple copy-paste will do. +static void bnnn_paging_edgecase() { + G_ux.flow_stack[G_ux.stack_count - 1].prev_index = + G_ux.flow_stack[G_ux.stack_count - 1].index - 2; + G_ux.flow_stack[G_ux.stack_count - 1].index--; + ux_flow_relayout(); +} + +// Main function that handles all the business logic for our new display architecture. +static void display_next_state(bool is_upper_delimiter) { + if (is_upper_delimiter) { // We're called from the upper delimiter. + if (G_ui_current_state == OUT_OF_BORDERS) { + // Fetch new data. + bool dynamic_data = get_next_data(G_ui_detail_caption, G_ui_detail_value, true); + + if (dynamic_data) { + // We found some data to display so we now enter in dynamic mode. + G_ui_current_state = INSIDE_BORDERS; + } + + // Move to the next step, which will display the screen. + ux_flow_next(); + } else { + // The previous screen was NOT a static screen, so we were already in a dynamic screen. + + // Fetch new data. + bool dynamic_data = get_next_data(G_ui_detail_caption, G_ui_detail_value, false); + if (dynamic_data) { + // We found some data so simply display it. + ux_flow_next(); + } else { + // There's no more dynamic data to display, so + // update the current state accordingly. + G_ui_current_state = OUT_OF_BORDERS; + + // Display the previous screen which should be a static one. + ux_flow_prev(); + } + } + } else { + // We're called from the lower delimiter. + + if (G_ui_current_state == OUT_OF_BORDERS) { + // Fetch new data. + bool dynamic_data = get_next_data(G_ui_detail_caption, G_ui_detail_value, false); + + if (dynamic_data) { + // We found some data to display so enter in dynamic mode. + G_ui_current_state = INSIDE_BORDERS; + } + + // Display the data. + ux_flow_prev(); + } else { + // We're being called from a dynamic screen, so the user was already browsing the + // array. + + // Fetch new data. + bool dynamic_data = get_next_data(G_ui_detail_caption, G_ui_detail_value, true); + if (dynamic_data) { + // We found some data, so display it. + // Similar to `ux_flow_prev()` but updates layout to account for `bnnn_paging`'s + // weird behaviour. + bnnn_paging_edgecase(); + } else { + // We found no data so make sure we update the state accordingly. + G_ui_current_state = OUT_OF_BORDERS; + + // Display the next screen + ux_flow_next(); + } + } + } +} + +int ui_approve_tx_hash_init() { + if (G_context.req_type != CONFIRM_TRANSACTION_HASH || G_context.state != STATE_NONE) { + G_context.state = STATE_NONE; + return io_send_sw(SW_BAD_STATE); + } + G_ui_current_state = OUT_OF_BORDERS; + G_ui_current_data_index = 0; + G_ui_validate_callback = &ui_action_validate_transaction; + ux_flow_init(0, ux_tx_hash_signing_flow, NULL); + return 0; +} \ No newline at end of file diff --git a/src/utils.c b/src/utils.c new file mode 100644 index 00000000..1fcb6a2e --- /dev/null +++ b/src/utils.c @@ -0,0 +1,519 @@ +/***************************************************************************** + * Ledger Stellar App. + * (c) 2022 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include +#include +#include +#include + +#include "./utils.h" +#include "./common/base32.h" +#include "./common/base58.h" +#include "./common/format.h" + +#define MUXED_ACCOUNT_MED_25519_SIZE 43 +#define BINARY_MAX_SIZE 36 +#define AMOUNT_WITH_COMMAS_MAX_LENGTH 24 // 922,337,203,685.4775807 + +static const char BASE64_ALPHABET[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +static int BASE64_MOD_TABLE[] = {0, 2, 1}; + +bool base64_encode(const uint8_t *data, size_t in_len, char *out, size_t out_len) { + size_t encoded_len = 4 * ((in_len + 2) / 3); + if (encoded_len > out_len) { + return false; + } + + for (unsigned int i = 0, j = 0; i < in_len;) { + uint32_t octet_a = i < in_len ? data[i++] : 0; + uint32_t octet_b = i < in_len ? data[i++] : 0; + uint32_t octet_c = i < in_len ? data[i++] : 0; + + uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c; + + out[j++] = BASE64_ALPHABET[(triple >> 3 * 6) & 0x3F]; + out[j++] = BASE64_ALPHABET[(triple >> 2 * 6) & 0x3F]; + out[j++] = BASE64_ALPHABET[(triple >> 1 * 6) & 0x3F]; + out[j++] = BASE64_ALPHABET[(triple >> 0 * 6) & 0x3F]; + } + + for (int i = 0; i < BASE64_MOD_TABLE[in_len % 3]; i++) { + out[encoded_len - 1 - i] = '='; + } + + out[encoded_len] = '\0'; + return true; +} + +uint16_t crc16(const uint8_t *input_str, int num_bytes) { + uint16_t crc; + crc = 0; + while (--num_bytes >= 0) { + crc = crc ^ (uint32_t) *input_str++ << 8; + int i = 8; + do { + if (crc & 0x8000) + crc = crc << 1 ^ 0x1021; + else + crc = crc << 1; + } while (--i); + } + return crc; +} + +bool encode_key(const uint8_t *in, uint8_t version_byte, char *out, uint8_t out_len) { + if (out_len < 56 + 1) { + return false; + } + uint8_t buffer[35]; + buffer[0] = version_byte; + for (uint8_t i = 0; i < 32; i++) { + buffer[i + 1] = in[i]; + } + uint16_t crc = crc16(buffer, 33); // checksum + buffer[33] = crc; + buffer[34] = crc >> 8; + if (base32_encode(buffer, 35, (uint8_t *) out, 56) == -1) { + return false; + } + out[56] = '\0'; + return true; +} + +bool encode_ed25519_public_key(const uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE], + char *out, + size_t out_len) { + return encode_key(raw_public_key, VERSION_BYTE_ED25519_PUBLIC_KEY, out, out_len); +} + +bool encode_hash_x_key(const uint8_t raw_hash_x[static RAW_HASH_X_KEY_SIZE], + char *out, + size_t out_len) { + return encode_key(raw_hash_x, VERSION_BYTE_HASH_X, out, out_len); +} + +bool encode_pre_auth_x_key(const uint8_t raw_pre_auth_tx[static RAW_PRE_AUTH_TX_KEY_SIZE], + char *out, + size_t out_len) { + return encode_key(raw_pre_auth_tx, VERSION_BYTE_PRE_AUTH_TX_KEY, out, out_len); +} + +bool encode_muxed_account(const muxed_account_t *raw_muxed_account, char *out, size_t out_len) { + if (raw_muxed_account->type == KEY_TYPE_ED25519) { + return encode_ed25519_public_key(raw_muxed_account->ed25519, out, out_len); + } else { + if (out_len < ENCODED_MUXED_ACCOUNT_KEY_LENGTH) { + return false; + } + uint8_t buffer[MUXED_ACCOUNT_MED_25519_SIZE]; + buffer[0] = VERSION_BYTE_MUXED_ACCOUNT; + memcpy(buffer + 1, raw_muxed_account->med25519.ed25519, RAW_ED25519_PUBLIC_KEY_SIZE); + for (int i = 0; i < 8; i++) { + buffer[33 + i] = raw_muxed_account->med25519.id >> 8 * (7 - i); + } + uint16_t crc = crc16(buffer, MUXED_ACCOUNT_MED_25519_SIZE - 2); // checksum + buffer[41] = crc; + buffer[42] = crc >> 8; + if (base32_encode(buffer, + MUXED_ACCOUNT_MED_25519_SIZE, + (uint8_t *) out, + ENCODED_MUXED_ACCOUNT_KEY_LENGTH) == -1) { + return false; + } + out[69] = '\0'; + return true; + } +} + +bool print_summary(const char *in, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r) { + uint8_t result_len = num_chars_l + num_chars_r + 2; + if (out_len < result_len + 1) { + return false; + } + uint16_t in_len = strlen(in); + if (in_len > result_len) { + memcpy(out, in, num_chars_l); + out[num_chars_l] = '.'; + out[num_chars_l + 1] = '.'; + memcpy(out + num_chars_l + 2, in + in_len - num_chars_r, num_chars_r); + out[result_len] = '\0'; + } else { + memcpy(out, in, in_len); + out[in_len] = '\0'; + } + return true; +} + +bool print_binary(const uint8_t *in, + size_t in_len, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r) { + if (num_chars_l > 0) { + char buffer[BINARY_MAX_SIZE * 2 + 1]; // FIXME + if (!format_hex(in, in_len, buffer, sizeof(buffer))) { + return false; + } + return print_summary(buffer, out, out_len, num_chars_l, num_chars_r); + } + return format_hex(in, in_len, out, out_len); +} + +bool print_account_id(const account_id_t account_id, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r) { + if (num_chars_l > 0) { + char buffer[ENCODED_ED25519_PUBLIC_KEY_LENGTH]; + if (!encode_ed25519_public_key(account_id, buffer, sizeof(buffer))) { + return false; + } + return print_summary(buffer, out, out_len, num_chars_l, num_chars_r); + } + return encode_ed25519_public_key(account_id, out, out_len); +} + +bool print_muxed_account(const muxed_account_t *muxed_account, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r) { + if (num_chars_l > 0) { + char buffer[ENCODED_MUXED_ACCOUNT_KEY_LENGTH]; + if (!encode_muxed_account(muxed_account, buffer, sizeof(buffer))) { + return false; + } + return print_summary(buffer, out, out_len, num_chars_l, num_chars_r); + } + return encode_muxed_account(muxed_account, out, out_len); +} + +bool print_claimable_balance_id(const claimable_balance_id *claimable_balance_id, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r) { + if (out_len < 36 * 2 + 1) { + return false; + } + uint8_t data[36]; + // enum is 1 byte + data[0] = '\0'; + data[1] = '\0'; + data[2] = '\0'; + data[3] = claimable_balance_id->type; + memcpy(data + 4, claimable_balance_id->v0, 32); + return print_binary(data, 36, out, out_len, num_chars_l, num_chars_r); +} + +bool print_uint(uint64_t num, char *out, size_t out_len) { + char buffer[AMOUNT_MAX_LENGTH]; + uint64_t d_val = num; + size_t i, j; + + if (num == 0) { + if (out_len < 2) { + return false; + } + if (strlcpy(out, "0", out_len) >= out_len) { + return false; + } + return true; + } + + memset(buffer, 0, AMOUNT_MAX_LENGTH); + for (i = 0; d_val > 0; i++) { + if (i >= AMOUNT_MAX_LENGTH) { + return false; + } + buffer[i] = (d_val % 10) + '0'; + d_val /= 10; + } + if (out_len <= i) { + return false; + } + // reverse order + for (j = 0; j < i; j++) { + out[j] = buffer[i - j - 1]; + } + out[i] = '\0'; + return true; +} + +bool print_int(int64_t num, char *out, size_t out_len) { + if (out_len == 0) { + return false; + } + if (num < 0) { + uint64_t n; + + out[0] = '-'; + if (num == INT64_MIN) { + n = (uint64_t) num; + } else { + n = -num; + } + return print_uint(n, out + 1, out_len - 1); + } + return print_uint(num, out, out_len); +} + +bool print_time(uint64_t seconds, char *out, size_t out_len) { + if (seconds > 253402300799) { + // valid range 1970-01-01 00:00:00 - 9999-12-31 23:59:59 + return false; + } + char time_str[20] = {0}; // 1970-01-01 00:00:00 + + if (out_len < sizeof(time_str)) { + return false; + } + struct tm tm; + if (!gmtime_r((time_t *) &seconds, &tm)) { + return false; + }; + + if (snprintf(time_str, + sizeof(time_str), + "%04d-%02d-%02d %02d:%02d:%02d", + tm.tm_year + 1900, + tm.tm_mon + 1, + tm.tm_mday, + tm.tm_hour, + tm.tm_min, + tm.tm_sec) < 0) { + return false; + }; + if (strlcpy(out, time_str, out_len) >= out_len) { + return false; + } + return true; +} + +bool print_asset_name(const asset_t *asset, uint8_t network_id, char *out, size_t out_len) { + switch (asset->type) { + case ASSET_TYPE_NATIVE: + if (network_id == NETWORK_TYPE_UNKNOWN) { + if (strlcpy(out, "native", out_len) >= out_len) { + return false; + } + } else { + if (strlcpy(out, "XLM", out_len) >= out_len) { + return false; + } + } + return true; + case ASSET_TYPE_CREDIT_ALPHANUM4: + for (int i = 0; i < 4; i++) { + out[i] = asset->alpha_num4.asset_code[i]; + if (out[i] == 0) { + break; + } + } + out[4] = 0; + return true; + case ASSET_TYPE_CREDIT_ALPHANUM12: + for (int i = 0; i < 12; i++) { + out[i] = asset->alpha_num12.asset_code[i]; + if (out[i] == 0) { + break; + } + } + out[12] = 0; + return true; + default: + return false; + } +} + +bool print_asset(const asset_t *asset, uint8_t network_id, char *out, size_t out_len) { + char asset_code[12 + 1]; + char asset_issuer[3 + 2 + 4 + 1]; + print_asset_name(asset, network_id, asset_code, sizeof(asset_code)); + + switch (asset->type) { + case ASSET_TYPE_CREDIT_ALPHANUM4: + print_account_id(asset->alpha_num4.issuer, asset_issuer, sizeof(asset_issuer), 3, 4); + break; + case ASSET_TYPE_CREDIT_ALPHANUM12: + print_account_id(asset->alpha_num12.issuer, asset_issuer, sizeof(asset_issuer), 3, 4); + break; + default: + break; + } + if (strlcpy(out, asset_code, out_len) >= out_len) { + return false; + } + if (asset->type != ASSET_TYPE_NATIVE) { + strlcat(out, "@", out_len); + strlcat(out, asset_issuer, out_len); + } + return true; +} + +bool print_flag(char *flag, char *out, size_t out_len) { + if (out[0]) { + if (strlcat(out, ", ", out_len) >= out_len) { + return false; + } + } + if (strlcat(out, flag, out_len) >= out_len) { + return false; + } + return true; +} + +bool print_account_flags(uint32_t flags, char *out, size_t out_len) { + if (flags & 0x01u) { + if (!print_flag("AUTH_REQUIRED", out, out_len)) { + return false; + } + } + if (flags & 0x02u) { + if (!print_flag("AUTH_REVOCABLE", out, out_len)) { + return false; + } + } + if (flags & 0x04u) { + if (!print_flag("AUTH_IMMUTABLE", out, out_len)) { + return false; + } + } + if (flags & 0x08u) { + if (!print_flag("AUTH_CLAWBACK_ENABLED", out, out_len)) { + return false; + } + } + return true; +} + +bool print_trust_line_flags(uint32_t flags, char *out, size_t out_len) { + if (flags & AUTHORIZED_FLAG) { + if (!print_flag("AUTHORIZED", out, out_len)) { + return false; + } + } + if (flags & AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG) { + if (!print_flag("AUTHORIZED_TO_MAINTAIN_LIABILITIES", out, out_len)) { + return false; + } + } + if (flags & TRUSTLINE_CLAWBACK_ENABLED_FLAG) { + if (!print_flag("TRUSTLINE_CLAWBACK_ENABLED", out, out_len)) { + return false; + } + } + return true; +} + +bool print_allow_trust_flags(uint32_t flag, char *out, size_t out_len) { + if (flag & AUTHORIZED_FLAG) { + if (strlcpy(out, "AUTHORIZED", out_len) >= out_len) { + return false; + } + } else if (flag & AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG) { + if (strlcpy(out, "AUTHORIZED_TO_MAINTAIN_LIABILITIES", out_len) >= out_len) { + return false; + } + } else { + if (strlcpy(out, "UNAUTHORIZED", out_len) >= out_len) { + return false; + } + } + return true; +} + +bool print_amount(uint64_t amount, + const asset_t *asset, + uint8_t network_id, + char *out, + size_t out_len) { + char buffer[AMOUNT_WITH_COMMAS_MAX_LENGTH] = {0}; + uint64_t d_val = amount; + int i; + + for (i = 0; d_val > 0 || i < 9; i++) { + // len('100.0000001') == 11 + if (i >= 11 && i < AMOUNT_WITH_COMMAS_MAX_LENGTH && (i - 11) % 4 == 0) { + buffer[i] = ','; + i += 1; + } + if (i >= AMOUNT_WITH_COMMAS_MAX_LENGTH) { + return false; + } + if (d_val > 0) { + buffer[i] = (d_val % 10) + '0'; + d_val /= 10; + } else { + buffer[i] = '0'; + } + if (i == 6) { // stroops to xlm: 1 xlm = 10000000 stroops + i += 1; + buffer[i] = '.'; + } + if (i >= AMOUNT_WITH_COMMAS_MAX_LENGTH) { + return false; + } + } + + // reverse order + for (int j = 0; j < i / 2; j++) { + char c = buffer[j]; + buffer[j] = buffer[i - j - 1]; + buffer[i - j - 1] = c; + } + + // strip trailing 0s + i -= 1; + while (buffer[i] == '0') { + buffer[i] = 0; + i -= 1; + } + // strip trailing . + if (buffer[i] == '.') buffer[i] = 0; + if (strlcpy(out, buffer, out_len) >= out_len) { + return false; + } + + char asset_info[23]; // BANANANANANA@GBD..KHK4, 12 + 1 + 3 + 2 + 4 = 22 + + if (asset) { + // qualify amount + if (!print_asset(asset, network_id, asset_info, 23)) { + return false; + }; + strlcat(out, " ", out_len); + strlcat(out, asset_info, out_len); + } + return true; +} + +bool is_printable_binary(const uint8_t *str, size_t str_len) { + for (size_t i = 0; i < str_len; i++) { + if (str[i] > 0x7e || str[i] < 0x20) { + return false; + } + } + return true; +} diff --git a/src/utils.h b/src/utils.h new file mode 100644 index 00000000..e3fefab7 --- /dev/null +++ b/src/utils.h @@ -0,0 +1,74 @@ +#pragma once + +#include "./types.h" + +bool encode_ed25519_public_key(const uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE], + char *out, + size_t out_len); + +bool encode_hash_x_key(const uint8_t raw_hash_x[static RAW_HASH_X_KEY_SIZE], + char *out, + size_t out_len); + +bool encode_pre_auth_x_key(const uint8_t raw_pre_auth_tx[static RAW_PRE_AUTH_TX_KEY_SIZE], + char *out, + size_t out_len); + +bool encode_muxed_account(const muxed_account_t *raw_muxed_account, char *out, size_t out_len); + +bool print_claimable_balance_id(const claimable_balance_id *claimable_balance_id, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r); + +bool print_binary(const uint8_t *in, + size_t in_len, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r); + +bool print_time(uint64_t seconds, char *out, size_t out_len); + +bool print_asset_name(const asset_t *asset, uint8_t network_id, char *out, size_t out_len); + +bool print_asset(const asset_t *asset, uint8_t network_id, char *out, size_t out_len); + +bool print_account_flags(uint32_t flags, char *out, size_t out_len); + +bool print_trust_line_flags(uint32_t flags, char *out, size_t out_len); + +bool print_allow_trust_flags(uint32_t flag, char *out, size_t out_len); + +bool print_amount(uint64_t amount, + const asset_t *asset, + uint8_t network_id, + char *out, + size_t out_len); + +bool print_account_id(account_id_t account_id, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r); + +bool print_muxed_account(const muxed_account_t *muxed_account, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r); + +bool print_summary(const char *in, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r); + +bool print_uint(uint64_t num, char *out, size_t out_len); + +bool print_int(int64_t num, char *out, size_t out_len); + +bool base64_encode(const uint8_t *data, size_t in_len, char *out, size_t out_len); + +bool is_printable_binary(const uint8_t *str, size_t str_len); diff --git a/stellar.png b/stellar.png deleted file mode 100755 index 892e7cad66cd933721a3d7e7c6dc2fbaa8450dd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1997 zcmV;;2Qv7HP)+WBVT2 z%lMU_J;H+4U`BNA9%2Bs@#`w+acqA@_77rkPOBbS2l15^7Qk*0UwF=`ju?b5j?`_> zku~6e>L@k{8JGY$h;76P{B)XWdyA|EiwYv^!EdM8Fe{~{f#NjSI&1)gjeZM2SXyQ? zQiZhugr&Iwr3D}?%?&7f0K(F=LTO-01t=SE6E?t{=xg3sRu4IKata{&_6sCqVLzn& zpan6$Ul=svW2Cj=SW72WT~a3 z>~rK}?@Gxh{I3Q|;Q9|k{m8Zm_5PTm0!K+SS5Co`J ztJv7s!20?+DwWFQvwpw-&O8xos_p4NJiy_GFLHc%baWKn+}wmOFE630_+9>{(P)Gb zL}$-$Y~5)fPG+)RuZNvZC)6dTML3S0FQcu|V!^6wnbQp-spscsEnt|>ySqD`Kmr1B zrvJfe#UuzBm}RQ6=?muV?M)|;ub<(_5PQ@{pxthd8tQo(4u^Pre8kh!6MDTKUSD4) zjW>V0xw(n0tu1VCZ%-QjH1T`gZWp_|yQ4H0DFT63t2KHxq%Ho_hNTi9Gd9>47Z-D{ zWYIYD%H;R6q|e`6US7@w1AHG{07~i2t3oxFkZ{Zbml_ky4CCS9VJ-+&r!6v8O-zf& z(*eQ|kaGgL(U_n%7%UMwKrCabL4~+rG#;BQ@>!dk27@QLx3_0KKg)nHaKYT=0_5c6 zM0%o8Bb`eJ&H)g@MxDc+&6967o6f+9qAcYwn}LUg{5@L*!V{w7^M=7=G4gT$ zoM7vOO@PpxcY8pXahZ;fkDUT>eSNLuWVRzwCovoh2HJsyHcaLaMp`D1DV(M>= zjeFKKHTOf_tN=+X9j2-(8z6+d1R^UPtfPGf;WZFhWToN^mqB<7geRXA0r?IhOPWpr zVHB0rN5_Bi2Eln0%^>Un;UHmB%brZ$AShN*2K!Csfyf3CeFPzNetvG!U*>@%m8I{I zHwamXYpANS14P#UxV^pA>NExjs!rm-rYz!1N-Tm%hU?w~kwsXG`X8!J<9Ae7j${QP ze#hWr<$;`@o;nYrP(YF;L^p`FwY6}6e_tt04h(WdWLjD)2SnC}2q2uMRdHIDS-PE_ z9c?pz1bcRNwpu`{)#{8h7-i|6E>&F}k|j+7N%o-(_d(19Nt>>nCsrdWPNTzAK`>25 zZCU2RnSQblrFq=SJ`j~EX&DeIRnxK{gjFh)nKZlIuAe~Yv}A*53xr5>SrEc_tfW|l zc?Be^(@cQSu}p`@yt=x2mo`h>!NGxFKzs)=ee7g)YoS5c55#v6!VV7)XO5-uK9GEY z_yj`aLsmL0R99w!@FaADV458MHn|8}RysJeV(NItfe5E9s&5H`OF326OR1*$QDc5& zrGpWh$>S!0^mHZYD+rOVWMm~u$4V|Gbrpojo2=htvF)%6guULhTM&{CU^HWR0B;6{ zY#|0^DYCK$gdlk3sjO|X4Pp@t%T?7oAli3va2)6v0uPh#$~~%fS}m> zcVHis(QVOfQ$VtSP+9uJYKDz4d-ilPoh>td#_te<%Df31@SNI=X`Ac~f2m>(724BRRQ@DHO6vaj%uh=Hm zi%V#QMIg8Q&-6yhJsk%7oaE|0?_7Q_2q*6YrvY>W&G~r@v!KHQ`si>_fXTn)CRG+5p1R zw7_UVliC2n(%gU{)E+17ixXBFh7jl92LQs-l#IS=z_0?uVVf^b$-`JGzQOXta@r`X zurwGa$Z2jVKwMf%FtHD~Hn#=`)I@Q?I0YgpHu~3yGr7uecy4U4wS!oL8L|GXBkq;* zk)l;g$JMD&@;6R%|2uw_PP=|oHXTDKL1dee@!_>UBL*iLzaa7b0A|%sydNg)JK}LC fzCKO;-KhQptOaA!h`WUE00000NkvXXu0mjf)rp|q diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt deleted file mode 100644 index caa06206..00000000 --- a/tests/CMakeLists.txt +++ /dev/null @@ -1,63 +0,0 @@ -cmake_minimum_required(VERSION 3.10) -project(stellar_tests C) - -include(CTest) - -set(CMAKE_C_STANDARD 99) - -enable_testing() - -add_compile_options(-g -ggdb2) -add_definitions(-DTEST) - -add_library(stellar - ../src/stellar_format.c - ../src/stellar_utils.c - ../src/stellar_nvram.c - ../src/stellar_parser.c -) - -if (FUZZ) - add_library(bsd STATIC IMPORTED) - set_property(TARGET bsd PROPERTY IMPORTED_LOCATION /lib/x86_64-linux-gnu/libbsd.a) -endif() - -target_include_directories(stellar PUBLIC ../src include) -target_link_libraries(stellar PRIVATE bsd) - -add_executable(test_printers src/test_printers.c) - -target_link_libraries(test_printers PRIVATE cmocka stellar) - -add_executable(test_swap src/test_swap.c ../src/swap/swap_lib_calls.c) - -target_link_libraries(test_swap PRIVATE cmocka stellar) - -add_executable(test_tx src/test_tx.c) - -target_link_libraries(test_tx PRIVATE cmocka stellar) - -add_test(test_printers test_printers) -add_test(test_tx test_tx) -add_test(test_swap test_swap) - -if (FUZZ) - if (NOT CMAKE_C_COMPILER_ID MATCHES "Clang") - message(FATAL_ERROR "Fuzzer needs to be built with Clang") - endif() - - # compatible with ClusterFuzzLite - if (NOT DEFINED ENV{LIB_FUZZING_ENGINE}) - set(COMPILATION_FLAGS_ "-fsanitize=address,fuzzer -g") - else() - set(COMPILATION_FLAGS_ "$ENV{LIB_FUZZING_ENGINE} $ENV{CXXFLAGS}") - endif() - - string(REPLACE " " ";" COMPILATION_FLAGS ${COMPILATION_FLAGS_}) - message(${COMPILATION_FLAGS}) - - add_executable(fuzz_tx src/fuzz_tx.c) - target_compile_options(fuzz_tx PRIVATE ${COMPILATION_FLAGS}) - target_link_options(fuzz_tx PRIVATE ${COMPILATION_FLAGS}) - target_link_libraries(fuzz_tx PRIVATE stellar bsd crypto) -endif() diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index acfd20f6..00000000 --- a/tests/README.md +++ /dev/null @@ -1,37 +0,0 @@ -## Functional tests - -```console -./speculos.py --log-level automation:DEBUG --automation file:$HOME/app-stellar/tests/automation.json ~/app-stellar/bin/app.elf & - -export LEDGER_PROXY_ADDRESS=127.0.0.1 LEDGER_PROXY_PORT=9999 -pytest-3 -v -s -``` - -Test a specific raw transaction: - -``` -export LEDGER_PROXY_ADDRESS=127.0.0.1 LEDGER_PROXY_PORT=9999 -pytest-3 -v -s -k txSimple.hex -``` - -## Unit tests - -Build: - -```console -cmake -Btests/build -Htests/ -make -C tests/build/ -``` - -Run: - -```console -make -C tests/build/ test -``` - -Arguments can be given to `ctest`. For instance, to make the output of the test -`test_tx` verbose: - -```console -make -C tests/build/ test ARGS='-V -R test_tx' -``` diff --git a/tests/automation.json b/tests/automation.json deleted file mode 100644 index 237368ac..00000000 --- a/tests/automation.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "version": 1, - "rules": [ - { - "regexp": "Review|Send|Destination|Memo( ID| Text){0,1}|Max Fee|Network|Valid (Before|After)|Tx Source.*|Receive|Via|Remove.*|Buy|Price|Sell|Operation.*|Trust Limit|Bump To|Create Offer|Change Offer|Starting Balance|Set (Flags|Data)|Clear Flags|Master Weight|(Low|Medium|High) Threshold|Home Domain|Add Signer|Weight|Data Value|Account ID.*|Op Source.*|Merge Account.*|Inflation Dest.*|Signer Key.*|Sponsored ID.*|Balance ID.*|Clawback Balance|From.*|WARNING.*|Balance|Data Name.*|Offer ID|Asset|Trustor|Authorize Flag|Sequence Num|Liquidity Pool ID|Pool Fee Rate|(Max|Min) Amount (A|B)|(Max|Min) Price|Amount|SET OPTIONS|Min Seq Age|Min Seq Ledger Gap|Ledger Bounds (Max|Min)|Min Seq Num|Fee Source", - "actions": [ - [ - "button", - 2, - true - ], - [ - "button", - 2, - false - ] - ] - }, - { - "regexp": "(Change|Remove) Trust", - "x": 30, - "y": 3, - "actions": [ - [ - "button", - 2, - true - ], - [ - "button", - 2, - false - ] - ] - }, - { - "text": "Transaction", - "x": 34, - "y": 3, - "actions": [ - [ - "button", - 2, - true - ], - [ - "button", - 2, - false - ] - ] - }, - { - "text": "Fee Bump", - "x": 38, - "y": 3, - "actions": [ - [ - "button", - 2, - true - ], - [ - "button", - 2, - false - ] - ] - }, - { - "text": "InnerTx", - "x": 44, - "y": 3, - "actions": [ - [ - "button", - 2, - true - ], - [ - "button", - 2, - false - ] - ] - }, - { - "text": "Finalize", - "actions": [ - [ - "button", - 1, - true - ], - [ - "button", - 2, - true - ], - [ - "button", - 2, - false - ], - [ - "button", - 1, - false - ] - ] - } - ] -} \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py deleted file mode 100644 index d191c847..00000000 --- a/tests/conftest.py +++ /dev/null @@ -1,16 +0,0 @@ -import os -import pathlib - -SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) - - -def pytest_generate_tests(metafunc): - # retrieve the list of .raw files in the testcases directory - testcases_dir = os.path.join(SCRIPT_DIR, "testcases") - paths = sorted(pathlib.Path(testcases_dir).rglob("*.raw")) - paths = [str(path) for path in paths] - - # if a test function has a raw_tx_path parameter, give the list of raw tx - # paths - if "raw_tx_path" in metafunc.fixturenames: - metafunc.parametrize("raw_tx_path", paths, scope="function") diff --git a/tests/functional_test.py b/tests/functional_test.py deleted file mode 100755 index 6f388c55..00000000 --- a/tests/functional_test.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python3 - -""" -./speculos.py --log-level automation:DEBUG --automation file:$HOME/app-xrp/tests/automation.json ~/app-xrp/bin/app.elf & - -export LEDGER_PROXY_ADDRESS=127.0.0.1 LEDGER_PROXY_PORT=9999 -pytest-3 -v -s -""" - -import binascii -import json -import pytest -import sys -import time -from enum import IntEnum - -from ledgerwallet.client import LedgerClient, CommException -from ledgerwallet.crypto.ecc import PrivateKey -from ledgerwallet.params import Bip32Path -from ledgerwallet.transport import enumerate_devices - -DEFAULT_PATH = "44'/148'/0'" -CLA = 0xE0 - - -class Ins(IntEnum): - GET_PUBLIC_KEY = 0x02 - SIGN = 0x04 - - -class P1(IntEnum): - NO_SIGNATURE = 0x00 - SIGNATURE = 0x01 - FIRST = 0x00 - MORE = 0x80 - - -class P2(IntEnum): - NON_CONFIRM = 0x00 - CONFIRM = 0x01 - LAST = 0x00 - MORE = 0x80 - - -@pytest.fixture(scope="module") -def client(): - devices = enumerate_devices() - if len(devices) == 0: - print("No Ledger device has been found.") - sys.exit(0) - - return LedgerClient(devices[0], cla=CLA) - - -class TestGetPublicKey: - INS = Ins.GET_PUBLIC_KEY - - def test_get_public_key(self, client): - path = Bip32Path.build(DEFAULT_PATH) - client.apdu_exchange( - self.INS, path, P1.NO_SIGNATURE, P2.NON_CONFIRM) - - def test_path_too_long(self, client): - path = Bip32Path.build( - DEFAULT_PATH + "/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0") - with pytest.raises(CommException) as e: - client.apdu_exchange( - self.INS, path, P1.NO_SIGNATURE, P2.NON_CONFIRM) - assert e.value.sw == 0x6a80 - - -class TestSign: - INS = Ins.SIGN - - def _send_payload(self, client, payload): - chunk_size = 255 - first = True - while payload: - if first: - p1 = P1.FIRST - first = False - else: - p1 = P1.MORE - - size = min(len(payload), chunk_size) - if size != len(payload): - p2 = P2.MORE - else: - p2 = P2.LAST - - client.apdu_exchange(self.INS, payload[:size], p1, p2) - payload = payload[size:] - -# def test_sign_too_large(self, client): -# max_size = 8000 -# path = Bip32Path.build(DEFAULT_PATH) -# payload = path + b"a" * (max_size - 4) -# with pytest.raises(CommException) as e: -# self._send_payload(client, payload) -# assert e.value.sw == 0x6700 - -# def test_sign_invalid_tx(self, client): -# path = Bip32Path.build(DEFAULT_PATH) -# payload = path + b"a" * (40) -# with pytest.raises(CommException) as e: -# self._send_payload(client, payload) -# assert e.value.sw == 0x6803 - - def test_sign_valid_tx(self, client, raw_tx_path): - - with open(raw_tx_path, "rb") as fp: - tx = fp.read() - - path = Bip32Path.build(DEFAULT_PATH) - payload = path + tx - self._send_payload(client, payload) diff --git a/tests/include/bolos_target.h b/tests/include/bolos_target.h deleted file mode 100644 index 42edbe4a..00000000 --- a/tests/include/bolos_target.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define TARGET_NANOS - -#include diff --git a/tests/include/os.h b/tests/include/os.h deleted file mode 100644 index 6c9250af..00000000 --- a/tests/include/os.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include -#include - -#define EXCEPTION 1 -#define INVALID_PARAMETER 2 -#define EXCEPTION_OVERFLOW 3 -#define EXCEPTION_SECURITY 4 -#define INVALID_CRC 5 -#define INVALID_CHECKSUM 6 -#define INVALID_COUNTER 7 -#define NOT_SUPPORTED 8 -#define INVALID_STATE 9 -#define TIMEOUT 10 -#define EXCEPTION_PIC 11 -#define EXCEPTION_APPEXIT 12 -#define EXCEPTION_IO_OVERFLOW 13 -#define EXCEPTION_IO_HEADER 14 -#define EXCEPTION_IO_STATE 15 -#define EXCEPTION_IO_RESET 16 -#define EXCEPTION_CXPORT 17 -#define EXCEPTION_SYSTEM 18 -#define NOT_ENOUGH_SPACE 19 - -#define MAX(a, b) ((a) > (b)) ? (a) : (b) -#define MIN(a, b) ((a) < (b)) ? (a) : (b) diff --git a/tests/include/os_io_seproxyhal.h b/tests/include/os_io_seproxyhal.h deleted file mode 100644 index 942b3b7b..00000000 --- a/tests/include/os_io_seproxyhal.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -/** - * Function to ensure a I/O channel is not timeouting waiting for operations - * after a long time without SEPH packet exchanges - */ -void io_seproxyhal_io_heartbeat(void); \ No newline at end of file diff --git a/tests/requirements.txt b/tests/requirements.txt deleted file mode 100644 index 620d452e..00000000 --- a/tests/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -construct==2.10.61 -pytest>=6.1.1,<7.0.0 -ledgerwallet>=0.1.2 -protobuf~=3.19 diff --git a/tests/src/fuzz_tx.c b/tests/src/fuzz_tx.c deleted file mode 100644 index c5d32db4..00000000 --- a/tests/src/fuzz_tx.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include -#include -#include - -#include "stellar_api.h" -#include "stellar_format.h" - -stellar_context_t ctx; - -int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { - memset(&ctx, 0, sizeof(ctx)); - if (Size > sizeof(ctx.req.tx.raw)) { - return 0; - } - memcpy(&ctx.req.tx.raw, Data, Size); - ctx.req.tx.rawLength = Size; - if (!parse_tx_xdr(Data, Size, &ctx.req.tx)) { - return 0; - } - - ctx.state = STATE_APPROVE_TX; - - set_state_data(true); - while (formatter_stack[formatter_index] != NULL) { - printf("%s: %s\n", detailCaption, detailValue); - formatter_index++; - - if (formatter_stack[formatter_index] != NULL) { - set_state_data(true); - } - } - return 0; -} diff --git a/tests/src/test_printers.c b/tests/src/test_printers.c deleted file mode 100644 index dfa53536..00000000 --- a/tests/src/test_printers.c +++ /dev/null @@ -1,264 +0,0 @@ -/******************************************************************************* - * Ledger Stellar App - * (c) 2019 Ledger - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ -#include -#include -#include - -#include - -#include "stellar_api.h" - -void test_print_amount_asset_native(void **state) { - (void) state; - - char printed[24]; - const Asset asset = {.type = ASSET_TYPE_NATIVE}; - print_amount(1, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "0.0000001 XLM"); - print_amount(10000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "1 XLM"); - print_amount(100000000000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10000000.0000001 XLM"); - print_amount(100000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10.0000001 XLM"); - print_amount(100000001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10000000.1 XLM"); -} - -void test_print_amount_asset_alphanum4(void **state) { - (void) state; - - char printed[35]; - const Asset asset = { - .type = ASSET_TYPE_CREDIT_ALPHANUM4, - .alphaNum4 = {.assetCode = "USDC", - .issuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}}; - - print_amount(1, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "0.0000001 USDC@GBD..KHK4"); - print_amount(10000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "1 USDC@GBD..KHK4"); - print_amount(100000000000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10000000.0000001 USDC@GBD..KHK4"); - print_amount(100000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10.0000001 USDC@GBD..KHK4"); - print_amount(100000001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10000000.1 USDC@GBD..KHK4"); -} - -void test_print_amount_asset_alphanum12(void **state) { - (void) state; - - char printed[43]; - const Asset asset = { - .type = ASSET_TYPE_CREDIT_ALPHANUM12, - .alphaNum12 = {.assetCode = "BANANANANANA", - .issuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}}; - - print_amount(1, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "0.0000001 BANANANANANA@GBD..KHK4"); - print_amount(10000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "1 BANANANANANA@GBD..KHK4"); - print_amount(100000000000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10000000.0000001 BANANANANANA@GBD..KHK4"); - print_amount(100000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10.0000001 BANANANANANA@GBD..KHK4"); - print_amount(100000001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "10000000.1 BANANANANANA@GBD..KHK4"); -} - -void test_print_uint(void **state) { - (void) state; - - char printed[24]; - - assert_int_equal(print_uint(0, printed, sizeof(printed)), 0); - assert_string_equal(printed, "0"); - - assert_int_equal(print_uint(1230, printed, sizeof(printed)), 0); - assert_string_equal(printed, "1230"); - - // output buffer too small - assert_int_equal(print_uint(1230, printed, 4), -1); - - // output buffer just big enough to store output data - assert_int_equal(print_uint(9999, printed, 5), 0); - assert_string_equal(printed, "9999"); -} - -void test_print_int(void **state) { - (void) state; - - char printed[24]; - - assert_int_equal(print_int(0, printed, sizeof(printed)), 0); - assert_string_equal(printed, "0"); - - assert_int_equal(print_int(1230, printed, sizeof(printed)), 0); - assert_string_equal(printed, "1230"); - - assert_int_equal(print_int(-1230, printed, sizeof(printed)), 0); - assert_string_equal(printed, "-1230"); - - // output buffer too small - assert_int_equal(print_int(-1230, printed, 5), -1); - assert_int_equal(print_int(1230, printed, 4), -1); - - // output buffer just big enough to store output data - assert_int_equal(print_int(-9999, printed, 6), 0); - assert_string_equal(printed, "-9999"); - assert_int_equal(print_int(9999, printed, 5), 0); - assert_string_equal(printed, "9999"); -} - -void test_print_summary(void **state) { - (void) state; - - char summary[27]; - print_summary("GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I", summary, 12, 12); - assert_string_equal(summary, "GADFVW3UXVKD..4XSHOALEQN2I"); - print_summary("GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I", summary, 6, 6); - assert_string_equal(summary, "GADFVW..LEQN2I"); -} - -void test_print_binary(void **state) { - (void) state; - - const uint8_t binary[32] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; - char hex[16]; - - print_binary_summary(binary, hex, 32); - assert_string_equal(hex, "0x000102..1D1E1F"); -} - -void test_base64_encode(void **state) { - (void) state; - - char base64[20]; - base64_encode((uint8_t *) "starlight", 9, base64); - assert_string_equal(base64, "c3RhcmxpZ2h0"); -} - -void test_print_muxed_account(void **state) { - // https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md#valid-test-cases - (void) state; - - char printed[89]; - // GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ - const uint8_t ed25519[] = { - 0x3f, 0x0c, 0x34, 0xbf, 0x93, 0xad, 0x0d, 0x99, 0x71, 0xd0, 0x4c, - 0xcc, 0x90, 0xf7, 0x05, 0x51, 0x1c, 0x83, 0x8a, 0xad, 0x97, 0x34, - 0xa4, 0xa2, 0xfb, 0x0d, 0x7a, 0x03, 0xfc, 0x7f, 0xe8, 0x9a, - }; - // Valid non-multiplexed account - MuxedAccount account1 = {.type = KEY_TYPE_ED25519, .ed25519 = ed25519}; - print_muxed_account(&account1, printed, 0, 0); - assert_string_equal(printed, "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"); - print_muxed_account(&account1, printed, 12, 12); - assert_string_equal(printed, "GA7QYNF7SOWQ..UA74P7UJVSGZ"); - - // Valid multiplexed account - MuxedAccount account2 = {.type = KEY_TYPE_MUXED_ED25519, - .med25519 = {.id = 0, .ed25519 = ed25519}}; - print_muxed_account(&account2, printed, 0, 0); - assert_string_equal(printed, - "MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUQ"); - print_muxed_account(&account2, printed, 12, 12); - assert_string_equal(printed, "MA7QYNF7SOWQ..AAAAAAAACJUQ"); - - // Valid multiplexed account in which unsigned id exceeds maximum signed 64-bit integer - MuxedAccount account3 = {.type = KEY_TYPE_MUXED_ED25519, - .med25519 = {.id = 9223372036854775808, .ed25519 = ed25519}}; - print_muxed_account(&account3, printed, 0, 0); - assert_string_equal(printed, - "MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK"); - print_muxed_account(&account3, printed, 12, 12); - assert_string_equal(printed, "MA7QYNF7SOWQ..AAAAAAAAAJLK"); -} - -void test_print_claimable_balance_id(void **state) { - (void) state; - - ClaimableBalanceID claimableBalanceID = { - .type = CLAIMABLE_BALANCE_ID_TYPE_V0, - .v0 = {0xc9, 0xc4, 0xa9, 0xe3, 0xa4, 0x68, 0x91, 0xa3, 0x60, 0x15, 0xc3, - 0x17, 0xb3, 0xdf, 0x17, 0xb4, 0x2b, 0xf, 0x2a, 0xd8, 0xa2, 0xee, - 0xa6, 0xc9, 0x34, 0xc9, 0xf7, 0xc8, 0x42, 0x5d, 0xa7, 0xad}}; - - char printed[89]; - print_claimable_balance_id(&claimableBalanceID, printed); - assert_string_equal( - printed, - "0x00000000C9C4A9E3A46891A36015C317B3DF17B42B0F2AD8A2EEA6C934C9F7C8425DA7AD"); -} - -void test_print_time(void **state) { - (void) state; - char printed[89]; - assert_true(print_time(0, printed, 89)); - assert_string_equal(printed, "1970-01-01 00:00:00"); - assert_true(print_time(1648263853, printed, 89)); - assert_string_equal(printed, "2022-03-26 03:04:13"); - assert_true(print_time(2147483647, printed, 89)); - assert_string_equal(printed, "2038-01-19 03:14:07"); - assert_true(print_time(4294967295, printed, 89)); - assert_string_equal(printed, "2106-02-07 06:28:15"); - assert_true(print_time(253402300799, printed, 89)); - assert_string_equal(printed, "9999-12-31 23:59:59"); - assert_false(print_time(253402300800, printed, 89)); - assert_false(print_time(18446744073709551615, printed, 89)); -} - -void test_print_asset_t(void **state) { - (void) state; - char printed[89]; - const Asset nativeAsset = {.type = ASSET_TYPE_NATIVE}; - print_asset_t(&nativeAsset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "XLM"); - const Asset assetAlphaNum4 = { - .type = ASSET_TYPE_CREDIT_ALPHANUM4, - .alphaNum4 = {.assetCode = "USDC", - .issuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}}; - print_asset_t(&assetAlphaNum4, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "USDC@GBD..KHK4"); - - const Asset assetAlphaNum12 = { - .type = ASSET_TYPE_CREDIT_ALPHANUM12, - .alphaNum12 = {.assetCode = "Banana", - .issuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}}; - print_asset_t(&assetAlphaNum12, NETWORK_TYPE_PUBLIC, printed, sizeof(printed)); - assert_string_equal(printed, "Banana@GBD..KHK4"); -} - -int main() { - const struct CMUnitTest tests[] = { - cmocka_unit_test(test_print_amount_asset_native), - cmocka_unit_test(test_print_amount_asset_alphanum4), - cmocka_unit_test(test_print_amount_asset_alphanum12), - cmocka_unit_test(test_print_uint), - cmocka_unit_test(test_print_int), - cmocka_unit_test(test_print_summary), - cmocka_unit_test(test_print_binary), - cmocka_unit_test(test_base64_encode), - cmocka_unit_test(test_print_muxed_account), - cmocka_unit_test(test_print_claimable_balance_id), - cmocka_unit_test(test_print_time), - cmocka_unit_test(test_print_asset_t), - }; - return cmocka_run_group_tests(tests, NULL, NULL); -} diff --git a/tests/src/test_swap.c b/tests/src/test_swap.c deleted file mode 100644 index 87f95e57..00000000 --- a/tests/src/test_swap.c +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include -#include -#include - -#include - -#include "cx.h" -#include "../src/stellar_api.h" -#include "../src/stellar_types.h" -#include "../src/swap/swap_lib_calls.h" - -void test_check_address(void **state) { - (void) state; - - check_address_parameters_t params = { - .address_to_check = "GCNCEJIAZ5D3APIF5XWAJ3JSSTHM4HPHE7GK3NAB6R6WWSZDB2A2BQ5B", - .address_parameters = (uint8_t *) "\x03\x80\x00\x00\x2c\x80\x00\x00\x94\x80\x00\x00\x00", - .address_parameters_length = 13, /* XXX: never used */ - }; - - /* The public key is hardcoded. Indeed, get_public_key is not available from tests because of - * exceptions and cryptographic calls. */ - cx_ecfp_public_key_t public_key = { - .curve = CX_CURVE_Ed25519, - .W_len = 32, - .W = "\x9a\x22\x25\x00\xcf\x47\xb0\x3d\x05\xed\xec\x04\xed\x32\x94\xce\xce\x1d\xe7\x27\xcc" - "\xad\xb4\x01\xf4\x7d\x6b\x4b\x23\x0e\x81\xa0", - }; - - uint32_t bip32_path_parsed[MAX_BIP32_LEN]; - uint8_t *bip32_path_ptr = params.address_parameters; - uint8_t bip32_path_length = *(bip32_path_ptr++); - assert_true( - parse_bip32_path(bip32_path_ptr, bip32_path_length, bip32_path_parsed, MAX_BIP32_LEN)); - - char address[57]; - encode_public_key(public_key.W, address); - - assert_string_equal(address, params.address_to_check); -} - -void test_get_printable_amount(void **state) { - (void) state; - - get_printable_amount_parameters_t params = { - .amount = (uint8_t *) "\x00\x04\xd2", - .amount_length = 3, - }; - - uint64_t amount; - Asset asset = {.type = ASSET_TYPE_NATIVE}; - assert_true(swap_str_to_u64(params.amount, params.amount_length, &amount)); - assert_int_equal(amount, 1234); - assert_int_equal(print_amount(amount, - &asset, - NETWORK_TYPE_PUBLIC, - params.printable_amount, - sizeof(params.printable_amount)), - 0); - assert_string_equal(params.printable_amount, "0.0001234 XLM"); -} - -int main() { - const struct CMUnitTest tests[] = { - cmocka_unit_test(test_check_address), - cmocka_unit_test(test_get_printable_amount), - }; - return cmocka_run_group_tests(tests, NULL, NULL); -} diff --git a/tests/src/test_tx.c b/tests/src/test_tx.c deleted file mode 100644 index cc1150ff..00000000 --- a/tests/src/test_tx.c +++ /dev/null @@ -1,199 +0,0 @@ -#include -#include -#include -#include -#include - -#include - -#include "stellar_api.h" -#include "stellar_format.h" - -stellar_context_t ctx; -tx_context_t tx_ctx; - -static const char *testcases[] = { - "../testcases/feeBumpTxFeeSourceEqualSigner.raw", - "../testcases/feeBumpTxFeeSourceMuxedAccountEqualSigner.raw", - "../testcases/feeBumpTxInnerSourceEqualSigner.raw", - "../testcases/feeBumpTxSimple.raw", - "../testcases/feeBumpTxSimpleMuxedFeeSource.raw", - "../testcases/txAccountMergeMuxedDestination.raw", - "../testcases/txAccountMerge.raw", - "../testcases/txAllowTrustAuthorized.raw", - "../testcases/txAllowTrustAuthorizedToMaintainLiabilities.raw", - "../testcases/txAllowTrustUnauthorized.raw", - "../testcases/txBeginSponsoringFutureReserves.raw", - "../testcases/txBumpSequence.raw", - "../testcases/txChangeOffer.raw", - "../testcases/txChangeTrust.raw", - "../testcases/txChangeTrustLiquidityPoolAsset.raw", - "../testcases/txClaimClaimableBalance.raw", - "../testcases/txClawbackClaimableBalance.raw", - "../testcases/txClawbackMuxedFrom.raw", - "../testcases/txClawback.raw", - "../testcases/txCreateAccount.raw", - "../testcases/txCreateClaimableBalancePredicateAnd.raw", - "../testcases/txCreateClaimableBalancePredicateBeforeAbs.raw", - "../testcases/txCreateClaimableBalancePredicateBeforeRel.raw", - "../testcases/txCreateClaimableBalancePredicateMultiClaimant.raw", - "../testcases/txCreateClaimableBalancePredicateNot.raw", - "../testcases/txCreateClaimableBalancePredicateOr.raw", - "../testcases/txCreateClaimableBalancePredicateUnconditional.raw", - "../testcases/txCreateOffer2.raw", - "../testcases/txCreateOffer.raw", - "../testcases/txCustomAsset12.raw", - "../testcases/txCustomAsset4.raw", - "../testcases/txEndSponsoringFutureReserves.raw", - "../testcases/txInflation.raw", - "../testcases/txLiquidityPoolDeposit.raw", - "../testcases/txLiquidityPoolWithdraw.raw", - "../testcases/txManageBuyOffer.raw", - "../testcases/txMemoHash.raw", - "../testcases/txMemoId.raw", - "../testcases/txMemoText.raw", - "../testcases/txMultiOp.raw", - "../testcases/txMultiOpWithSource.raw", - "../testcases/txOpSourceMuxedDestination.raw", - "../testcases/txOpSource.raw", - "../testcases/txPassiveOffer.raw", - "../testcases/txPathPaymentStrictReceiveMuxedDestination.raw", - "../testcases/txPathPaymentStrictReceiveEmptyPath.raw", - "../testcases/txPathPaymentStrictReceive.raw", - "../testcases/txPathPaymentStrictSendMuxedDestination.raw", - "../testcases/txPathPaymentStrictSendEmptyPath.raw", - "../testcases/txPathPaymentStrictSend.raw", - "../testcases/txPaymentMuxedDestination.raw", - "../testcases/txRemoveData.raw", - "../testcases/txRevokeSponsorshipLiquidityPool.raw", - "../testcases/txRemoveOffer.raw", - "../testcases/txRemoveTrust.raw", - "../testcases/txRemoveTrustLiquidityPoolAsset.raw", - "../testcases/txRevokeSponsorshipAccount.raw", - "../testcases/txRevokeSponsorshipClaimableBalance.raw", - "../testcases/txRevokeSponsorshipData.raw", - "../testcases/txRevokeSponsorshipOffer.raw", - "../testcases/txRevokeSponsorshipSignerEd25519PublicKey.raw", - "../testcases/txRevokeSponsorshipSignerHashX.raw", - "../testcases/txRevokeSponsorshipSignerPreAuth.raw", - "../testcases/txRevokeSponsorshipTrustLine.raw", - "../testcases/txRevokeSponsorshipTrustLineLiquidityPoolID.raw", - "../testcases/txSetAllOptions.raw", - "../testcases/txSetData.raw", - "../testcases/txSetOptionsEmptyBody.raw", - "../testcases/txSetOptionsNoSigner.raw", - "../testcases/txSetOptionsRemoveHomeDomain.raw", - "../testcases/txSetSomeOptions.raw", - "../testcases/txSetTrustLineFlags.raw", - "../testcases/txSourceEqualOpSourceEqualSigner.raw", - "../testcases/txSourceEqualSigner.raw", - "../testcases/txSourceMuxedAccountEqualSigner.raw", - "../testcases/txSimpleMuxedSource.raw", - "../testcases/txSimple.raw", - "../testcases/txCondTimeBounds.raw", - "../testcases/txCondTimeBoundsMaxIsZero.raw", - "../testcases/txCondTimeBoundsMinIsZero.raw", - "../testcases/txCondExtraSigners.raw", - "../testcases/txCondFull.raw", - "../testcases/txCondLedgerBounds.raw", - "../testcases/txCondLedgerBoundsMaxIsZero.raw", - "../testcases/txCondLedgerBoundsMinIsZero.raw", - "../testcases/txCondWithoutLedgerBounds.raw", - "../testcases/txCondMinSeqAge.raw", - "../testcases/txCondMinSeqLedgerGap.raw", - "../testcases/txCondMinSeqNum.raw", - NULL, -}; - -static void load_transaction_data(const char *filename, tx_context_t *txCtx) { - FILE *f = fopen(filename, "rb"); - assert_non_null(f); - - // GDJYDBIA3WHL4IGI4PHQBBOLPXTR5A6U5SAPYMIPIGYXB37GSOAIP2GC - uint8_t publicKey[] = {0xd3, 0x81, 0x85, 0x0, 0xdd, 0x8e, 0xbe, 0x20, 0xc8, 0xe3, 0xcf, - 0x0, 0x85, 0xcb, 0x7d, 0xe7, 0x1e, 0x83, 0xd4, 0xec, 0x80, 0xfc, - 0x31, 0xf, 0x41, 0xb1, 0x70, 0xef, 0xe6, 0x93, 0x80, 0x87}; - - txCtx->rawLength = fread(txCtx->raw, 1, MAX_RAW_TX, f); - memcpy(txCtx->publicKey, publicKey, sizeof(publicKey)); - assert_int_not_equal(txCtx->rawLength, 0); - fclose(f); -} - -static void get_result_filename(const char *filename, char *path, size_t size) { - strncpy(path, filename, size); - - char *ext = strstr(path, ".raw"); - assert_non_null(ext); - memcpy(ext, ".txt", 4); -} - -static void check_transaction_results(const char *filename) { - char path[1024]; - char line[4096]; - uint8_t opCount = ctx.req.tx.txDetails.opCount; - current_data_index = 0; - get_result_filename(filename, path, sizeof(path)); - - FILE *fp = fopen(path, "r"); - assert_non_null(fp); - - set_state_data(true); - - while ((opCount != 0 && current_data_index < opCount) || - formatter_stack[formatter_index] != NULL) { - assert_non_null(fgets(line, sizeof(line), fp)); - - char *expected_title = line; - char *expected_value = strstr(line, "; "); - assert_non_null(expected_value); - - *expected_value = '\x00'; - assert_string_equal(expected_title, detailCaption); - - expected_value += 2; - char *p = strchr(expected_value, '\n'); - if (p != NULL) { - *p = '\x00'; - } - assert_string_equal(expected_title, detailCaption); - assert_string_equal(expected_value, detailValue); - - formatter_index++; - - if (formatter_stack[formatter_index] != NULL) { - set_state_data(true); - } - } - assert_int_equal(fgets(line, sizeof(line), fp), 0); - assert_int_equal(feof(fp), 1); - fclose(fp); -} - -static void test_tx(const char *filename) { - memset(&ctx.req.tx, 0, sizeof(ctx.req.tx)); - - load_transaction_data(filename, &ctx.req.tx); - - ctx.state = STATE_APPROVE_TX; - assert_true(parse_tx_xdr(ctx.req.tx.raw, ctx.req.tx.rawLength, &ctx.req.tx)); - - ctx.state = STATE_APPROVE_TX; - - check_transaction_results(filename); -} - -void test_transactions(void **state) { - (void) state; - - for (const char **testcase = testcases; *testcase != NULL; testcase++) { - test_tx(*testcase); - } -} - -int main() { - const struct CMUnitTest tests[] = { - cmocka_unit_test(test_transactions), - }; - return cmocka_run_group_tests(tests, NULL, NULL); -} diff --git a/tests/testcases/feeBumpTxFeeSourceEqualSigner.raw b/tests/testcases/feeBumpTxFeeSourceEqualSigner.raw deleted file mode 100644 index 83b6bdc86f82699091a474fa17048730f3e3a1e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J8>ftcZPV=KemzI_TO z9-n7uJze`;uKCKFhChb~(W{&kc SpVtcg$(k|yiD)$k$Up$GQE#LG diff --git a/tests/testcases/feeBumpTxFeeSourceEqualSigner.txt b/tests/testcases/feeBumpTxFeeSourceEqualSigner.txt deleted file mode 100644 index 532fec1b..00000000 --- a/tests/testcases/feeBumpTxFeeSourceEqualSigner.txt +++ /dev/null @@ -1,12 +0,0 @@ -Network; Testnet -Fee Bump; Transaction Details -Fee Source; GDJYDB..AIP2GC -Max Fee; 0.00004 XLM -InnerTx; Details -Memo Text; fee-bump-tx-simple -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GBZXN7PIRZGNMHGA7MUUUF4GWPY5AYPV6LY4UV2GL6VJGIQRXFDNMADI -Operation Type; Payment -Send; 100 XLM -Destination; GBVKI23OQZCANDUZ2SI7XU7W6ICYKYT74JBXDD2CYRDAFZHZNRPASSQK diff --git a/tests/testcases/feeBumpTxFeeSourceMuxedAccountEqualSigner.raw b/tests/testcases/feeBumpTxFeeSourceMuxedAccountEqualSigner.raw deleted file mode 100644 index 4db5b11981fb2aeb58da51275113ffafa1841452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J8>85kIW6c{jGZfs?^ z+qX~Q#N+b}t*2|B%Qatl)9}ZT-*IEX`)89I+M&uO0BI%=ySVJ{i$0%gG6#NZdWpAf z{&*qr>!**W!rkImO;!@z>2?jMBn6}n2*B!rG{`ccwA57Hq|)31-I5C3;>_HFoK%n! zxI@4W%36}0*XF|3H}lHG-B-NWI8Lw*AYnc06pYCTwbP;S z^WkGBCOm6mU*aWv`!m;dZpoUaICDYOmj2^e>ti>(J|BPY=Pr@xfcTYW(pf2ztWBFa U*6(~?EA%I8#_T7e)f^xL0Wx!MrT_o{ diff --git a/tests/testcases/feeBumpTxFeeSourceMuxedAccountEqualSigner.txt b/tests/testcases/feeBumpTxFeeSourceMuxedAccountEqualSigner.txt deleted file mode 100644 index 687148a6..00000000 --- a/tests/testcases/feeBumpTxFeeSourceMuxedAccountEqualSigner.txt +++ /dev/null @@ -1,12 +0,0 @@ -Network; Testnet -Fee Bump; Transaction Details -Fee Source; MDJYDBIA3WHL4IGI4PHQBBOLPXTR5A6U5SAPYMIPIGYXB37GSOAIOAAAAAAAAAAAAFP52 -Max Fee; 0.00004 XLM -InnerTx; Details -Memo Text; fee-bump-tx-simple -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GBZXN7PIRZGNMHGA7MUUUF4GWPY5AYPV6LY4UV2GL6VJGIQRXFDNMADI -Operation Type; Payment -Send; 100 XLM -Destination; GBVKI23OQZCANDUZ2SI7XU7W6ICYKYT74JBXDD2CYRDAFZHZNRPASSQK diff --git a/tests/testcases/feeBumpTxInnerSourceEqualSigner.raw b/tests/testcases/feeBumpTxInnerSourceEqualSigner.raw deleted file mode 100644 index 24c4acba65c010195fb0ec39f438bba93acdf8b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J8>ftcaTyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#UM2d42%Xa_1u0jUE5uzDcP2*g5Zsj0e2rMU&VB^A2GnYjfysURg_ zIXIoQBs;Iog{^Pqm5IMEfBVGRnpFSDxv<~qh#S+BpE+@yU>!ihde$izlM!mCgBFKP zX704_r|wAer%5;D|L-B diff --git a/tests/testcases/feeBumpTxInnerSourceEqualSigner.txt b/tests/testcases/feeBumpTxInnerSourceEqualSigner.txt deleted file mode 100644 index b1e4a6cc..00000000 --- a/tests/testcases/feeBumpTxInnerSourceEqualSigner.txt +++ /dev/null @@ -1,12 +0,0 @@ -Network; Testnet -Fee Bump; Transaction Details -Fee Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Max Fee; 0.00004 XLM -InnerTx; Details -Memo Text; fee-bump-tx-simple -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GDJYDBIA3WHL4IGI4PHQBBOLPXTR5A6U5SAPYMIPIGYXB37GSOAIP2GC -Operation Type; Payment -Send; 100 XLM -Destination; GBVKI23OQZCANDUZ2SI7XU7W6ICYKYT74JBXDD2CYRDAFZHZNRPASSQK diff --git a/tests/testcases/feeBumpTxSimple.raw b/tests/testcases/feeBumpTxSimple.raw deleted file mode 100644 index 5c98222902beeb71b29f1922bbc3daa48e76f4f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J8>ftcaTyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#UM2d42%sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J8>85kIW6c8{za!|N6 zv%B<(wtRi-h0=rSUpKkk7g{^*gTS8e-}8$$=7kGG6;1%sOdxh~+20p^KG$Rp{MPgm zZ`=IwLgLp?A5Vq5#jl#IB)HS<8c<0JNF5M>)dOjeWfEzrsk%v}xdpl<6}rWlxdl0? zy1AtlsUWpb$3W<;CE0mxE^K`>uT1=X`P(Pf)};DJ&V~I>N8Fg6{LG2t1gZxE>shB@ zOh%}^4tu6OK5)=}?V+9LQzv^|$)7Kr#K+@2pV@Ne$BzpxcJi>Dldx64`8h4Q_ShDY bJw3Tq+pbBiZhdwC)J0q7m<{>u>>vXH%TRN+ diff --git a/tests/testcases/feeBumpTxSimpleMuxedFeeSource.txt b/tests/testcases/feeBumpTxSimpleMuxedFeeSource.txt deleted file mode 100644 index c6441998..00000000 --- a/tests/testcases/feeBumpTxSimpleMuxedFeeSource.txt +++ /dev/null @@ -1,12 +0,0 @@ -Network; Testnet -Fee Bump; Transaction Details -Fee Source; MAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRGAAAAAAAAAPCIDE24 -Max Fee; 0.00004 XLM -InnerTx; Details -Memo Text; fee-bump-tx-simple-muxed -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GBZXN7PIRZGNMHGA7MUUUF4GWPY5AYPV6LY4UV2GL6VJGIQRXFDNMADI -Operation Type; Payment -Send; 100 XLM -Destination; GBVKI23OQZCANDUZ2SI7XU7W6ICYKYT74JBXDD2CYRDAFZHZNRPASSQK diff --git a/tests/testcases/txAccountMerge.raw b/tests/testcases/txAccountMerge.raw deleted file mode 100644 index 5d676005816ee2ff5ca29f25f7e34724be43fb73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l3O!PoFSkY)s_2Lceyo10pco~n?ToSa{p wR{|D>%X5IZ5j7bdie1$ecZyhFFu(Yv@r$SW_8FCRi{3vg=b6%GyA-4b0IrKT$N&HU diff --git a/tests/testcases/txAccountMerge.txt b/tests/testcases/txAccountMerge.txt deleted file mode 100644 index e68ebe0e..00000000 --- a/tests/testcases/txAccountMerge.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Memo Text; merge account -Max Fee; 0.00001 XLM -Sequence Num; 21728338334711809 -Tx Source; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Operation Type; Account Merge -Merge Account; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Destination; GBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KNHD diff --git a/tests/testcases/txAccountMergeMuxedDestination.raw b/tests/testcases/txAccountMergeMuxedDestination.raw deleted file mode 100644 index 6cee9b851ec58272658715318352134b5a1663a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l1&qz(wc>VY&P5cB4y7Nw^uBqk^4m*$m# yWFg`pngh;ceB=;OlhL8rRb6qXi1h{Yi(eYQc&cxoQCYX>{j+kODQ&h(K^g#|z&M}) diff --git a/tests/testcases/txAccountMergeMuxedDestination.txt b/tests/testcases/txAccountMergeMuxedDestination.txt deleted file mode 100644 index 5ee9f67e..00000000 --- a/tests/testcases/txAccountMergeMuxedDestination.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Memo Text; merge account -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Operation Type; Account Merge -Merge Account; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Destination; MBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KAAAAAAAAAPCIDSOW diff --git a/tests/testcases/txAllowTrustAuthorized.raw b/tests/testcases/txAllowTrustAuthorized.raw deleted file mode 100644 index 83c7724fdd3a2ae2458d8eb5e82a750708e3d6e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l3O!PoFSkY)s_2LceyotTr8U#?J6R9ajD z69dugAR?kBqeHQ)y5dd|>kH-=zchaFRNp?MvTo7)XXQLo+H98sl`wh*M1qup%>)3O C6geIM diff --git a/tests/testcases/txAllowTrustAuthorized.txt b/tests/testcases/txAllowTrustAuthorized.txt deleted file mode 100644 index 3a5477f3..00000000 --- a/tests/testcases/txAllowTrustAuthorized.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Memo Text; allow trust -Max Fee; 0.00001 XLM -Sequence Num; 21728338334711809 -Tx Source; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Operation Type; Allow Trust -Trustor; GBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KNHD -Asset Code; JPY -Authorize Flag; AUTHORIZED_FLAG diff --git a/tests/testcases/txAllowTrustAuthorizedToMaintainLiabilities.raw b/tests/testcases/txAllowTrustAuthorizedToMaintainLiabilities.raw deleted file mode 100644 index 532b9a315f3e814b73f189a0180307a06dd9a23d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l1&qz(wc>VY&P5R2p{X6BUuu|iH}Vp3*K zW=UphF;osnF|dP(h?8T?$mf=oJtN IQVKR307Zy9R{#J2 diff --git a/tests/testcases/txAllowTrustAuthorizedToMaintainLiabilities.txt b/tests/testcases/txAllowTrustAuthorizedToMaintainLiabilities.txt deleted file mode 100644 index 2c6b2b2e..00000000 --- a/tests/testcases/txAllowTrustAuthorizedToMaintainLiabilities.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Memo Text; maintain liabilities -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Operation Type; Allow Trust -Trustor; GBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KNHD -Asset Code; JPY -Authorize Flag; AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG diff --git a/tests/testcases/txAllowTrustUnauthorized.raw b/tests/testcases/txAllowTrustUnauthorized.raw deleted file mode 100644 index 2d9a17f4fe8faa30844ae1c7d73fb4476899c696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1ZWRVF#nh~TP2tYJXQEFL!cB(>2QE71r zR174?4k99IGCCBysw?gkvA$q_@k`?uPxb9HD(e=#e^$;jrOkFJPzj?~KqN>h7ytkt C%Qf8q diff --git a/tests/testcases/txAllowTrustUnauthorized.txt b/tests/testcases/txAllowTrustUnauthorized.txt deleted file mode 100644 index f3836f84..00000000 --- a/tests/testcases/txAllowTrustUnauthorized.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Memo Text; revoke trust -Max Fee; 0.00001 XLM -Sequence Num; 27888631402201089 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation Type; Allow Trust -Trustor; GBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KNHD -Asset Code; JPY -Authorize Flag; UNAUTHORIZED_FLAG diff --git a/tests/testcases/txBeginSponsoringFutureReserves.raw b/tests/testcases/txBeginSponsoringFutureReserves.raw deleted file mode 100644 index f7939bf7302ade20581cef74a2d145b4c7ad34e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXeo5MA!#)3o_m?|SW* eJJZ*OMcn)B^HBQu%t!gFbJd%irv~$b)Bpe!$TS=P diff --git a/tests/testcases/txBeginSponsoringFutureReserves.txt b/tests/testcases/txBeginSponsoringFutureReserves.txt deleted file mode 100644 index 54a027f1..00000000 --- a/tests/testcases/txBeginSponsoringFutureReserves.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Begin Sponsoring Future Reserves -Sponsored ID; GB3UITECWPDI3LZL5G4WPLKWLDPPGTHBDPDZTYTPVNWSPASDSVJQ7USV diff --git a/tests/testcases/txBumpSequence.raw b/tests/testcases/txBumpSequence.raw deleted file mode 100644 index 0cec8c45cd77c4a1e449f045a95c88f83ff9f5bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS94@_VZ;QbJTk5 v?a!{iE!6O~JC`xo=vD0e@D<-SBsAQ322_#)Qs+61=`x6h0!Ap!4W*d?D?uaw diff --git a/tests/testcases/txBumpSequence.txt b/tests/testcases/txBumpSequence.txt deleted file mode 100644 index d77430a4..00000000 --- a/tests/testcases/txBumpSequence.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 1234567891 -Tx Source; GCGNXZ5G6FWCNDB7H7G27WYSQDWYW3IBKMZOUXM7K6UPNMDAQDMONKJ2 -Operation Type; Bump Sequence -Bump To; 2 diff --git a/tests/testcases/txChangeOffer.raw b/tests/testcases/txChangeOffer.raw deleted file mode 100644 index 198c36a5bcd6184799686222926e4b37616248f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1ZWRVF#nh~TP3Sewz7(du21k5DDJce@9 TDIm41Kn&8)IKzhh6G#96h%7N* diff --git a/tests/testcases/txChangeOffer.txt b/tests/testcases/txChangeOffer.txt deleted file mode 100644 index 7a380a25..00000000 --- a/tests/testcases/txChangeOffer.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 27888631402201089 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation Type; Manage Sell Offer -Change Offer; 6849038322 -Buy; SLT@GAD..QN2I -Price; 1.6666666 SLT@GAD..QN2I -Sell; 200 XLM diff --git a/tests/testcases/txChangeTrust.raw b/tests/testcases/txChangeTrust.raw deleted file mode 100644 index a3702b558034e7506f474988bd407e123bdbd1f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l3O!PoFSkY)s_hXNRz4ajG72@P-si4!ub K{yzkO)B*qnbv+dT diff --git a/tests/testcases/txChangeTrust.txt b/tests/testcases/txChangeTrust.txt deleted file mode 100644 index f2d367db..00000000 --- a/tests/testcases/txChangeTrust.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 21728338334711809 -Tx Source; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Operation Type; Change Trust -Change Trust; DUPE@GBG..XESH diff --git a/tests/testcases/txChangeTrustLiquidityPoolAsset.raw b/tests/testcases/txChangeTrustLiquidityPoolAsset.raw deleted file mode 100644 index 477bad9a38f6c57e12f0bb59ab998913eeebab61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfIAk7SAgD57C)SR4r wB!S<(d%N6ijxS6$mu3Itrmb`}q2Jey{doQ@6S4HXU-}P$O6BVRLjXt{0M~XqqW}N^ diff --git a/tests/testcases/txChangeTrustLiquidityPoolAsset.txt b/tests/testcases/txChangeTrustLiquidityPoolAsset.txt deleted file mode 100644 index 03eda79f..00000000 --- a/tests/testcases/txChangeTrustLiquidityPoolAsset.txt +++ /dev/null @@ -1,10 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Change Trust -Change Trust; -Liquidity Pool; Asset -Asset A; XLM -Asset B; Hello@GD5..DB2Y -Pool Fee Rate; 0.3% diff --git a/tests/testcases/txClaimClaimableBalance.raw b/tests/testcases/txClaimClaimableBalance.raw deleted file mode 100644 index 1e751233cb9b909b6dfdf2e1b15592142ea04a99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXg55PkB<%EwDGCN548 eJuJTYzW5exeytme-Yq+6a`O8Lr`Y9dL23Xb$TfHX diff --git a/tests/testcases/txClaimClaimableBalance.txt b/tests/testcases/txClaimClaimableBalance.txt deleted file mode 100644 index e6c1457c..00000000 --- a/tests/testcases/txClaimClaimableBalance.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Claim Claimable Balance -Balance ID; 0x00000000C9C4A9E3A46891A36015C317B3DF17B42B0F2AD8A2EEA6C934C9F7C8425DA7AD diff --git a/tests/testcases/txClawback.raw b/tests/testcases/txClawback.raw deleted file mode 100644 index cc6d33f08a666a0541dea2929c8b3337c7c04861..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfzkhn)`PEI~l07Sh= zbQ9D4bk5Lfb%)vPZ6_|XTK*G`2;N$AUMKRU&hDPwAT{MKK24jC^{&@`xifujSj4^0 cJ`bgj&wP}>I#<2Pd1^2}NR8*zCm@Oe0Ijk|zW@LL diff --git a/tests/testcases/txClawback.txt b/tests/testcases/txClawback.txt deleted file mode 100644 index b5e29512..00000000 --- a/tests/testcases/txClawback.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Clawback -Clawback Balance; 123.456 Hello@GDU..XD2K -From; GB3UITECWPDI3LZL5G4WPLKWLDPPGTHBDPDZTYTPVNWSPASDSVJQ7USV diff --git a/tests/testcases/txClawbackClaimableBalance.raw b/tests/testcases/txClawbackClaimableBalance.raw deleted file mode 100644 index 39b09417f0c103467ad941e79bab67a88ee680ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe&5PkB<%EwDGCN548 eJuJTYzW5exeytme-Yq+6a`O8Lr`Y9dL23Xcl{I|; diff --git a/tests/testcases/txClawbackClaimableBalance.txt b/tests/testcases/txClawbackClaimableBalance.txt deleted file mode 100644 index 376c93b2..00000000 --- a/tests/testcases/txClawbackClaimableBalance.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Clawback Claimable Balance -Balance ID; 0x00000000C9C4A9E3A46891A36015C317B3DF17B42B0F2AD8A2EEA6C934C9F7C8425DA7AD diff --git a/tests/testcases/txClawbackMuxedFrom.raw b/tests/testcases/txClawbackMuxedFrom.raw deleted file mode 100644 index d04f485b44125aea381d037dc06e7c6d973a8bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfzkhn)`PEI~l07Sh= zbQ9D4bk5Lfb%)vPZ6_|XTK*G`2;N$AUMKRU&hDPw3~=oXjD*!PFnCUV0yZ50GH^#1 diff --git a/tests/testcases/txClawbackMuxedFrom.txt b/tests/testcases/txClawbackMuxedFrom.txt deleted file mode 100644 index eb675781..00000000 --- a/tests/testcases/txClawbackMuxedFrom.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Clawback -Clawback Balance; 123.456 Hello@GDU..XD2K -From; MDUGCRQWFXZM4MJ2VOEDNG5WZDJQKOP6CNMFHNL4Z4WFT2JMXOGLWAAAAAAAAAAAAFNJI diff --git a/tests/testcases/txCondExtraSigners.raw b/tests/testcases/txCondExtraSigners.raw deleted file mode 100644 index 4cbf26b2e5f58bef180727d8db14459904425388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV-Sx=3x?yKq2PB(~0M9&3Edu z_vvTNKi{-xdA9xyw|6NV(iJ;9&MBOK4^-ojNFjh)4YCgez_h}xncbyNwB_qtFO(is h|GLTTzR=of9|ZP%|DIp8F)v&gq7+EZnAQMd0{~wGUs?bF diff --git a/tests/testcases/txCondExtraSigners.txt b/tests/testcases/txCondExtraSigners.txt deleted file mode 100644 index bf189a62..00000000 --- a/tests/testcases/txCondExtraSigners.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondFull.raw b/tests/testcases/txCondFull.raw deleted file mode 100644 index 39bc6cd771e043d7d43966d1cc2c21f2afed6ff4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV+t6AWo92ZwG{qbO6$fOlf&4 zK>P;828lDJ1uh5CK(Gaf<$xHZm-&A9MUL6gf=t)L3k@GE-qY|}{xI9w7rx(PY~*F` znymxrWzI;g1X2vlg{KqG-J0*zW$)9^nt#4&&+=^j8*cAXIHW6fcAQf<{~oBuA(27= zvIq#kZidkcw`O*iKGBx1Z@o}@Q2pyBxBEhCr+pCE^Zk2%(Z;-RVXzJmF=JW-hyno4 CBX?W? diff --git a/tests/testcases/txCondFull.txt b/tests/testcases/txCondFull.txt deleted file mode 100644 index 5f1aefdc..00000000 --- a/tests/testcases/txCondFull.txt +++ /dev/null @@ -1,14 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Valid After (UTC); 2022-03-31 06:43:20 -Valid Before (UTC); 2022-03-31 07:33:20 -Ledger Bounds Min; 40267300 -Ledger Bounds Max; 40267500 -Min Seq Num; 40260007 -Min Seq Age; 180 -Min Seq Ledger Gap; 30 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondLedgerBounds.raw b/tests/testcases/txCondLedgerBounds.raw deleted file mode 100644 index 26f274ed6991912cf3975457e5b7fdc68a5bd46e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV-Sxq#2pg@>GEM4M+k9V1$Z; uX@y%eyGx&F%h$JFC_SkDb(7nDp|#UK2<-X(J-=vUUbryaj2Y7!Kx_bufH@BU diff --git a/tests/testcases/txCondLedgerBounds.txt b/tests/testcases/txCondLedgerBounds.txt deleted file mode 100644 index 88cf39dd..00000000 --- a/tests/testcases/txCondLedgerBounds.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Ledger Bounds Min; 40267300 -Ledger Bounds Max; 40267500 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondLedgerBoundsMaxIsZero.raw b/tests/testcases/txCondLedgerBoundsMaxIsZero.raw deleted file mode 100644 index 63fb14a70c902cfb36481cc4228fb4aa935e1ae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV-Sxq#2pg@>D>AcmN|*4ooZD sn%Q0YL|eYT^+M@E^{<=U?hCD*_Ca9J_wV^d8}q`2;pWVk)&ODy0PVjwO#lD@ diff --git a/tests/testcases/txCondLedgerBoundsMaxIsZero.txt b/tests/testcases/txCondLedgerBoundsMaxIsZero.txt deleted file mode 100644 index f00c3874..00000000 --- a/tests/testcases/txCondLedgerBoundsMaxIsZero.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Ledger Bounds Min; 40267300 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondLedgerBoundsMinIsZero.raw b/tests/testcases/txCondLedgerBoundsMinIsZero.raw deleted file mode 100644 index c4e3081b8a080d24865db7602ff360cfb4740e43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV-Sxq#3~iX?brzG!6h(1C#^P t3b$r*z^5+e$mFfaACL^Gp03w*Z?nXI28Z@ diff --git a/tests/testcases/txCondLedgerBoundsMinIsZero.txt b/tests/testcases/txCondLedgerBoundsMinIsZero.txt deleted file mode 100644 index 5ea48e50..00000000 --- a/tests/testcases/txCondLedgerBoundsMinIsZero.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Ledger Bounds Max; 40267500 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondMinSeqAge.raw b/tests/testcases/txCondMinSeqAge.raw deleted file mode 100644 index 6da99a7ba81a3e499b31551f381ba5cd21357522..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV-Sx<{^kJ2qu`t2<3xmgsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV-Sx=AjaDNL)rJ8%!(Qn%Q0Y nL|eYT^+M@E^{<=U?hCD*_Ca9J_wV^d8}q`2;reDwYXGqUee*VO diff --git a/tests/testcases/txCondMinSeqLedgerGap.txt b/tests/testcases/txCondMinSeqLedgerGap.txt deleted file mode 100644 index 89c974f9..00000000 --- a/tests/testcases/txCondMinSeqLedgerGap.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Min Seq Ledger Gap; 30 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondMinSeqNum.raw b/tests/testcases/txCondMinSeqNum.raw deleted file mode 100644 index 0b120291bd5294904b59defae81da6010b94337c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV-Sx<}olZf(6q8mqYpJ6j&Z8 v2&NTo&Fn6HqAg$FdZF~7`qxcv_l4F@`yjCA`}h2!jd|h1aLqHOHGtRv2fH`3 diff --git a/tests/testcases/txCondMinSeqNum.txt b/tests/testcases/txCondMinSeqNum.txt deleted file mode 100644 index 4b61dc03..00000000 --- a/tests/testcases/txCondMinSeqNum.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Min Seq Num; 40260007 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondTimeBounds.raw b/tests/testcases/txCondTimeBounds.raw deleted file mode 100644 index 48591c24d419a3a464b5e8c88d4892adadc104e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQqKrxL1?T0UmWX^_#h@&Ug6fv s?$RgP^7XA3N)M`k-Q;#(XzjEQ0(-uH&oA1T7cLCd!@w|OS_6m;0GoL^KL7v# diff --git a/tests/testcases/txCondTimeBounds.txt b/tests/testcases/txCondTimeBounds.txt deleted file mode 100644 index 6613eafb..00000000 --- a/tests/testcases/txCondTimeBounds.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Valid After (UTC); 1970-01-01 00:00:01 -Valid Before (UTC); 9999-12-31 23:59:59 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondTimeBoundsMaxIsZero.raw b/tests/testcases/txCondTimeBoundsMaxIsZero.raw deleted file mode 100644 index a46a726bf74cfd10e8c98b72332c727d8c12c206..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQqKrtB-!<*gJ>iG76sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQqKrxL5U>0z9~>9OdL!r+?v^4 p`b1m4zV$-sLG`bj-0lmlo%TUs&-d^7MH}N> diff --git a/tests/testcases/txCondTimeBoundsMinIsZero.txt b/tests/testcases/txCondTimeBoundsMinIsZero.txt deleted file mode 100644 index 0e6d4619..00000000 --- a/tests/testcases/txCondTimeBoundsMinIsZero.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Valid Before (UTC); 2022-03-26 03:55:00 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCondWithoutLedgerBounds.raw b/tests/testcases/txCondWithoutLedgerBounds.raw deleted file mode 100644 index 5fb1599c7008103a89e6e1d2e78c7cc9fa23c6a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hQV+t6AWo92ZwG{qbO6yn02XIT z3tSH2GHe0TazG5y!+bydBFF4#L8j~Bg@z9n?`e1~f0*s;3*YZCHu5re&DMeRGH0Y# z0x1UO!qbW8Zq0Y$pJ>b1w_YecsQz`6+kK(6(>@67`Tjk>Xk%WuFjxnOm@%yZL;(Qy)^wi$ diff --git a/tests/testcases/txCondWithoutLedgerBounds.txt b/tests/testcases/txCondWithoutLedgerBounds.txt deleted file mode 100644 index e6e526f8..00000000 --- a/tests/testcases/txCondWithoutLedgerBounds.txt +++ /dev/null @@ -1,12 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Valid After (UTC); 2022-03-31 06:43:20 -Valid Before (UTC); 2022-03-31 07:33:20 -Min Seq Num; 40260007 -Min Seq Age; 180 -Min Seq Ledger Gap; 30 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txCreateAccount.raw b/tests/testcases/txCreateAccount.raw deleted file mode 100644 index 46e354aa47a823820fda3541bff6d55c687bc967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l3O!PoFSkY)s_hXQ0aLqttRhhkTC#hoJ7 i7tAkyY5d};zI{ez-JsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfQD9vC!>lBCy6K5!Q z@oCz8tarWk%bn?K!y@i|_IW6MeCDJ4)w$|T&QpW=p=v>9vVb%u%3f&$Qp`XMGJ_R} JL0}7r0078qI931v diff --git a/tests/testcases/txCreateClaimableBalancePredicateAnd.txt b/tests/testcases/txCreateClaimableBalancePredicateAnd.txt deleted file mode 100644 index 5d013edc..00000000 --- a/tests/testcases/txCreateClaimableBalancePredicateAnd.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Create Claimable Balance -Balance; 100 XLM -WARNING; Currently does not support displaying claimant details diff --git a/tests/testcases/txCreateClaimableBalancePredicateBeforeAbs.raw b/tests/testcases/txCreateClaimableBalancePredicateBeforeAbs.raw deleted file mode 100644 index aa956f6c0746b59c67e666b6adae35024b9bb47d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfQAk7%z><8v@H-GLl zF5lyDC8+x=^U?q7k0{w6=yd91OAb1Du4%EN1yB)F2=^0^T9|%@au=Vb&BuDzYrou? lzBVl4-e;eO(#K~$%3qzU-sC(rm>;N?1*9QS_DUOw1_0XJNB{r; diff --git a/tests/testcases/txCreateClaimableBalancePredicateBeforeAbs.txt b/tests/testcases/txCreateClaimableBalancePredicateBeforeAbs.txt deleted file mode 100644 index 1ecdf353..00000000 --- a/tests/testcases/txCreateClaimableBalancePredicateBeforeAbs.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Create Claimable Balance -Balance; 1000 XCN@GAF..QWQ2 -WARNING; Currently does not support displaying claimant details diff --git a/tests/testcases/txCreateClaimableBalancePredicateBeforeRel.raw b/tests/testcases/txCreateClaimableBalancePredicateBeforeRel.raw deleted file mode 100644 index 4c344607423278ec0b24c4ce384c79cdd2d735d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfQD9vC!>lBCy6K5!Q t@oCz8tarWk%bn?K!y@i|_IW6MeCDJ4)w$|T&QpW=fofSGdiexEGytsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfQD9vC!>lBCyS5xld z)3o_m?|SW*JJZ*OMcn)B^HBQu%t!gFbJd%irv~%G^nvJg|NN3#&TD3UnpI^YnKA9q Yt0Nn|%s=n)__kWsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfQD9vC!>lBCy6K5!Q x@oCz8tarWk%bn?K!y@i|_IW6MeCDJ4)w$|T&QpW=fohqd>RCY=fnW=W003lXHg^C3 diff --git a/tests/testcases/txCreateClaimableBalancePredicateNot.txt b/tests/testcases/txCreateClaimableBalancePredicateNot.txt deleted file mode 100644 index 5d013edc..00000000 --- a/tests/testcases/txCreateClaimableBalancePredicateNot.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Create Claimable Balance -Balance; 100 XLM -WARNING; Currently does not support displaying claimant details diff --git a/tests/testcases/txCreateClaimableBalancePredicateOr.raw b/tests/testcases/txCreateClaimableBalancePredicateOr.raw deleted file mode 100644 index 3c4a94dfccc60ad91a83c02f5623152a8d843c99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfQD9vC!>lBCy6K5!Q z@oCz8tarWk%bn?K!y@i|_IW6MeCDJ4)w$|T&QpW=foehKfiMdYGbGAhX#-NMAT|(e G0TBQTWjIp+ diff --git a/tests/testcases/txCreateClaimableBalancePredicateOr.txt b/tests/testcases/txCreateClaimableBalancePredicateOr.txt deleted file mode 100644 index 5d013edc..00000000 --- a/tests/testcases/txCreateClaimableBalancePredicateOr.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Create Claimable Balance -Balance; 100 XLM -WARNING; Currently does not support displaying claimant details diff --git a/tests/testcases/txCreateClaimableBalancePredicateUnconditional.raw b/tests/testcases/txCreateClaimableBalancePredicateUnconditional.raw deleted file mode 100644 index 67fa5f405e710ad24bcad4f78b3232a4c83972e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfQD9vC!>lBCy6K5!Q m@oCz8tarWk%bn?K!y@i|_IW6MeCDJ4)w$|T&QpW=Vfp|Bg*CbW diff --git a/tests/testcases/txCreateClaimableBalancePredicateUnconditional.txt b/tests/testcases/txCreateClaimableBalancePredicateUnconditional.txt deleted file mode 100644 index 5d013edc..00000000 --- a/tests/testcases/txCreateClaimableBalancePredicateUnconditional.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Create Claimable Balance -Balance; 100 XLM -WARNING; Currently does not support displaying claimant details diff --git a/tests/testcases/txCreateOffer.raw b/tests/testcases/txCreateOffer.raw deleted file mode 100644 index a8f797774f6e9ef69103ac8763b3fa6aa3b7828c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l3O!PoFSkY)s_hXNRz8OC=B4R8gqi7=00 Q(}g&YQji%i{UAOA0N8&wegFUf diff --git a/tests/testcases/txCreateOffer.txt b/tests/testcases/txCreateOffer.txt deleted file mode 100644 index 249a23f4..00000000 --- a/tests/testcases/txCreateOffer.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 21728338334711809 -Tx Source; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Operation Type; Manage Sell Offer -Create Offer; Type Active -Buy; DUPE@GBG..XESH -Price; 0.3333333 DUPE@GBG..XESH -Sell; 300 XLM diff --git a/tests/testcases/txCreateOffer2.raw b/tests/testcases/txCreateOffer2.raw deleted file mode 100644 index 379d33af7dea1e81fdd8af552dc227254672c379..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS94@_VZ;QbJTk5 z?a!{iE!6O~JC`xo=vD0e@D<-SBsAQ322_#)Qs+61=`x6h0!Ap!45S%@d_%z86X~&! zY~RErM?d)5bMlGb4(ZP>lcIwkFaPs4!&@-FXbn^kQwaAH28MUr)EQ<>Yk-P@DFDbo BJHh|} diff --git a/tests/testcases/txCreateOffer2.txt b/tests/testcases/txCreateOffer2.txt deleted file mode 100644 index ee718540..00000000 --- a/tests/testcases/txCreateOffer2.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 1234567891 -Tx Source; GCGNXZ5G6FWCNDB7H7G27WYSQDWYW3IBKMZOUXM7K6UPNMDAQDMONKJ2 -Operation Type; Manage Sell Offer -Create Offer; Type Active -Buy; XLM -Price; 1.5644199 XLM -Sell; 1000 RMT@GDE..ZE3N diff --git a/tests/testcases/txCustomAsset12.raw b/tests/testcases/txCustomAsset12.raw deleted file mode 100644 index 3a69beae8aab1671c01c8ac4a8b7bee092b5e261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmb|+poxEO3a0Ny%7c>n+a diff --git a/tests/testcases/txCustomAsset4.txt b/tests/testcases/txCustomAsset4.txt deleted file mode 100644 index 2c521fea..00000000 --- a/tests/testcases/txCustomAsset4.txt +++ /dev/null @@ -1,6 +0,0 @@ -Max Fee; 0.00001 XLM -Sequence Num; 55649191174602781 -Tx Source; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM -Operation Type; Payment -Send; 30 DUPE@GAQ..HMFM -Destination; GCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEJDV diff --git a/tests/testcases/txEndSponsoringFutureReserves.raw b/tests/testcases/txEndSponsoringFutureReserves.raw deleted file mode 100644 index 2207e9a534254cf9675426c953184f2f39d4806f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ue)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfT5Dfsdxg(1J diff --git a/tests/testcases/txEndSponsoringFutureReserves.txt b/tests/testcases/txEndSponsoringFutureReserves.txt deleted file mode 100644 index c4fdc2b3..00000000 --- a/tests/testcases/txEndSponsoringFutureReserves.txt +++ /dev/null @@ -1,5 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; End Sponsoring Future Reserves diff --git a/tests/testcases/txInflation.raw b/tests/testcases/txInflation.raw deleted file mode 100644 index bf9f967d421920f0e4bac96f04a542ba30e74100..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1ZWRVF#nh~TP2tc$sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfDk90N16HO`V>g~<- vF$VcDFRdRRI(|Q6!KB}>Lce}lB@0qFmFXvlV$@>&1fn^CSOkc;kHVrpp diff --git a/tests/testcases/txLiquidityPoolDeposit.txt b/tests/testcases/txLiquidityPoolDeposit.txt deleted file mode 100644 index b4725ff0..00000000 --- a/tests/testcases/txLiquidityPoolDeposit.txt +++ /dev/null @@ -1,10 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Liquidity Pool Deposit -Liquidity Pool ID; 0x48672641C88264272787837F5C306F5CE93BE3C2C7DF68A092FBEA55F5F4AA1D -Max Amount A; 250 -Max Amount B; 500 -Min Price; 0.45 -Max Price; 0.55 diff --git a/tests/testcases/txLiquidityPoolWithdraw.raw b/tests/testcases/txLiquidityPoolWithdraw.raw deleted file mode 100644 index 10642628accf4f549117657e4a5567beac31a698..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXhZjybyLA1QBbzh}n% ta+brJFV}o#w=ey)+w}Akorz069|{4fsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1jItIo^4j>YUu>qJk4^WaZ*e3+6h6uC4 W>NZ`71JNgd7-9~;5F1zmNB{tuJTX21 diff --git a/tests/testcases/txManageBuyOffer.txt b/tests/testcases/txManageBuyOffer.txt deleted file mode 100644 index 37d043f6..00000000 --- a/tests/testcases/txManageBuyOffer.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 123456 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation Type; Manage Buy Offer -Change Offer; 987654 -Sell; SLT@GAD..QN2I -Price; 200 SLT@GAD..QN2I -Buy; 300 XLM diff --git a/tests/testcases/txMemoHash.raw b/tests/testcases/txMemoHash.raw deleted file mode 100644 index 8b146d4a30b933e91b40b211ac6d75b1dcae8a7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmb8H*o#o-- zuK&e${mDC;yK*F+o~|gpso-l3RKo~X38kkxeo%K);gOqf;e4qt?8DOLHsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppp{|$s!YgG$Tko5P)co+|rzqOx^qfARBBB zNDPP>B5E=^6uYV`?i8`UV1DsS;}=i$?K3Lt7QKH~&NHRWb}2{=5U_&?BGfW^1w?|B Hg6#$XI0Z#2 diff --git a/tests/testcases/txMultiOp.txt b/tests/testcases/txMultiOp.txt deleted file mode 100644 index 0cf94357..00000000 --- a/tests/testcases/txMultiOp.txt +++ /dev/null @@ -1,14 +0,0 @@ -Network; Testnet -Memo Text; multi-op -Max Fee; 0.00002 XLM -Sequence Num; 27888631402201089 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation 1 of 2; -Operation Type; Account Merge -Merge Account; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Destination; GBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KNHD -Operation 2 of 2; -Operation Type; Allow Trust -Trustor; GBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KNHD -Asset Code; JPY -Authorize Flag; AUTHORIZED_FLAG diff --git a/tests/testcases/txMultiOpWithSource.raw b/tests/testcases/txMultiOpWithSource.raw deleted file mode 100644 index de042c95181b66d5980a81c944ea5b694164db61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppp|HbwB`C52P7^SR}VJrzBH1zd*MUDXwLidbJTzxbu`i>Lbb8I^U5-ajknnbKyv6sUw) Q^Vo?s&nqAjq!er}01Ad=;{X5v diff --git a/tests/testcases/txMultiOpWithSource.txt b/tests/testcases/txMultiOpWithSource.txt deleted file mode 100644 index 6a7117a5..00000000 --- a/tests/testcases/txMultiOpWithSource.txt +++ /dev/null @@ -1,16 +0,0 @@ -Network; Testnet -Memo Text; multi-op-with-source -Max Fee; 0.00002 XLM -Sequence Num; 2 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation 1 of 2; -Operation Type; Account Merge -Merge Account; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Destination; GBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KNHD -Op Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation 2 of 2; -Operation Type; Allow Trust -Trustor; GBMHY2EIEGFHW6G4OIC6QA7I7IUPUDD33PGCJLVC57THODEUQY62KNHD -Asset Code; JPY -Authorize Flag; AUTHORIZED_FLAG -Op Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I \ No newline at end of file diff --git a/tests/testcases/txOpSource.raw b/tests/testcases/txOpSource.raw deleted file mode 100644 index 659b05cfe891eee3fffaf8c8b4d37e1a4a6a25a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmbX3mk3wAl diff --git a/tests/testcases/txOpSource.txt b/tests/testcases/txOpSource.txt deleted file mode 100644 index bcca8245..00000000 --- a/tests/testcases/txOpSource.txt +++ /dev/null @@ -1,8 +0,0 @@ -Memo ID; 16 -Max Fee; 0.00001 XLM -Sequence Num; 55649191174602781 -Tx Source; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM -Operation Type; Payment -Send; 30 XLM -Destination; GCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEJDV -Op Source; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM \ No newline at end of file diff --git a/tests/testcases/txOpSourceMuxedDestination.raw b/tests/testcases/txOpSourceMuxedDestination.raw deleted file mode 100644 index d5710d8fb6aa97df490604009c7473cc64896291..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmbsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1ZWRVF#nh~TP2tYJXa#3nxNvcAAT3RZ| eESMY%NC6Nq2K$778AO=R6vF)ktOrPd^#cHm2{cCl diff --git a/tests/testcases/txPassiveOffer.txt b/tests/testcases/txPassiveOffer.txt deleted file mode 100644 index 85165825..00000000 --- a/tests/testcases/txPassiveOffer.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Memo Text; create offer -Max Fee; 0.00001 XLM -Sequence Num; 27888631402201089 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation Type; Create Passive Sell Offer -Buy; SLT@GAD..QN2I -Price; 0.25 SLT@GAD..QN2I -Sell; 1000 XLM diff --git a/tests/testcases/txPathPaymentStrictReceive.raw b/tests/testcases/txPathPaymentStrictReceive.raw deleted file mode 100644 index 24db2cf64bf8c4ea086f8104c0b0d41077d8395d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1ZWRVF#nh~TP2tYJ{N`6jGVv#~gzCvDN zW>F$c97Kc6Weg2=0kMfOpF#F)Dp+kqO-6@eS9QgmBGwnoFMetK;;FuUMrGZi_s`0C mrnK2E1uA0nbN2(QCBogBFRpQb)Pmg;=}NRdMrTLj-3|bDsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1jIv@b62hxl{%%75)JbpIF-|<6W&{a6v>`V z1*@Iv_(9!Gg-33_h4ZDpun$X{-&`tX`pxg9e&xa>{Rb(FfQlIX-2K36J&sh|J96{H p+8rfovljb^?e8hf{x@O0;Hh&KlMa0E?v(^8(tL4^1FRNA008i*TUY=9 diff --git a/tests/testcases/txPathPaymentStrictReceiveEmptyPath.txt b/tests/testcases/txPathPaymentStrictReceiveEmptyPath.txt deleted file mode 100644 index 1276510f..00000000 --- a/tests/testcases/txPathPaymentStrictReceiveEmptyPath.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Memo Text; dollar to naira -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation Type; Path Payment Strict Receive -Send Max; 50 USD@GDY..U7WC -Destination; GCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEJDV -Receive; 18000 NGN@GBE..SKYL diff --git a/tests/testcases/txPathPaymentStrictReceiveMuxedDestination.raw b/tests/testcases/txPathPaymentStrictReceiveMuxedDestination.raw deleted file mode 100644 index b9b5dbcd557cf2b50e08c40a8a2e66379d191da9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1jIv@b62hxl{%%75)JbpIF-|<6W&{a6v>`V z1!)1RXJCBfFxBycx|<4*+pp)q5PN zxOe2{iM2aQ)MhRA5!>HWnEh|UdcjlYEG8ZJ-rXw+RHXUh8V5)%*j^?mKM^zPe-?kPYk2bX-PGfgUM8-X1XR!H>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1jIv@b62hxl{%%75Q^pI(tnV$2&jnB&)pBK*5gRUy(2eI ztld$fHfynu*#4fv?0*y13!XY>G3mhf?p{ftBE1Q3FM!m7+|3y23enf%bAR`txbvm+ zQ)m9_{1Y*w{%7&$x`roD-%UL}>1E=INg%b(ju5xsKW`nb#c{LEGPv}f2#f3|7ng}& TR*UgB=i71$<<<8}gA4}%J$Qch diff --git a/tests/testcases/txPathPaymentStrictSend.txt b/tests/testcases/txPathPaymentStrictSend.txt deleted file mode 100644 index 45530f70..00000000 --- a/tests/testcases/txPathPaymentStrictSend.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Memo Text; dollar to naira -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Send; 60 USD@GDY..U7WC -Destination; GCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEJDV -Receive Min; 20000 NGN@GBE..SKYL -Via; YEN, CAD diff --git a/tests/testcases/txPathPaymentStrictSendEmptyPath.raw b/tests/testcases/txPathPaymentStrictSendEmptyPath.raw deleted file mode 100644 index 163d12dbd8e1fb8610b4745eba854ad9a2bbc2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1jIv@b62hxl{%%75Q^pI(tnV$2&jnB&)pBK*5gRUy(2eI ptld$fHfynu*#4fv?0*y13!XY>G3mhf?p{ftBE1Q3FM!p82mtPyTg(6e diff --git a/tests/testcases/txPathPaymentStrictSendEmptyPath.txt b/tests/testcases/txPathPaymentStrictSendEmptyPath.txt deleted file mode 100644 index 61cd6fbd..00000000 --- a/tests/testcases/txPathPaymentStrictSendEmptyPath.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Memo Text; dollar to naira -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Send; 60 USD@GDY..U7WC -Destination; GCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEJDV -Receive Min; 20000 NGN@GBE..SKYL diff --git a/tests/testcases/txPathPaymentStrictSendMuxedDestination.raw b/tests/testcases/txPathPaymentStrictSendMuxedDestination.raw deleted file mode 100644 index babff2ec57b132f884da29474b306b44237c6496..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1jIv@b62hxl{%%75;r1L~Yh$AF=&Ch1vfmtQS0W&SKJm@7=wUKt*~J-d+Hy1-YLw(iNhw#pnL+ zLviOz=cms6)%ho4M*Yv?&vgw?p1zxUeA3Ir6_Y?}ogE>5xPRU{T#Mson`Ln6JrNe! YPcAMKzpNJHZ_c;n6w0gbl?E9O0K^}F8UO$Q diff --git a/tests/testcases/txPathPaymentStrictSendMuxedDestination.txt b/tests/testcases/txPathPaymentStrictSendMuxedDestination.txt deleted file mode 100644 index 4c89fbfa..00000000 --- a/tests/testcases/txPathPaymentStrictSendMuxedDestination.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Memo Text; dollar to naira -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Send; 60 USD@GDY..U7WC -Destination; MCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEAAAAAAAAAPCIBQZY -Receive Min; 20000 NGN@GBE..SKYL -Via; YEN, CAD diff --git a/tests/testcases/txPaymentMuxedDestination.raw b/tests/testcases/txPaymentMuxedDestination.raw deleted file mode 100644 index 09a751d98e406b8be15262aae23a0581e9fc1be8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmbn2xSu3qy+mx^E4IHNHG&TpgD3_7<4Zs_ diff --git a/tests/testcases/txPaymentMuxedDestination.txt b/tests/testcases/txPaymentMuxedDestination.txt deleted file mode 100644 index 40f41c8b..00000000 --- a/tests/testcases/txPaymentMuxedDestination.txt +++ /dev/null @@ -1,6 +0,0 @@ -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM -Operation Type; Payment -Send; 30 DUPE@GBL..2LXQ -Destination; MCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEAAAAAAAAAPCIBQZY diff --git a/tests/testcases/txRemoveData.raw b/tests/testcases/txRemoveData.raw deleted file mode 100644 index a1eea196e03668055f690ba3041c89489f70519d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1ZWRVF#nh~TP2tYJsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1ZWRVF#nh~TP3Sewz7(du21k5DDJY+M# L`gv;qWr73&Yrrr) diff --git a/tests/testcases/txRemoveOffer.txt b/tests/testcases/txRemoveOffer.txt deleted file mode 100644 index c4cc7fff..00000000 --- a/tests/testcases/txRemoveOffer.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 27888631402201089 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation Type; Manage Sell Offer -Remove Offer; 209583721 diff --git a/tests/testcases/txRemoveTrust.raw b/tests/testcases/txRemoveTrust.raw deleted file mode 100644 index 4418293703e23e4edaabc9297718d0d140393fff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfS7?T>UPQA5cA+$ zUtj#;HM!uWEUMnVR4DQ0C*im__X05wppq1ZWRVF#nh~TP3SewDAfGYVCj=}^gjq2C F3;_OHE=&Lb diff --git a/tests/testcases/txRemoveTrust.txt b/tests/testcases/txRemoveTrust.txt deleted file mode 100644 index 2cd7691b..00000000 --- a/tests/testcases/txRemoveTrust.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 27888631402201089 -Tx Source; GADFVW3UXVKDOU626XUPYDJU2BFCGFJHQ6SREYOZ6IJV4XSHOALEQN2I -Operation Type; Change Trust -Remove Trust; SLT@GAD..QN2I diff --git a/tests/testcases/txRemoveTrustLiquidityPoolAsset.raw b/tests/testcases/txRemoveTrustLiquidityPoolAsset.raw deleted file mode 100644 index d884244b0332dffab31688bac053c6a93d7b15ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfIAk7SAgD57C)SR4r uB!S<(d%N6ijxS6$mu3Itrmb`}q2Jey{doQ@6S4HXU-}P$O68E0GXMaYx-=^Q diff --git a/tests/testcases/txRemoveTrustLiquidityPoolAsset.txt b/tests/testcases/txRemoveTrustLiquidityPoolAsset.txt deleted file mode 100644 index 2dfe3570..00000000 --- a/tests/testcases/txRemoveTrustLiquidityPoolAsset.txt +++ /dev/null @@ -1,10 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Change Trust -Remove Trust; -Liquidity Pool; Asset -Asset A; XLM -Asset B; Hello@GD5..DB2Y -Pool Fee Rate; 0.3% diff --git a/tests/testcases/txRevokeSponsorshipAccount.raw b/tests/testcases/txRevokeSponsorshipAccount.raw deleted file mode 100644 index 026beae38134385e3c701fdee7758586bc33470f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|C=I5{U3{80AM0JO f{c>me+OUXwpM4%mAD{Use|4^Ulk?PIevl#nF^M!D diff --git a/tests/testcases/txRevokeSponsorshipAccount.txt b/tests/testcases/txRevokeSponsorshipAccount.txt deleted file mode 100644 index 4e72efbd..00000000 --- a/tests/testcases/txRevokeSponsorshipAccount.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Revoke Sponsorship (ACCOUNT) -Account ID; GB3UITECWPDI3LZL5G4WPLKWLDPPGTHBDPDZTYTPVNWSPASDSVJQ7USV diff --git a/tests/testcases/txRevokeSponsorshipClaimableBalance.raw b/tests/testcases/txRevokeSponsorshipClaimableBalance.raw deleted file mode 100644 index 8fc3209dc2c41083542e8cfbaf45a361b427de7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|D9r+*PaawMcuB^@ h#R;N^#W&v<-=fX0bz{-HWhYHeem~(9yL>H34FEz`HGcpA diff --git a/tests/testcases/txRevokeSponsorshipClaimableBalance.txt b/tests/testcases/txRevokeSponsorshipClaimableBalance.txt deleted file mode 100644 index 16d3db49..00000000 --- a/tests/testcases/txRevokeSponsorshipClaimableBalance.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Revoke Sponsorship (CLAIMABLE_BALANCE) -Balance ID; 0x00000000C9C4A9E3A46891A36015C317B3DF17B42B0F2AD8A2EEA6C934C9F7C8425DA7AD diff --git a/tests/testcases/txRevokeSponsorshipData.raw b/tests/testcases/txRevokeSponsorshipData.raw deleted file mode 100644 index 5322a708db35d83a7e4ceec7976ba9a09f0f5c4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|D9sF_%Uyh$HXrL< xul;go`r5FFd!KzCN*|y3D1UXXdXw|iV1A$yUXRqAoO~SxpVXA}RFES;004y(IKcn_ diff --git a/tests/testcases/txRevokeSponsorshipData.txt b/tests/testcases/txRevokeSponsorshipData.txt deleted file mode 100644 index c812c668..00000000 --- a/tests/testcases/txRevokeSponsorshipData.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Revoke Sponsorship (DATA) -Account ID; GB3UITECWPDI3LZL5G4WPLKWLDPPGTHBDPDZTYTPVNWSPASDSVJQ7USV -Data Name; Hello, Ledger diff --git a/tests/testcases/txRevokeSponsorshipLiquidityPool.raw b/tests/testcases/txRevokeSponsorshipLiquidityPool.raw deleted file mode 100644 index 2bb03fbaf121942afbc64c6d3bc476c1bd726ea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|D9!4TuI6~6DMekq ey}3TdAV21%_2Waw?`JHS^!rul*DtGNLFxc^;52ps diff --git a/tests/testcases/txRevokeSponsorshipLiquidityPool.txt b/tests/testcases/txRevokeSponsorshipLiquidityPool.txt deleted file mode 100644 index 7162961a..00000000 --- a/tests/testcases/txRevokeSponsorshipLiquidityPool.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Revoke Sponsorship (LIQUIDITY_POOL) -Liquidity Pool ID; 0x48672641C88264272787837F5C306F5CE93BE3C2C7DF68A092FBEA55F5F4AA1D diff --git a/tests/testcases/txRevokeSponsorshipOffer.raw b/tests/testcases/txRevokeSponsorshipOffer.raw deleted file mode 100644 index de561fc2b7666b4fea0858b93a5a6ac03e4db9e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|C=He?ckyZ3e5`l9 k_RF2=Yr`V$efD`MeSGGl{MEVYP0mw;`N3)#A31<%0NH&tLjV8( diff --git a/tests/testcases/txRevokeSponsorshipOffer.txt b/tests/testcases/txRevokeSponsorshipOffer.txt deleted file mode 100644 index ea381c7a..00000000 --- a/tests/testcases/txRevokeSponsorshipOffer.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Revoke Sponsorship (OFFER) -Seller ID; GB3UITECWPDI3LZL5G4WPLKWLDPPGTHBDPDZTYTPVNWSPASDSVJQ7USV -Offer ID; 123456 diff --git a/tests/testcases/txRevokeSponsorshipSignerEd25519PublicKey.raw b/tests/testcases/txRevokeSponsorshipSignerEd25519PublicKey.raw deleted file mode 100644 index 1ea3c80784e7f6486ef94ca7296c543e9c3ba000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|APr`hyZAJ1KGwTl z`{mB`wP6wWKKneBK0fnN{_0%yCg-Wa{2=v?+?T(X?ObE>XX=e6pPSJi%R2aPe3-aS QdHvgUtv^fI|AEv10Ck~982|tP diff --git a/tests/testcases/txRevokeSponsorshipSignerEd25519PublicKey.txt b/tests/testcases/txRevokeSponsorshipSignerEd25519PublicKey.txt deleted file mode 100644 index b5b08cae..00000000 --- a/tests/testcases/txRevokeSponsorshipSignerEd25519PublicKey.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Revoke Sponsorship (SIGNER_KEY) -Account ID; GB3UITECWPDI3LZL5G4WPLKWLDPPGTHBDPDZTYTPVNWSPASDSVJQ7USV -Signer Key Type; Public Key -Signer Key; GBAQXU7XO242YNH4SXMIETGZLPYXNCAP3DYJDLRDV7W25BPZOUD747C7 diff --git a/tests/testcases/txRevokeSponsorshipSignerHashX.raw b/tests/testcases/txRevokeSponsorshipSignerHashX.raw deleted file mode 100644 index fbf495903b6bf05ee01bfe9007d2f958adc7d352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|APr`hyZAJ1KGwTl z`{mB`wP6wWKKneBK0fnN{_0%yCg-Wa{2=|ec*AeidIUWGBXDWuh1bUozpvlIT5`a6 Q>c(16k=YZ!?gN<#0BZsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|APr`hyZAJ1KGwTl z`{mB`wP6wWKKneBK0fnN{_0%yCg-Wa{2+C=c*AeidIUWGBXDWuh1bUozpvlIT5`a6 Q>c(16k=YZ!?gN<#0BYk#GXMYp diff --git a/tests/testcases/txRevokeSponsorshipSignerPreAuth.txt b/tests/testcases/txRevokeSponsorshipSignerPreAuth.txt deleted file mode 100644 index 3a656a98..00000000 --- a/tests/testcases/txRevokeSponsorshipSignerPreAuth.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Revoke Sponsorship (SIGNER_KEY) -Account ID; GB3UITECWPDI3LZL5G4WPLKWLDPPGTHBDPDZTYTPVNWSPASDSVJQ7USV -Signer Key Type; Pre-Auth -Signer Key; TDNA2V62PVEF..SFE3SH234BSS diff --git a/tests/testcases/txRevokeSponsorshipTrustLine.raw b/tests/testcases/txRevokeSponsorshipTrustLine.raw deleted file mode 100644 index 28efdada4bf079fc9daccbda6917d162645f5e09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|WPZ7ePt)dOz3a7K z?o3}B7IE*h&qL|sGau!z&Q))6o*K*#GQ%S^Cnq1O2}Hd}bQ9D4bk5Lfb%)vPZ6_|X WTK*G`2;N$AUMKRU&hDPwATsfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXe|WPZ7ePt)dOz3a7K z?o3}B7IE*h&qL|sGau!z&Q))6o*K*#RLkssfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l3O!PoFSkY)s_hXNRz703s(&-(4)w~qI_ z;H{oyGUtBnr--Cef-&Bw-lo*7IHd9BZ#7gM8sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l3O!PoFSkY)s_2Lceyotv1Kn4YSTl30=m b69ds)K+KYtn41cuLF!n`5_3vH91s8i^hhfF diff --git a/tests/testcases/txSetData.txt b/tests/testcases/txSetData.txt deleted file mode 100644 index bf1fec97..00000000 --- a/tests/testcases/txSetData.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Memo Text; manage data -Max Fee; 0.00001 XLM -Sequence Num; 21728338334711809 -Tx Source; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Operation Type; Manage Data -Set Data; name -Data Value; dmFsdWU= diff --git a/tests/testcases/txSetOptionsEmptyBody.raw b/tests/testcases/txSetOptionsEmptyBody.raw deleted file mode 100644 index 0d381cb31591b6699e4cadf4d5b95bbb63ac7cd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC we)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfoC{2(80J5Ybe*gdg diff --git a/tests/testcases/txSetOptionsEmptyBody.txt b/tests/testcases/txSetOptionsEmptyBody.txt deleted file mode 100644 index e53153bc..00000000 --- a/tests/testcases/txSetOptionsEmptyBody.txt +++ /dev/null @@ -1,6 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Set Options -SET OPTIONS; BODY IS EMPTY diff --git a/tests/testcases/txSetOptionsNoSigner.raw b/tests/testcases/txSetOptionsNoSigner.raw deleted file mode 100644 index d53d933fa8c79939c22302f459f80990c056be56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfoD2sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfoD2sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSAEYvcvyx@1nA& zhaQCNcRsvudWW;%)wkN0Py7(xxWheH8>l3O!PoFSkY)s_hXNRz703s(&-(4)w~qI_ z;H{oyGUtBnr--Cef-&Bw-lo*7IHd9BZ#9xWm|hT#%w~r2`OC}8^-?Pma|?1(^^)^* LL0XBm1FQ}J+r&w+ diff --git a/tests/testcases/txSetSomeOptions.txt b/tests/testcases/txSetSomeOptions.txt deleted file mode 100644 index 2b07dd9f..00000000 --- a/tests/testcases/txSetSomeOptions.txt +++ /dev/null @@ -1,13 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 21728338334711809 -Tx Source; GBGBTCCP7WG2E5XFYLQFJP2DYOQZPCCDCHK62K6TZD4BHMNYI5WSXESH -Operation Type; Set Options -Inflation Dest; GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7 -Set Flags; Auth required -Low Threshold; 1 -High Threshold; 3 -Home Domain; www.example.com -Add Signer; Type Public Key -Signer Key; GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7 -Weight; 1 diff --git a/tests/testcases/txSetTrustLineFlags.raw b/tests/testcases/txSetTrustLineFlags.raw deleted file mode 100644 index 105395f229997c0a676c46ef1634cc5ab89aa87f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBRSyywQt_0FxC ze)rx=PK~w~r!T*aizrX&QF^ze=ym0}#Xuz~Aay_hRu5q^FhXfj5MA!#)3o_m?|SW* zJJZ*OMcn)B^HBQu%t!gFbJd%irv~!_l`wgv=H%o*BYL<0bQYeohD diff --git a/tests/testcases/txSetTrustLineFlags.txt b/tests/testcases/txSetTrustLineFlags.txt deleted file mode 100644 index c0da5b48..00000000 --- a/tests/testcases/txSetTrustLineFlags.txt +++ /dev/null @@ -1,9 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GD2J5ZZTU4XM5LEX3XPKSCJIQ3UMXU7NLZMHOZEMELXKI4XLPHHKGVM5 -Operation Type; Set Trust Line Flags -Trustor; GB3UITECWPDI3LZL5G4WPLKWLDPPGTHBDPDZTYTPVNWSPASDSVJQ7USV -Asset; Hello@GDU..XD2K -Clear Flags; [none] -Set Flags; AUTHORIZED, AUTHORIZED_TO_MAINTAIN_LIABILITIES, TRUSTLINE_CLAWBACK_ENABLED diff --git a/tests/testcases/txSimple.raw b/tests/testcases/txSimple.raw deleted file mode 100644 index 4db391fb92421d6e6c6b76bb0c27938d2f6ca317..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmb-Z3}; diff --git a/tests/testcases/txSimple.txt b/tests/testcases/txSimple.txt deleted file mode 100644 index e59fd845..00000000 --- a/tests/testcases/txSimple.txt +++ /dev/null @@ -1,6 +0,0 @@ -Max Fee; 0.00001 XLM -Sequence Num; 55649191174602777 -Tx Source; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM -Operation Type; Payment -Send; 1 XLM -Destination; GCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEJDV diff --git a/tests/testcases/txSimpleMuxedSource.raw b/tests/testcases/txSimpleMuxedSource.raw deleted file mode 100644 index 0bfbfb45882cd99774d5ac692d732da8bf3989e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmb|plk^{?EQ0HrF|7f_1^|bAFed;2 diff --git a/tests/testcases/txSimpleMuxedSource.txt b/tests/testcases/txSimpleMuxedSource.txt deleted file mode 100644 index 55515ec0..00000000 --- a/tests/testcases/txSimpleMuxedSource.txt +++ /dev/null @@ -1,6 +0,0 @@ -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; MAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRGAAAAAAAAAPCIDE24 -Operation Type; Payment -Send; 1 XLM -Destination; GCKUD4BHIYSAYHU7HBB5FDSW6CSYH3GSOUBPWD2KE7KNBERP4BSKEJDV diff --git a/tests/testcases/txSourceEqualOpSourceEqualSigner.raw b/tests/testcases/txSourceEqualOpSourceEqualSigner.raw deleted file mode 100644 index 2ed33aa5f2aa31830c9c23d9043472ac966de194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQOV=KemzI_TO z9-n7uJze`;uKCKFhChbh($ diff --git a/tests/testcases/txSourceEqualOpSourceEqualSigner.txt b/tests/testcases/txSourceEqualOpSourceEqualSigner.txt deleted file mode 100644 index 0f05de95..00000000 --- a/tests/testcases/txSourceEqualOpSourceEqualSigner.txt +++ /dev/null @@ -1,8 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GDJYDB..AIP2GC -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM -Op Source; GDJYDB..AIP2GC \ No newline at end of file diff --git a/tests/testcases/txSourceEqualSigner.raw b/tests/testcases/txSourceEqualSigner.raw deleted file mode 100644 index c53fb6862a812e78f9992ebd8b75bca25f9868a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9sfSBQOV=KemzI_TO z9-n7uJze`;uKCKFhChb-@oSo;6kg diff --git a/tests/testcases/txSourceEqualSigner.txt b/tests/testcases/txSourceEqualSigner.txt deleted file mode 100644 index 640ddbdf..00000000 --- a/tests/testcases/txSourceEqualSigner.txt +++ /dev/null @@ -1,7 +0,0 @@ -Network; Testnet -Max Fee; 0.00001 XLM -Sequence Num; 2 -Tx Source; GDJYDB..AIP2GC -Operation Type; Payment -Send; 1 XLM -Destination; GAQNVGMLOXSCWH37QXIHLQJH6WZENXYSVWLPAEF4673W64VRNZLRHMFM diff --git a/tests/testcases/txSourceMuxedAccountEqualSigner.raw b/tests/testcases/txSourceMuxedAccountEqualSigner.raw deleted file mode 100644 index 472e758926f409ee21ce07311eeef0bb27d0d717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmX^2z(6;$#n))>sfjU7%y(Tj+wZQsBgrbaxN6^hjW<_{7#J9s7#J9V6c{jGZfs?^ z+qX~Q#N+b}t*2|B%Qatl)9}ZT-*IEX`)89I+JUN4plX5o-~eU-m{zzov%B<(wtRi- jh0=rSUpKkk7g{^*gTS8e-}8$$=7kHxb=0.12.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/bignumber.js": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-4.1.0.tgz", + "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/js-xdr": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/js-xdr/-/js-xdr-1.3.0.tgz", + "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==", + "dependencies": { + "lodash": "^4.17.5", + "long": "^2.2.3" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/long": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/long/-/long-2.4.0.tgz", + "integrity": "sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/sodium-native": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/sodium-native/-/sodium-native-3.3.0.tgz", + "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + } + }, + "node_modules/stellar-base": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.1.0.tgz", + "integrity": "sha512-sQaLZZ2qaFUokOtFVfimFNCCZuX5QEYV2Zxa4Ve+br8cdv1pl6AOaAlpyjs0T7E4V3FmvLi5MJkUQ50i0yHfmA==", + "dependencies": { + "base32.js": "^0.1.0", + "bignumber.js": "^4.0.0", + "crc": "^3.5.0", + "js-xdr": "^1.1.3", + "lodash": "^4.17.21", + "sha.js": "^2.3.6", + "tweetnacl": "^1.0.3" + }, + "optionalDependencies": { + "sodium-native": "^3.3.0" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/typescript": { + "version": "4.6.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + } + }, + "dependencies": { + "@types/node": { + "version": "17.0.29", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.29.tgz", + "integrity": "sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA==", + "dev": true + }, + "base32.js": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/base32.js/-/base32.js-0.1.0.tgz", + "integrity": "sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bignumber.js": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-4.1.0.tgz", + "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==" + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "requires": { + "buffer": "^5.1.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "js-xdr": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/js-xdr/-/js-xdr-1.3.0.tgz", + "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==", + "requires": { + "lodash": "^4.17.5", + "long": "^2.2.3" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "long": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/long/-/long-2.4.0.tgz", + "integrity": "sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ==" + }, + "node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "optional": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "sodium-native": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/sodium-native/-/sodium-native-3.3.0.tgz", + "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "stellar-base": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.1.0.tgz", + "integrity": "sha512-sQaLZZ2qaFUokOtFVfimFNCCZuX5QEYV2Zxa4Ve+br8cdv1pl6AOaAlpyjs0T7E4V3FmvLi5MJkUQ50i0yHfmA==", + "requires": { + "base32.js": "^0.1.0", + "bignumber.js": "^4.0.0", + "crc": "^3.5.0", + "js-xdr": "^1.1.3", + "lodash": "^4.17.21", + "sha.js": "^2.3.6", + "sodium-native": "^3.3.0", + "tweetnacl": "^1.0.3" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "typescript": { + "version": "4.6.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "dev": true + } + } +} diff --git a/tests_common_js/package.json b/tests_common_js/package.json new file mode 100644 index 00000000..ebfe30bf --- /dev/null +++ b/tests_common_js/package.json @@ -0,0 +1,34 @@ +{ + "name": "tests-common", + "version": "1.0.0", + "description": "Ledger Stellar App Test Common JavaScript", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "/dist" + ], + "scripts": { + "build": "tsc" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/LedgerHQ/app-stellar.git" + }, + "keywords": [ + "stellar", + "ledger" + ], + "author": "overcat", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/LedgerHQ/app-stellar/issues" + }, + "homepage": "https://github.com/LedgerHQ/app-stellar#readme", + "dependencies": { + "stellar-base": "^8.1.0" + }, + "devDependencies": { + "@types/node": "^17.0.29", + "typescript": "^4.6.3" + } +} \ No newline at end of file diff --git a/tests_common_js/src/index.ts b/tests_common_js/src/index.ts new file mode 100644 index 00000000..6e3a56a9 --- /dev/null +++ b/tests_common_js/src/index.ts @@ -0,0 +1,2129 @@ +import { + Operation, + TransactionBuilder, + Networks, + BASE_FEE, + Account, + Memo, + Keypair, + Asset, + StrKey, + Claimant, + getLiquidityPoolId, + LiquidityPoolAsset, + MuxedAccount, + LiquidityPoolId, +} from "stellar-base"; + +// mnemonic: 'other base behind follow wet put glad muscle unlock sell income october' +// index 0: GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 / SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK +// index 1: GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX / SAE52G23WPAS7MIR2OFGILLICLXXR4K6HSXZHMKD6C33JCAVVILIWYAA +// index 2: GCJBZJSKICFGD3FJMN5RBQIIXYUNVWOI7YAHQZQKK4UAWFGW6TRBRVX3 / SCGYXI6ZHWGD5EPFCFVH37EUHA5BIFNJQJGPMXDKHD4DYA3N2MXMA3NI +// index 3: GCPWZDBYNXVQYOKUWAL34ED3GDKD6UITURJP734A4DPB5EPDSXHAM3KX / SB6YADAUJ6ZCG4X7UAKLBJEXGZZJP3S2JUBSD5ZMQNXUGWPNBECNBE6O +// index 4: GATLHLTLWJVCZ52WDZOVTXFE5YXGEQ6SGEAFEL5J52WIYSGPY7PW7BMV / SBWIYHM4LEWSVHIOJXNP66XDUNME373L25EIDEMFWXNZD56PGXEUWSYG +// index 5: GCJ644IGDW7YFNKHTWSCM37FRMFBQ2EDMZLQM4AUCRBFCW562XXC5OW3 / SA3LRNOYCV4NVVYWLX4P3CXQA3ONKBCQRZDSOVENQ2TCNZRFBEO55FXW +// index 6: GCV6BUTD2REAS3MYMXIFPAMPX24FII3HNHLLESPYLOZDNZAJ4ULXP6KU / SDWURSMB36GGY7DBV2D6QMLG5WAZGFQIZNOSCJZDHC7XEMSFNFX2PEWV +// index 7: GALWXOA7RDHCPT7EXBIVCEPQIDNS5RRD6LJORBIA2HU22ORQ6XH267VE / SAKNBXQWB47HK5IN3VI5VM6UVJTCFRIILUQMLTXVA4KNM36RGME6CSJH +// index 8: GBWFAOQTZVL76F27XDJA2YDH2WKYHHMJAOKHF3B2HFHBMNBNBGMCNKQE / SC3N32WGXFSTQQZ6YNCBLUS6QAD6YUBITJROPQ2UWLMC6HOWZ2N3I5F7 +// index 9: GD3OAWFV6M5T2DWVWRQONITXSMWJA2DQ3524H7BQYCNVHJZJFWSN65IA / SAJIU6F4S6ML76JWPBE56XWUIFT77VVPMB6IFTKA6L6EIJ2CFWBFYDWO +const kp0 = Keypair.fromSecret( + "SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK" +); +const kp1 = Keypair.fromSecret( + "SAE52G23WPAS7MIR2OFGILLICLXXR4K6HSXZHMKD6C33JCAVVILIWYAA" +); + +const kp2 = Keypair.fromSecret( + "SCGYXI6ZHWGD5EPFCFVH37EUHA5BIFNJQJGPMXDKHD4DYA3N2MXMA3NI" +); + +function getCommonTransactionBuilder() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }); +} + +// Operation Testcases +export function opCreateAccount() { + return getCommonTransactionBuilder() + .addOperation( + Operation.createAccount({ + destination: kp1.publicKey(), + startingBalance: "100", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPaymentAssetNative() { + return getCommonTransactionBuilder() + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "922337203685.4775807", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPaymentAssetAlphanum4() { + return getCommonTransactionBuilder() + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + amount: "922337203685.4775807", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPaymentAssetAlphanum12() { + return getCommonTransactionBuilder() + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: new Asset( + "BANANANANANA", + "GCDGPFKW2LUJS2ESKAS42HGOKC6VWOKEJ44TQ3ZXZAMD4ZM5FVHJHPJS" + ), + amount: "922337203685.4775807", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPaymentWithMuxedDestination() { + const muxedAccount = new MuxedAccount( + new Account(kp1.publicKey(), "0"), + "10000" + ).accountId(); + + return getCommonTransactionBuilder() + .addOperation( + Operation.payment({ + destination: muxedAccount, + asset: Asset.native(), + amount: "922337203685.4775807", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPathPaymentStrictReceive() { + return getCommonTransactionBuilder() + .addOperation( + Operation.pathPaymentStrictReceive({ + sendAsset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + sendMax: "1", + destination: kp1.publicKey(), + destAsset: Asset.native(), + destAmount: "123456789.334", + path: [ + new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + new Asset( + "PANDA", + "GDJVFDG5OCW5PYWHB64MGTHGFF57DRRJEDUEFDEL2SLNIOONHYJWHA3Z" + ), + ], + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPathPaymentStrictReceiveWithEmptyPath() { + return getCommonTransactionBuilder() + .addOperation( + Operation.pathPaymentStrictReceive({ + sendAsset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + sendMax: "1", + destination: kp1.publicKey(), + destAsset: Asset.native(), + destAmount: "123456789.334", + path: [], + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPathPaymentStrictReceiveWithMuxedDestination() { + const muxedAccount = new MuxedAccount( + new Account(kp1.publicKey(), "0"), + "10000" + ).accountId(); + return getCommonTransactionBuilder() + .addOperation( + Operation.pathPaymentStrictReceive({ + sendAsset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + sendMax: "1", + destination: muxedAccount, + destAsset: Asset.native(), + destAmount: "123456789.334", + path: [ + new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + new Asset( + "PANDA", + "GDJVFDG5OCW5PYWHB64MGTHGFF57DRRJEDUEFDEL2SLNIOONHYJWHA3Z" + ), + ], + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageSellOfferCreate() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageSellOffer({ + selling: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + buying: Asset.native(), + amount: "988448423.2134", + price: "0.0001234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageSellOfferUpdate() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageSellOffer({ + selling: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + buying: Asset.native(), + amount: "988448423.2134", + price: "0.0001234", + offerId: "7123456", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageSellOfferDelete() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageSellOffer({ + selling: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + buying: Asset.native(), + amount: "0", + price: "0.0001234", + offerId: "7123456", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opCreatePassiveSellOffer() { + return getCommonTransactionBuilder() + .addOperation( + Operation.createPassiveSellOffer({ + selling: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + buying: Asset.native(), + amount: "988448423.2134", + price: "0.0001234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetOptions() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setOptions({ + inflationDest: kp1.publicKey(), + clearFlags: 8, // TODO: SDK do not support multiple flags + setFlags: 1, + masterWeight: 255, + lowThreshold: 10, + medThreshold: 20, + highThreshold: 30, + homeDomain: "stellar.org", + signer: { + ed25519PublicKey: kp2.publicKey(), + weight: 10, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetOptionsWithEmptyBody() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setOptions({ + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetOptionsAddPublicKeySigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setOptions({ + signer: { + ed25519PublicKey: kp1.publicKey(), + weight: 10, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetOptionsAddHashXSigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setOptions({ + signer: { + sha256Hash: StrKey.decodeSha256Hash( + "XDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH235FXL" + ), + weight: 10, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetOptionsAddPreAuthTxSigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setOptions({ + signer: { + preAuthTx: StrKey.decodePreAuthTx( + "TDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH234BSS" + ), + weight: 10, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opChangeTrustAddTrustLine() { + return getCommonTransactionBuilder() + .addOperation( + Operation.changeTrust({ + asset: new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + limit: "922337203680.9999999", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opChangeTrustRemoveTrustLine() { + return getCommonTransactionBuilder() + .addOperation( + Operation.changeTrust({ + asset: new Asset( + "USD", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + limit: "0", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opChangeTrustWithLiquidityPoolAssetAddTrustLine() { + const asset1 = new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ); + const asset2 = new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ); + const asset = new LiquidityPoolAsset(asset1, asset2, 30); + + return getCommonTransactionBuilder() + .addOperation( + Operation.changeTrust({ + asset: asset, + limit: "922337203680.9999999", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opChangeTrustWithLiquidityPoolAssetRemoveTrustLine() { + const asset1 = new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ); + const asset2 = new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ); + const asset = new LiquidityPoolAsset(asset1, asset2, 30); + + return getCommonTransactionBuilder() + .addOperation( + Operation.changeTrust({ + asset: asset, + limit: "0", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opAllowTrustDeauthorize() { + return getCommonTransactionBuilder() + .addOperation( + Operation.allowTrust({ + trustor: kp1.publicKey(), + assetCode: "USD", + authorize: 0, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opAllowTrustAuthorize() { + return getCommonTransactionBuilder() + .addOperation( + Operation.allowTrust({ + trustor: kp1.publicKey(), + assetCode: "USD", + authorize: 1, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opAllowTrustAuthorizeToMaintainLiabilities() { + return getCommonTransactionBuilder() + .addOperation( + Operation.allowTrust({ + trustor: kp1.publicKey(), + assetCode: "USD", + authorize: 2, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opAccountMerge() { + return getCommonTransactionBuilder() + .addOperation( + Operation.accountMerge({ + destination: kp1.publicKey(), + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opAccountMergeWithMuxedDestination() { + const muxedAccount = new MuxedAccount( + new Account(kp1.publicKey(), "0"), + "10000" + ).accountId(); + return getCommonTransactionBuilder() + .addOperation( + Operation.accountMerge({ + destination: muxedAccount, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opInflation() { + return getCommonTransactionBuilder() + .addOperation( + Operation.inflation({ + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageDataAdd() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageData({ + name: "Ledger Stellar App abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda", + value: + "Hello Stellar! abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageDataAddWithUnprintableData() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageData({ + name: "Ledger Stellar App abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda", + value: Buffer.from("这是一条测试消息 hey", "utf8"), + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageDataRemove() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageData({ + name: "Ledger Stellar App abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda", + value: null, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opBumpSequence() { + return getCommonTransactionBuilder() + .addOperation( + Operation.bumpSequence({ + bumpTo: "9223372036854775807", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageBuyOfferCreate() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageBuyOffer({ + selling: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + buying: Asset.native(), + buyAmount: "988448111.2222", + price: "0.0001011", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageBuyOfferUpdate() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageBuyOffer({ + selling: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + buying: Asset.native(), + buyAmount: "988448111.2222", + price: "0.0001011", + offerId: "3523456", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opManageBuyOfferDelete() { + return getCommonTransactionBuilder() + .addOperation( + Operation.manageBuyOffer({ + selling: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + buying: Asset.native(), + buyAmount: "0", + price: "0.0001011", + offerId: "3523456", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPathPaymentStrictSend() { + return getCommonTransactionBuilder() + .addOperation( + Operation.pathPaymentStrictSend({ + sendAsset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + sendAmount: "0.985", + destination: kp1.publicKey(), + destAsset: Asset.native(), + destMin: "123456789.987", + path: [ + new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + new Asset( + "PANDA", + "GDJVFDG5OCW5PYWHB64MGTHGFF57DRRJEDUEFDEL2SLNIOONHYJWHA3Z" + ), + ], + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPathPaymentStrictSendWithEmptyPath() { + return getCommonTransactionBuilder() + .addOperation( + Operation.pathPaymentStrictSend({ + sendAsset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + sendAmount: "0.985", + destination: kp1.publicKey(), + destAsset: Asset.native(), + destMin: "123456789.987", + path: [], + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opPathPaymentStrictSendWithMuxedDestination() { + const muxedAccount = new MuxedAccount( + new Account(kp1.publicKey(), "0"), + "10000" + ).accountId(); + return getCommonTransactionBuilder() + .addOperation( + Operation.pathPaymentStrictSend({ + sendAsset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + sendAmount: "0.985", + destination: muxedAccount, + destAsset: Asset.native(), + destMin: "123456789.987", + path: [ + new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + new Asset( + "PANDA", + "GDJVFDG5OCW5PYWHB64MGTHGFF57DRRJEDUEFDEL2SLNIOONHYJWHA3Z" + ), + ], + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opCreateClaimableBalance() { + const claimants = [ + new Claimant(kp1.publicKey(), Claimant.predicateUnconditional()), + new Claimant( + kp2.publicKey(), + Claimant.predicateAnd( + Claimant.predicateOr( + Claimant.predicateBeforeAbsoluteTime("1629344902"), + Claimant.predicateBeforeAbsoluteTime("1629300000") + ), + Claimant.predicateNot(Claimant.predicateBeforeRelativeTime("180")) + ) + ), + ]; + + return getCommonTransactionBuilder() + .addOperation( + Operation.createClaimableBalance({ + asset: new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + amount: "100", + claimants: claimants, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opClaimClaimableBalance() { + return getCommonTransactionBuilder() + .addOperation( + Operation.claimClaimableBalance({ + balanceId: + "00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opBeginSponsoringFutureReserves() { + return getCommonTransactionBuilder() + .addOperation( + Operation.beginSponsoringFutureReserves({ + sponsoredId: kp1.publicKey(), + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opEndSponsoringFutureReserves() { + return getCommonTransactionBuilder() + .addOperation( + Operation.endSponsoringFutureReserves({ + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipAccount() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeAccountSponsorship({ + account: kp1.publicKey(), + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipTrustLineWithAsset() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeTrustlineSponsorship({ + account: kp1.publicKey(), + asset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipTrustLineWithLiquidityPoolId() { + const asset1 = new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ); + const asset2 = new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ); + + const asset = new LiquidityPoolAsset(asset1, asset2, 30); + const poolId = getLiquidityPoolId( + "constant_product", + asset.getLiquidityPoolParameters() + ); + + const id = new LiquidityPoolId(poolId.toString("hex")); + + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeTrustlineSponsorship({ + account: kp1.publicKey(), + asset: id, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipOffer() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeOfferSponsorship({ + seller: kp1.publicKey(), + offerId: "123456", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipData() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeDataSponsorship({ + account: kp1.publicKey(), + name: "Ledger Stellar App abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipClaimableBalance() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeClaimableBalanceSponsorship({ + balanceId: + "00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipLiquidityPool() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeLiquidityPoolSponsorship({ + liquidityPoolId: + "dd7b1ab831c273310ddbec6f97870aa83c2fbd78ce22aded37ecbf4f3380fac7", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipEd25519PublicKeySigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeSignerSponsorship({ + signer: { + ed25519PublicKey: kp2.publicKey(), + }, + account: kp1.publicKey(), + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipHashXSigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeSignerSponsorship({ + signer: { + sha256Hash: StrKey.decodeSha256Hash( + "XDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH235FXL" + ), + }, + account: kp1.publicKey(), + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opRevokeSponsorshipPreAuthTxSigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.revokeSignerSponsorship({ + signer: { + preAuthTx: StrKey.decodePreAuthTx( + "TDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH234BSS" + ), + }, + account: kp1.publicKey(), + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opClawback() { + return getCommonTransactionBuilder() + .addOperation( + Operation.clawback({ + asset: new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + from: kp1.publicKey(), + amount: "1000.85", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opClawbackWithMuxedFrom() { + const muxedAccount = new MuxedAccount( + new Account(kp1.publicKey(), "0"), + "10000" + ).accountId(); + return getCommonTransactionBuilder() + .addOperation( + Operation.clawback({ + asset: new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + from: muxedAccount, + amount: "1000.85", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opClawbackClaimableBalance() { + return getCommonTransactionBuilder() + .addOperation( + Operation.clawbackClaimableBalance({ + balanceId: + "00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetTrustLineFlagsUnauthorized() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setTrustLineFlags({ + trustor: kp1.publicKey(), + asset: new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + flags: { + authorized: false, + authorizedToMaintainLiabilities: false, + clawbackEnabled: false, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetTrustLineFlagsAuthorized() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setTrustLineFlags({ + trustor: kp1.publicKey(), + asset: new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + flags: { + authorized: true, + authorizedToMaintainLiabilities: true, + clawbackEnabled: false, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetTrustLineFlagsAuthorizedToMaintainLiabilities() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setTrustLineFlags({ + trustor: kp1.publicKey(), + asset: new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + flags: { + authorized: false, + authorizedToMaintainLiabilities: true, + clawbackEnabled: false, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetTrustLineFlagsAuthorizedAndClawbackEnabled() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setTrustLineFlags({ + trustor: kp1.publicKey(), + asset: new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ), + flags: { + authorized: true, + authorizedToMaintainLiabilities: false, + clawbackEnabled: true, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opLiquidityPoolDeposit() { + const asset1 = new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ); + const asset2 = new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ); + + const asset = new LiquidityPoolAsset(asset1, asset2, 30); + const poolId = getLiquidityPoolId( + "constant_product", + asset.getLiquidityPoolParameters() + ); + + return getCommonTransactionBuilder() + .addOperation( + Operation.liquidityPoolDeposit({ + liquidityPoolId: poolId.toString("hex"), + maxAmountA: "1000000", + maxAmountB: "0.2321", + minPrice: "14324232.23", + maxPrice: "10000000.00", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opLiquidityPoolWithdraw() { + const asset1 = new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ); + const asset2 = new Asset( + "USDC", + "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + ); + + const asset = new LiquidityPoolAsset(asset1, asset2, 30); + const poolId = getLiquidityPoolId( + "constant_product", + asset.getLiquidityPoolParameters() + ); + + return getCommonTransactionBuilder() + .addOperation( + Operation.liquidityPoolWithdraw({ + liquidityPoolId: poolId.toString("hex"), + amount: "5000", + minAmountA: "10000", + minAmountB: "20000", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opWithEmptySource() { + return getCommonTransactionBuilder() + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "922337203685.4775807", + }) + ) + .build(); +} + +export function opWithMuxedSource() { + const muxedAccount = new MuxedAccount( + new Account(kp0.publicKey(), "0"), + "10000" + ).accountId(); + + return getCommonTransactionBuilder() + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "922337203685.4775807", + source: muxedAccount, + }) + ) + .build(); +} + +export function txMemoNone() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txMemoId() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.id("18446744073709551615"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txMemoText() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world 123456789 123456"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txMemoTextUnprintable() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: new Memo("text", Buffer.from("这是一条测试消息 hey", "utf8")), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txMemoHash() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.hash( + "573c10b148fc4bc7db97540ce49da22930f4bcd48a060dc7347be84ea9f52d9f" + ), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txMemoReturnHash() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.return( + "573c10b148fc4bc7db97540ce49da22930f4bcd48a060dc7347be84ea9f52d9f" + ), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondWithAllItems() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + minTime: 1657951297, // 2022-07-16T06:01:37+00:00 + }, + ledgerbounds: { + minLedger: 40351800, + maxLedger: 40352000, + }, + minAccountSequence: "103420918407103888", + minAccountSequenceAge: 1649239999, + minAccountSequenceLedgerGap: 30, + extraSigners: [ + "GBJCHUKZMTFSLOMNC7P4TS4VJJBTCYL3XKSOLXAUJSD56C4LHND5TWUC", + "PA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAQACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB6IBZGM", + ], + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondIsNone() { + // We cannot build such a transaction directly through the js-stellar-base + const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAGQBcH2gMW7AaAAAAAAAAAAEVzwQsUj8S8fbl1QM5J2iKTD0vNSKBg3HNHvoTqn1LZ8AAAABAAAAAQAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAAEAAAAA4saBD5tQmyZL8lxf+El0W8/MdWWJGd3aNqynMuZp6FUAAAAAAAAAAACYloAAAAAAAAAAAA=="; + return TransactionBuilder.fromXDR(xdr, Networks.PUBLIC); +} + +export function txCondTimeBounds() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + minTime: 1657951297, // 2022-07-16T06:01:37+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondTimeBoundsMaxIsZero() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 1670818332, // 2022-12-12T04:12:12+00:00 + maxTime: 0, + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondTimeBoundsMinIsZero() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1657951297, // 2022-07-16T06:01:37+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondTimeBoundsAreZero() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondTimeBoundsIsNone() { + // We cannot build such a transaction directly through the js-stellar-base + const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAGQBcH2gMW7AaAAAAAIAAAAAAAAAAQJnuDgCZ7kAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARXPBCxSPxLx9uXVAzknaIpMPS81IoGDcc0e+hOqfUtnwAAAAEAAAABAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NAAAAAQAAAADixoEPm1CbJkvyXF/4SXRbz8x1ZYkZ3do2rKcy5mnoVQAAAAAAAAAAAJiWgAAAAAAAAAAA" + return TransactionBuilder.fromXDR(xdr, Networks.PUBLIC); +} + +export function txCondLedgerBounds() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + ledgerbounds: { + minLedger: 40351800, + maxLedger: 40352000, + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondLedgerBoundsMaxIsZero() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + ledgerbounds: { + minLedger: 40351800, + maxLedger: 0, + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondLedgerBoundsMinIsZero() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + ledgerbounds: { + minLedger: 0, + maxLedger: 40352000, + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondLedgerBoundsAreZero() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + ledgerbounds: { + minLedger: 0, + maxLedger: 0, + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondMinAccountSequence() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + minAccountSequence: "103420918407103888", + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondMinAccountSequenceAge() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + minAccountSequenceAge: 1649239999, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondMinAccountSequenceLedgerGap() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + minAccountSequenceLedgerGap: 30, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondExtraSignersWithOneSigner() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + extraSigners: [ + "PA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAQACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB6IBZGM", + ], + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txCondExtraSignersWithTwoSigners() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 0, + }, + extraSigners: [ + "PA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAQACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB6IBZGM", + "GBJCHUKZMTFSLOMNC7P4TS4VJJBTCYL3XKSOLXAUJSD56C4LHND5TWUC", + ], + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txMultiOperations() { + return getCommonTransactionBuilder() + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "922337203685.4775807", + source: kp0.publicKey(), + }) + ) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: new Asset( + "BTC", + "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH" + ), + amount: "922337203685.4775807", + source: kp0.publicKey(), + }) + ) + .addOperation( + Operation.setOptions({ + homeDomain: "stellar.org", + }) + ) + .build(); +} + +export function txCustomBaseFee() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: "1275", + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .addOperation( + Operation.payment({ + destination: kp2.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txWithMuxedSource() { + const muxedAccount = new MuxedAccount( + new Account(kp0.publicKey(), "103720918407102567"), + "10000" + ); + + return new TransactionBuilder(muxedAccount, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txNetworkPublic() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txNetworkTestnet() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.TESTNET, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txNetworkCustom() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: "Custom Network; July 2022", + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function feeBumpTx() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + const innerTx = new TransactionBuilder(account, { + fee: "50", + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .addOperation( + Operation.payment({ + destination: kp2.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); + innerTx.sign(kp0); + const feeBumpTx = TransactionBuilder.buildFeeBumpTransaction( + kp0, + "750", + innerTx, + Networks.PUBLIC + ); + return feeBumpTx; +} + +export function feeBumpTxWithMuxedFeeSource() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + const innerTx = new TransactionBuilder(account, { + fee: "50", + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.payment({ + destination: kp1.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .addOperation( + Operation.payment({ + destination: kp2.publicKey(), + asset: Asset.native(), + amount: "1", + source: kp0.publicKey(), + }) + ) + .build(); + innerTx.sign(kp0); + innerTx.sign(kp1); + + const muxedAccount = new MuxedAccount( + new Account(kp0.publicKey(), "103720918407102567"), + "10000" + ).accountId(); + const feeBumpTx = TransactionBuilder.buildFeeBumpTransaction( + muxedAccount, + "750", + innerTx, + Networks.PUBLIC + ); + return feeBumpTx; +} + +export function txSourceOmitSourceEqualSigner() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function txSourceOmitSourceNotEqualSigner() { + const account = new Account(kp1.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp1.publicKey(), + }) + ) + .build(); +} + +export function txSourceOmitMuxedSourceEqualSigner() { + const muxedAccount = new MuxedAccount( + new Account(kp0.publicKey(), "103720918407102567"), + "10000" + ); + return new TransactionBuilder(muxedAccount, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function feeBumpTxOmitFeeSourceEqualSigner() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + const innerTx = new TransactionBuilder(account, { + fee: "50", + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); + innerTx.sign(kp0); + const feeBumpTx = TransactionBuilder.buildFeeBumpTransaction( + kp0, + "750", + innerTx, + Networks.PUBLIC + ); + return feeBumpTx; +} + +export function feeBumpTxOmitFeeSourceNotEqualSigner() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + const innerTx = new TransactionBuilder(account, { + fee: "50", + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); + innerTx.sign(kp0); + const feeBumpTx = TransactionBuilder.buildFeeBumpTransaction( + kp1, + "750", + innerTx, + Networks.PUBLIC + ); + return feeBumpTx; +} + +export function feeBumpTxOmitMuxedFeeSourceEqualSigner() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + const innerTx = new TransactionBuilder(account, { + fee: "50", + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); + innerTx.sign(kp0); + + const muxedAccount = new MuxedAccount( + new Account(kp0.publicKey(), "103720918407102567"), + "10000" + ).accountId(); + const feeBumpTx = TransactionBuilder.buildFeeBumpTransaction( + muxedAccount, + "750", + innerTx, + Networks.PUBLIC + ); + return feeBumpTx; +} + +export function opSourceOmitTxSourceEqualOpSourceEqualSigner() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSourceOmitTxSourceEqualOpSourceNotEqualSigner() { + const account = new Account(kp1.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp1.publicKey(), + }) + ) + .build(); +} + +export function opSourceOmitOpSourceEqualSignerNotEqualTxSource() { + const account = new Account(kp1.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSourceOmitTxSourceEqualSignerNotEqualOpSource() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp1.publicKey(), + }) + ) + .build(); +} + +export function opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner() { + const muxedAccount = new MuxedAccount( + new Account(kp0.publicKey(), "103720918407102567"), + "10000" + ); + return new TransactionBuilder(muxedAccount, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: muxedAccount.accountId(), + }) + ) + .build(); +} + +export function opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + const muxedAccount = new MuxedAccount(account, "10000"); + + return new TransactionBuilder(account, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: muxedAccount.accountId(), + }) + ) + .build(); +} + +export function opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner() { + const account = new Account(kp0.publicKey(), "103720918407102567"); + const muxedAccount = new MuxedAccount(account, "10000"); + return new TransactionBuilder(muxedAccount, { + fee: BASE_FEE, + networkPassphrase: Networks.PUBLIC, + memo: Memo.text("hello world"), + timebounds: { + minTime: 0, + maxTime: 1670818332, // 2022-12-12T04:12:12+00:00 + }, + }) + .addOperation( + Operation.bumpSequence({ + bumpTo: "1232134324234", + source: kp0.publicKey(), + }) + ) + .build(); +} \ No newline at end of file diff --git a/tests_common_js/tsconfig.json b/tests_common_js/tsconfig.json new file mode 100644 index 00000000..21d52307 --- /dev/null +++ b/tests_common_js/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2015", + "declaration": true, + "outDir": "./dist" + }, + "include": [ + "src/**/*" + ] + } \ No newline at end of file diff --git a/tests_generate_binary/index.js b/tests_generate_binary/index.js new file mode 100644 index 00000000..e4b9fecf --- /dev/null +++ b/tests_generate_binary/index.js @@ -0,0 +1,47 @@ +const path = require("path"); +const fs = require("fs"); +const testCasesFunction = require('tests-common') + +function getTestCases() { + const casesFunction = Object.keys(testCasesFunction); + const cases = [] + for (const rawCase of casesFunction) { + cases.push({ + caseName: rawCase, + txFunction: testCasesFunction[rawCase] + }); + } + return cases; +} + +function main() { + const projectDir = path.dirname(path.dirname(__filename)) + const args = process.argv.slice(2); + const type = args[0]; + console.log(`type: ${type}`); + switch (type) { + case "unit": + dir = path.join(projectDir, "tests_unit", "testcases") + break + case "fuzz": + dir = path.join(projectDir, "fuzz", "testcases") + break + default: + throw new Error("Unknown type: " + type) + } + console.log("Generating test cases..."); + for (const testCase of getTestCases()) { + const outputPath = path.join(dir, `${testCase.caseName}.raw`) + const buf = testCase.txFunction().signatureBase() + console.log(outputPath) + fs.writeFile(outputPath, buf, (err) => { + if (err) { + console.log(`Failed to write to ${testCase.caseName}`) + console.log(err) + process.exit(1) + } + }); + } + console.log("Finished.") +} +main() \ No newline at end of file diff --git a/tests_generate_binary/package-lock.json b/tests_generate_binary/package-lock.json new file mode 100644 index 00000000..40295593 --- /dev/null +++ b/tests_generate_binary/package-lock.json @@ -0,0 +1,43 @@ +{ + "name": "tests_generate_binary", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "tests_generate_binary", + "version": "1.0.0", + "license": "Apache-2.0", + "devDependencies": { + "tests-common": "file:../tests_common_js" + } + }, + "../tests_common_js": { + "name": "tests-common", + "version": "1.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "stellar-base": "^8.1.0" + }, + "devDependencies": { + "@types/node": "^17.0.29", + "typescript": "^4.6.3" + } + }, + "node_modules/tests-common": { + "resolved": "../tests_common_js", + "link": true + } + }, + "dependencies": { + "tests-common": { + "version": "file:../tests_common_js", + "requires": { + "@types/node": "^17.0.29", + "stellar-base": "^8.1.0", + "typescript": "^4.6.3" + } + } + } +} diff --git a/tests_generate_binary/package.json b/tests_generate_binary/package.json new file mode 100644 index 00000000..625a9556 --- /dev/null +++ b/tests_generate_binary/package.json @@ -0,0 +1,22 @@ +{ + "name": "tests_generate_binary", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "generate": "node index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/LedgerHQ/app-stellar.git" + }, + "author": "overcat", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/LedgerHQ/app-stellar/issues" + }, + "homepage": "https://github.com/LedgerHQ/app-stellar#readme", + "devDependencies": { + "tests-common": "file:../tests_common_js" + } +} \ No newline at end of file diff --git a/tests_unit/CMakeLists.txt b/tests_unit/CMakeLists.txt new file mode 100644 index 00000000..94d85f5c --- /dev/null +++ b/tests_unit/CMakeLists.txt @@ -0,0 +1,65 @@ +cmake_minimum_required(VERSION 3.10) + +if (${CMAKE_VERSION} VERSION_LESS 3.10) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) +endif () + +# project information +project(tests_unit + VERSION 0.1 + DESCRIPTION "Unit tests for Ledger Nano application" + LANGUAGES C) + + +# guard against bad build-type strings +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Debug") +endif () + +include(CTest) +ENABLE_TESTING() + +# specify C standard +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED True) +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -pedantic -g -O0 --coverage") + +set(GCC_COVERAGE_LINK_FLAGS "--coverage -lgcov") +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}") + +# guard against in-source builds +if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt. ") +endif () + +add_compile_definitions(TEST) +add_definitions("-DIO_SEPROXYHAL_BUFFER_SIZE_B=128") # cmake -DIO_SEPROXYHAL_BUFFER_SIZE_B=128 +add_definitions("-DTARGET_NANOS=1") + +include_directories(../src) +include_directories(mock_includes) + +add_executable(test_utils test_utils.c) +add_executable(test_tx_parser test_tx_parser.c) +add_executable(test_tx_formatter test_tx_formatter.c) +add_executable(test_swap test_swap.c) + +file(GLOB src_common "../src/common/*.c") + +add_library(common STATIC ${src_common}) +add_library(utils STATIC ../src/utils.c) +add_library(globals STATIC ../src/globals.c) +add_library(tx_parser STATIC ../src/transaction/transaction_parser.c) +add_library(tx_formatter STATIC ../src/transaction/transaction_formatter.c) +add_library(swap STATIC ../src/swap/swap_lib_calls.c) + +target_link_libraries(test_utils PUBLIC cmocka gcov utils common bsd) +target_link_libraries(test_tx_parser PUBLIC cmocka gcov tx_parser utils common bsd) +target_link_libraries(test_tx_formatter PUBLIC cmocka gcov tx_parser tx_formatter utils common globals bsd) +target_link_libraries(test_swap PUBLIC cmocka gcov swap tx_formatter tx_parser utils common bsd) + +add_test(test_utils test_utils) +add_test(test_tx_parser test_tx_parser) +add_test(test_tx_formatter test_tx_formatter) +add_test(test_swap test_swap) \ No newline at end of file diff --git a/tests_unit/README.md b/tests_unit/README.md new file mode 100644 index 00000000..499f952c --- /dev/null +++ b/tests_unit/README.md @@ -0,0 +1,36 @@ +# Unit tests + +## Prerequisite + +Be sure to have installed: + +- CMake >= 3.10 +- CMocka >= 1.1.5 + +and for code coverage generation: + +- lcov >= 1.14 + +## Overview + +In `tests_unit` folder, compile with + +``` +cmake -Bbuild -H. && make -C build +``` + +and run tests with + +``` +CTEST_OUTPUT_ON_FAILURE=1 make -C build test +``` + +## Generate code coverage + +Just execute in `tests_unit` folder + +``` +./gen_coverage.sh +``` + +it will output `coverage.total` and `coverage/` folder with HTML details (in `coverage/index.html`). diff --git a/tests_unit/gen_coverage.sh b/tests_unit/gen_coverage.sh new file mode 100644 index 00000000..47055349 --- /dev/null +++ b/tests_unit/gen_coverage.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +set -x +set -e + +BUILD_DIRECTORY=$(realpath build/) + +lcov --directory . -b "${BUILD_DIRECTORY}" --capture --initial -o coverage.base && +lcov --rc lcov_branch_coverage=1 --directory . -b "${BUILD_DIRECTORY}" --capture -o coverage.capture && +lcov --directory . -b "${BUILD_DIRECTORY}" --add-tracefile coverage.base --add-tracefile coverage.capture -o coverage.info && +lcov --directory . -b "${BUILD_DIRECTORY}" --remove coverage.info '*/tests_unit/*' -o coverage.info && +echo "Generated 'coverage.info'." && +genhtml coverage.info -o coverage + +rm -f coverage.base coverage.capture diff --git a/tests_unit/mock_includes/bolos_target.h b/tests_unit/mock_includes/bolos_target.h new file mode 100644 index 00000000..15cb95b3 --- /dev/null +++ b/tests_unit/mock_includes/bolos_target.h @@ -0,0 +1,3 @@ +#pragma once + +#include diff --git a/tests/include/cx.h b/tests_unit/mock_includes/cx.h similarity index 100% rename from tests/include/cx.h rename to tests_unit/mock_includes/cx.h diff --git a/tests_unit/mock_includes/os.h b/tests_unit/mock_includes/os.h new file mode 100644 index 00000000..2cc490db --- /dev/null +++ b/tests_unit/mock_includes/os.h @@ -0,0 +1,8 @@ +#include + +#define PRINTF(...) +#define THROW(code) \ + do { \ + printf("error: %d", code); \ + } while (0) +#define PIC(code) code diff --git a/tests_unit/mock_includes/ux.h b/tests_unit/mock_includes/ux.h new file mode 100644 index 00000000..3a1b8878 --- /dev/null +++ b/tests_unit/mock_includes/ux.h @@ -0,0 +1,12 @@ +// Structure that defines the parameters to exchange with the BOLOS UX +// application +typedef struct bolos_ux_params_s { + // length of parameters in the u union to be copied during the syscall + unsigned int len; +} bolos_ux_params_t; + +struct ux_state_s { + unsigned char stack_count; // initialized @0 by the bolos ux initialize +}; + +typedef struct ux_state_s ux_state_t; diff --git a/tests_unit/test_swap.c b/tests_unit/test_swap.c new file mode 100644 index 00000000..d5bd3a54 --- /dev/null +++ b/tests_unit/test_swap.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +#include + +#include "cx.h" +#include "../src/utils.h" +#include "../src/types.h" +#include "../src/common/bip32.h" +#include "../src/swap/swap_lib_calls.h" + +void test_check_address(void **state) { + (void) state; + + check_address_parameters_t params = { + .address_to_check = "GCNCEJIAZ5D3APIF5XWAJ3JSSTHM4HPHE7GK3NAB6R6WWSZDB2A2BQ5B", + .address_parameters = (uint8_t *) "\x03\x80\x00\x00\x2c\x80\x00\x00\x94\x80\x00\x00\x00", + .address_parameters_length = 13, /* XXX: never used */ + }; + + /* The public key is hardcoded. Indeed, get_public_key is not available from tests because of + * exceptions and cryptographic calls. */ + cx_ecfp_public_key_t public_key = { + .curve = CX_CURVE_Ed25519, + .W_len = 32, + .W = "\x9a\x22\x25\x00\xcf\x47\xb0\x3d\x05\xed\xec\x04\xed\x32\x94\xce\xce\x1d\xe7\x27\xcc" + "\xad\xb4\x01\xf4\x7d\x6b\x4b\x23\x0e\x81\xa0", + }; + + uint32_t bip32_path_parsed[MAX_BIP32_PATH]; + uint8_t *bip32_path_ptr = params.address_parameters; + uint8_t bip32_path_length = *(bip32_path_ptr++); + assert_int_equal(bip32_path_length, 3); + assert_true(bip32_path_read(bip32_path_ptr, + params.address_parameters_length - 1, + bip32_path_parsed, + bip32_path_length)); + + char address[57]; + assert_true(encode_ed25519_public_key(public_key.W, address, sizeof(address))); + + assert_string_equal(address, params.address_to_check); +} + +void test_get_printable_amount(void **state) { + (void) state; + + get_printable_amount_parameters_t params = { + .amount = (uint8_t *) "\x00\x04\xd2", + .amount_length = 3, + }; + + uint64_t amount; + asset_t asset = {.type = ASSET_TYPE_NATIVE}; + assert_true(swap_str_to_u64(params.amount, params.amount_length, &amount)); + assert_int_equal(amount, 1234); + assert_true(print_amount(amount, + &asset, + NETWORK_TYPE_PUBLIC, + params.printable_amount, + sizeof(params.printable_amount))); + assert_string_equal(params.printable_amount, "0.0001234 XLM"); +} + +int main() { + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_check_address), + cmocka_unit_test(test_get_printable_amount), + }; + return cmocka_run_group_tests(tests, NULL, NULL); +} diff --git a/tests_unit/test_tx_formatter.c b/tests_unit/test_tx_formatter.c new file mode 100644 index 00000000..9a55da14 --- /dev/null +++ b/tests_unit/test_tx_formatter.c @@ -0,0 +1,209 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "transaction/transaction_parser.h" +#include "transaction/transaction_formatter.h" + +static const char *testcases[] = { + "../testcases/opCreateAccount.raw", + "../testcases/opPaymentAssetNative.raw", + "../testcases/opPaymentAssetAlphanum4.raw", + "../testcases/opPaymentAssetAlphanum12.raw", + "../testcases/opPaymentWithMuxedDestination.raw", + "../testcases/opPathPaymentStrictReceive.raw", + "../testcases/opPathPaymentStrictReceiveWithEmptyPath.raw", + "../testcases/opPathPaymentStrictReceiveWithMuxedDestination.raw", + "../testcases/opManageSellOfferCreate.raw", + "../testcases/opManageSellOfferUpdate.raw", + "../testcases/opManageSellOfferDelete.raw", + "../testcases/opCreatePassiveSellOffer.raw", + "../testcases/opSetOptions.raw", + "../testcases/opSetOptionsWithEmptyBody.raw", + "../testcases/opSetOptionsAddPublicKeySigner.raw", + "../testcases/opSetOptionsAddHashXSigner.raw", + "../testcases/opSetOptionsAddPreAuthTxSigner.raw", + "../testcases/opChangeTrustAddTrustLine.raw", + "../testcases/opChangeTrustRemoveTrustLine.raw", + "../testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.raw", + "../testcases/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.raw", + "../testcases/opAllowTrustDeauthorize.raw", + "../testcases/opAllowTrustAuthorize.raw", + "../testcases/opAllowTrustAuthorizeToMaintainLiabilities.raw", + "../testcases/opAccountMerge.raw", + "../testcases/opAccountMergeWithMuxedDestination.raw", + "../testcases/opInflation.raw", + "../testcases/opManageDataAdd.raw", + "../testcases/opManageDataAddWithUnprintableData.raw", + "../testcases/opManageDataRemove.raw", + "../testcases/opBumpSequence.raw", + "../testcases/opManageBuyOfferCreate.raw", + "../testcases/opManageBuyOfferUpdate.raw", + "../testcases/opManageBuyOfferDelete.raw", + "../testcases/opPathPaymentStrictSend.raw", + "../testcases/opPathPaymentStrictSendWithEmptyPath.raw", + "../testcases/opPathPaymentStrictSendWithMuxedDestination.raw", + "../testcases/opCreateClaimableBalance.raw", + "../testcases/opClaimClaimableBalance.raw", + "../testcases/opBeginSponsoringFutureReserves.raw", + "../testcases/opEndSponsoringFutureReserves.raw", + "../testcases/opRevokeSponsorshipAccount.raw", + "../testcases/opRevokeSponsorshipTrustLineWithAsset.raw", + "../testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.raw", + "../testcases/opRevokeSponsorshipOffer.raw", + "../testcases/opRevokeSponsorshipData.raw", + "../testcases/opRevokeSponsorshipClaimableBalance.raw", + "../testcases/opRevokeSponsorshipLiquidityPool.raw", + "../testcases/opRevokeSponsorshipEd25519PublicKeySigner.raw", + "../testcases/opRevokeSponsorshipHashXSigner.raw", + "../testcases/opRevokeSponsorshipPreAuthTxSigner.raw", + "../testcases/opClawback.raw", + "../testcases/opClawbackWithMuxedFrom.raw", + "../testcases/opClawbackClaimableBalance.raw", + "../testcases/opSetTrustLineFlagsUnauthorized.raw", + "../testcases/opSetTrustLineFlagsAuthorized.raw", + "../testcases/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.raw", + "../testcases/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.raw", + "../testcases/opLiquidityPoolDeposit.raw", + "../testcases/opLiquidityPoolWithdraw.raw", + "../testcases/opWithEmptySource.raw", + "../testcases/opWithMuxedSource.raw", + "../testcases/txMemoNone.raw", + "../testcases/txMemoId.raw", + "../testcases/txMemoText.raw", + "../testcases/txMemoTextUnprintable.raw", + "../testcases/txMemoHash.raw", + "../testcases/txMemoReturnHash.raw", + "../testcases/txCondWithAllItems.raw", + "../testcases/txCondIsNone.raw", + "../testcases/txCondTimeBounds.raw", + "../testcases/txCondTimeBoundsMaxIsZero.raw", + "../testcases/txCondTimeBoundsMinIsZero.raw", + "../testcases/txCondTimeBoundsAreZero.raw", + "../testcases/txCondTimeBoundsIsNone.raw", + "../testcases/txCondLedgerBounds.raw", + "../testcases/txCondLedgerBoundsMaxIsZero.raw", + "../testcases/txCondLedgerBoundsMinIsZero.raw", + "../testcases/txCondLedgerBoundsAreZero.raw", + "../testcases/txCondMinAccountSequence.raw", + "../testcases/txCondMinAccountSequenceAge.raw", + "../testcases/txCondMinAccountSequenceLedgerGap.raw", + "../testcases/txCondExtraSignersWithOneSigner.raw", + "../testcases/txCondExtraSignersWithTwoSigners.raw", + "../testcases/txMultiOperations.raw", + "../testcases/txCustomBaseFee.raw", + "../testcases/txWithMuxedSource.raw", + "../testcases/txNetworkPublic.raw", + "../testcases/txNetworkTestnet.raw", + "../testcases/txNetworkCustom.raw", + "../testcases/feeBumpTx.raw", + "../testcases/feeBumpTxWithMuxedFeeSource.raw", + "../testcases/txSourceOmitSourceEqualSigner.raw", + "../testcases/txSourceOmitSourceNotEqualSigner.raw", + "../testcases/txSourceOmitMuxedSourceEqualSigner.raw", + "../testcases/feeBumpTxOmitFeeSourceEqualSigner.raw", + "../testcases/feeBumpTxOmitFeeSourceNotEqualSigner.raw", + "../testcases/feeBumpTxOmitMuxedFeeSourceEqualSigner.raw", + "../testcases/opSourceOmitTxSourceEqualOpSourceEqualSigner.raw", + "../testcases/opSourceOmitTxSourceEqualOpSourceNotEqualSigner.raw", + "../testcases/opSourceOmitOpSourceEqualSignerNotEqualTxSource.raw", + "../testcases/opSourceOmitTxSourceEqualSignerNotEqualOpSource.raw", + "../testcases/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.raw", + "../testcases/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.raw", + "../testcases/opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner.raw", +}; + +static void load_transaction_data(const char *filename, tx_ctx_t *tx_ctx) { + FILE *f = fopen(filename, "rb"); + assert_non_null(f); + + tx_ctx->raw_size = fread(tx_ctx->raw, 1, RAW_TX_MAX_SIZE, f); + assert_int_not_equal(tx_ctx->raw_size, 0); + fclose(f); +} + +static void get_result_filename(const char *filename, char *path, size_t size) { + strncpy(path, filename, size); + + char *ext = strstr(path, ".raw"); + assert_non_null(ext); + memcpy(ext, ".txt", 4); +} + +static void check_transaction_results(const char *filename) { + char path[1024]; + char line[4096]; + uint8_t op_cnt = G_context.tx_info.tx_details.operations_count; + G_ui_current_data_index = 0; + get_result_filename(filename, path, sizeof(path)); + + FILE *fp = fopen(path, "r"); + assert_non_null(fp); + + set_state_data(true); + + while ((op_cnt != 0 && G_ui_current_data_index < op_cnt) || + formatter_stack[formatter_index] != NULL) { + assert_non_null(fgets(line, sizeof(line), fp)); + + char *expected_title = line; + char *expected_value = strstr(line, "; "); + assert_non_null(expected_value); + + *expected_value = '\x00'; + assert_string_equal(expected_title, G_ui_detail_caption); + + expected_value += 2; + char *p = strchr(expected_value, '\n'); + if (p != NULL) { + *p = '\x00'; + } + assert_string_equal(expected_title, G_ui_detail_caption); + assert_string_equal(expected_value, G_ui_detail_value); + + formatter_index++; + + if (formatter_stack[formatter_index] != NULL) { + set_state_data(true); + } + } + assert_int_equal(fgets(line, sizeof(line), fp), 0); + assert_int_equal(feof(fp), 1); + fclose(fp); +} + +static void test_tx(const char *filename) { + memset(&G_context.tx_info, 0, sizeof(G_context.tx_info)); + + load_transaction_data(filename, &G_context.tx_info); + + // GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 + uint8_t public_key[] = {0xe9, 0x33, 0x88, 0xbb, 0xfd, 0x2f, 0xbd, 0x11, 0x80, 0x6d, 0xd0, + 0xbd, 0x59, 0xce, 0xa9, 0x7, 0x9e, 0x7c, 0xc7, 0xc, 0xe7, 0xb1, + 0xe1, 0x54, 0xf1, 0x14, 0xcd, 0xfe, 0x4e, 0x46, 0x6e, 0xcd}; + assert_true( + parse_tx_xdr(G_context.tx_info.raw, G_context.tx_info.raw_size, &G_context.tx_info)); + memcpy(G_context.raw_public_key, public_key, sizeof(public_key)); + + check_transaction_results(filename); +} + +void test_transactions(void **state) { + (void) state; + + for (int i = 0; i < sizeof(testcases) / sizeof(testcases[0]); i++) { + test_tx(testcases[i]); + } +} + +int main() { + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_transactions), + }; + return cmocka_run_group_tests(tests, NULL, NULL); +} diff --git a/tests_unit/test_tx_parser.c b/tests_unit/test_tx_parser.c new file mode 100644 index 00000000..8c15b12d --- /dev/null +++ b/tests_unit/test_tx_parser.c @@ -0,0 +1,140 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "transaction/transaction_parser.h" + +static const char *testcases[] = { + "../testcases/opCreateAccount.raw", + "../testcases/opPaymentAssetNative.raw", + "../testcases/opPaymentAssetAlphanum4.raw", + "../testcases/opPaymentAssetAlphanum12.raw", + "../testcases/opPaymentWithMuxedDestination.raw", + "../testcases/opPathPaymentStrictReceive.raw", + "../testcases/opPathPaymentStrictReceiveWithEmptyPath.raw", + "../testcases/opPathPaymentStrictReceiveWithMuxedDestination.raw", + "../testcases/opManageSellOfferCreate.raw", + "../testcases/opManageSellOfferUpdate.raw", + "../testcases/opManageSellOfferDelete.raw", + "../testcases/opCreatePassiveSellOffer.raw", + "../testcases/opSetOptions.raw", + "../testcases/opSetOptionsWithEmptyBody.raw", + "../testcases/opSetOptionsAddPublicKeySigner.raw", + "../testcases/opSetOptionsAddHashXSigner.raw", + "../testcases/opSetOptionsAddPreAuthTxSigner.raw", + "../testcases/opChangeTrustAddTrustLine.raw", + "../testcases/opChangeTrustRemoveTrustLine.raw", + "../testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.raw", + "../testcases/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.raw", + "../testcases/opAllowTrustDeauthorize.raw", + "../testcases/opAllowTrustAuthorize.raw", + "../testcases/opAllowTrustAuthorizeToMaintainLiabilities.raw", + "../testcases/opAccountMerge.raw", + "../testcases/opAccountMergeWithMuxedDestination.raw", + "../testcases/opInflation.raw", + "../testcases/opManageDataAdd.raw", + "../testcases/opManageDataAddWithUnprintableData.raw", + "../testcases/opManageDataRemove.raw", + "../testcases/opBumpSequence.raw", + "../testcases/opManageBuyOfferCreate.raw", + "../testcases/opManageBuyOfferUpdate.raw", + "../testcases/opManageBuyOfferDelete.raw", + "../testcases/opPathPaymentStrictSend.raw", + "../testcases/opPathPaymentStrictSendWithEmptyPath.raw", + "../testcases/opPathPaymentStrictSendWithMuxedDestination.raw", + "../testcases/opCreateClaimableBalance.raw", + "../testcases/opClaimClaimableBalance.raw", + "../testcases/opBeginSponsoringFutureReserves.raw", + "../testcases/opEndSponsoringFutureReserves.raw", + "../testcases/opRevokeSponsorshipAccount.raw", + "../testcases/opRevokeSponsorshipTrustLineWithAsset.raw", + "../testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.raw", + "../testcases/opRevokeSponsorshipOffer.raw", + "../testcases/opRevokeSponsorshipData.raw", + "../testcases/opRevokeSponsorshipClaimableBalance.raw", + "../testcases/opRevokeSponsorshipLiquidityPool.raw", + "../testcases/opRevokeSponsorshipEd25519PublicKeySigner.raw", + "../testcases/opRevokeSponsorshipHashXSigner.raw", + "../testcases/opRevokeSponsorshipPreAuthTxSigner.raw", + "../testcases/opClawback.raw", + "../testcases/opClawbackWithMuxedFrom.raw", + "../testcases/opClawbackClaimableBalance.raw", + "../testcases/opSetTrustLineFlagsUnauthorized.raw", + "../testcases/opSetTrustLineFlagsAuthorized.raw", + "../testcases/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.raw", + "../testcases/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.raw", + "../testcases/opLiquidityPoolDeposit.raw", + "../testcases/opLiquidityPoolWithdraw.raw", + "../testcases/opWithEmptySource.raw", + "../testcases/opWithMuxedSource.raw", + "../testcases/txMemoNone.raw", + "../testcases/txMemoId.raw", + "../testcases/txMemoText.raw", + "../testcases/txMemoTextUnprintable.raw", + "../testcases/txMemoHash.raw", + "../testcases/txMemoReturnHash.raw", + "../testcases/txCondWithAllItems.raw", + "../testcases/txCondIsNone.raw", + "../testcases/txCondTimeBounds.raw", + "../testcases/txCondTimeBoundsMaxIsZero.raw", + "../testcases/txCondTimeBoundsMinIsZero.raw", + "../testcases/txCondTimeBoundsAreZero.raw", + "../testcases/txCondTimeBoundsIsNone.raw", + "../testcases/txCondLedgerBounds.raw", + "../testcases/txCondLedgerBoundsMaxIsZero.raw", + "../testcases/txCondLedgerBoundsMinIsZero.raw", + "../testcases/txCondLedgerBoundsAreZero.raw", + "../testcases/txCondMinAccountSequence.raw", + "../testcases/txCondMinAccountSequenceAge.raw", + "../testcases/txCondMinAccountSequenceLedgerGap.raw", + "../testcases/txCondExtraSignersWithOneSigner.raw", + "../testcases/txCondExtraSignersWithTwoSigners.raw", + "../testcases/txMultiOperations.raw", + "../testcases/txCustomBaseFee.raw", + "../testcases/txWithMuxedSource.raw", + "../testcases/txNetworkPublic.raw", + "../testcases/txNetworkTestnet.raw", + "../testcases/txNetworkCustom.raw", + "../testcases/feeBumpTx.raw", + "../testcases/feeBumpTxWithMuxedFeeSource.raw", + "../testcases/txSourceOmitSourceEqualSigner.raw", + "../testcases/txSourceOmitSourceNotEqualSigner.raw", + "../testcases/txSourceOmitMuxedSourceEqualSigner.raw", + "../testcases/feeBumpTxOmitFeeSourceEqualSigner.raw", + "../testcases/feeBumpTxOmitFeeSourceNotEqualSigner.raw", + "../testcases/feeBumpTxOmitMuxedFeeSourceEqualSigner.raw", + "../testcases/opSourceOmitTxSourceEqualOpSourceEqualSigner.raw", + "../testcases/opSourceOmitTxSourceEqualOpSourceNotEqualSigner.raw", + "../testcases/opSourceOmitOpSourceEqualSignerNotEqualTxSource.raw", + "../testcases/opSourceOmitTxSourceEqualSignerNotEqualOpSource.raw", + "../testcases/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.raw", + "../testcases/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.raw", + "../testcases/opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner.raw", +}; + +static void parse_tx(const char *filename) { + FILE *f = fopen(filename, "rb"); + assert_non_null(f); + tx_ctx_t tx_info; + memset(&tx_info, 0, sizeof(tx_ctx_t)); + tx_info.raw_size = fread(tx_info.raw, 1, RAW_TX_MAX_SIZE, f); + if (!parse_tx_xdr(tx_info.raw, tx_info.raw_size, &tx_info)) { + fail_msg("parse %s failed!", filename); + } +} + +void test_parse() { + for (int i = 0; i < sizeof(testcases) / sizeof(testcases[0]); i++) { + parse_tx(testcases[i]); + } +} + +int main() { + const struct CMUnitTest tests[] = {cmocka_unit_test(test_parse)}; + return cmocka_run_group_tests(tests, NULL, NULL); +} diff --git a/tests_unit/test_utils.c b/tests_unit/test_utils.c new file mode 100644 index 00000000..b690ca47 --- /dev/null +++ b/tests_unit/test_utils.c @@ -0,0 +1,384 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "common/base58.h" +#include "utils.h" +#include "types.h" + +static void test_encode_ed25519_public_key() { + uint8_t raw_key[] = {0xe9, 0x33, 0x88, 0xbb, 0xfd, 0x2f, 0xbd, 0x11, 0x80, 0x6d, 0xd0, + 0xbd, 0x59, 0xce, 0xa9, 0x7, 0x9e, 0x7c, 0xc7, 0xc, 0xe7, 0xb1, + 0xe1, 0x54, 0xf1, 0x14, 0xcd, 0xfe, 0x4e, 0x46, 0x6e, 0xcd}; + char *encoded_key = "GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7"; + char out[ENCODED_ED25519_PUBLIC_KEY_LENGTH]; + size_t out_len = sizeof(out); + assert_true(encode_ed25519_public_key(raw_key, out, out_len)); + assert_string_equal(out, encoded_key); +} + +static void test_encode_hash_x_key() { + uint8_t raw_key[] = {0xe9, 0x33, 0x88, 0xbb, 0xfd, 0x2f, 0xbd, 0x11, 0x80, 0x6d, 0xd0, + 0xbd, 0x59, 0xce, 0xa9, 0x7, 0x9e, 0x7c, 0xc7, 0xc, 0xe7, 0xb1, + 0xe1, 0x54, 0xf1, 0x14, 0xcd, 0xfe, 0x4e, 0x46, 0x6e, 0xcd}; + char *encoded_key = "XDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM242X"; + char out[ENCODED_ED25519_PUBLIC_KEY_LENGTH]; + size_t out_len = sizeof(out); + assert_true(encode_hash_x_key(raw_key, out, out_len)); + assert_string_equal(out, encoded_key); +} + +static void test_encode_pre_auth_x_key() { + uint8_t raw_key[] = {0xe9, 0x33, 0x88, 0xbb, 0xfd, 0x2f, 0xbd, 0x11, 0x80, 0x6d, 0xd0, + 0xbd, 0x59, 0xce, 0xa9, 0x7, 0x9e, 0x7c, 0xc7, 0xc, 0xe7, 0xb1, + 0xe1, 0x54, 0xf1, 0x14, 0xcd, 0xfe, 0x4e, 0x46, 0x6e, 0xcd}; + char *encoded_key = "TDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM3Y7O"; + char out[ENCODED_ED25519_PUBLIC_KEY_LENGTH]; + size_t out_len = sizeof(out); + assert_true(encode_pre_auth_x_key(raw_key, out, out_len)); + assert_string_equal(out, encoded_key); +} + +static void test_encode_muxed_account() { + // https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md#valid-test-cases + char out[89]; + // GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ + const uint8_t ed25519[] = { + 0x3f, 0x0c, 0x34, 0xbf, 0x93, 0xad, 0x0d, 0x99, 0x71, 0xd0, 0x4c, + 0xcc, 0x90, 0xf7, 0x05, 0x51, 0x1c, 0x83, 0x8a, 0xad, 0x97, 0x34, + 0xa4, 0xa2, 0xfb, 0x0d, 0x7a, 0x03, 0xfc, 0x7f, 0xe8, 0x9a, + }; + // Valid non-multiplexed account + muxed_account_t account1 = {.type = KEY_TYPE_ED25519, .ed25519 = ed25519}; + assert_true(encode_muxed_account(&account1, out, sizeof(out))); + assert_string_equal(out, "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ"); + + // Valid multiplexed account + muxed_account_t account2 = {.type = KEY_TYPE_MUXED_ED25519, + .med25519 = {.id = 0, .ed25519 = ed25519}}; + assert_true(encode_muxed_account(&account2, out, sizeof(out))); + assert_string_equal(out, + "MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUQ"); + + // Valid multiplexed account in which unsigned id exceeds maximum signed 64-bit integer + muxed_account_t account3 = {.type = KEY_TYPE_MUXED_ED25519, + .med25519 = {.id = 9223372036854775808, .ed25519 = ed25519}}; + assert_true(encode_muxed_account(&account3, out, sizeof(out))); + assert_string_equal(out, + "MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK"); +} + +void test_print_binary() { + const uint8_t binary[32] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; + char hex[2 * sizeof(binary) + 1]; + + assert_true(print_binary(binary, sizeof(binary), hex, sizeof(hex), 0, 0)); + assert_string_equal(hex, "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"); +} + +void test_print_claimable_balance_id() { + const uint8_t v0[] = {0xc9, 0xc4, 0xa9, 0xe3, 0xa4, 0x68, 0x91, 0xa3, 0x60, 0x15, 0xc3, + 0x17, 0xb3, 0xdf, 0x17, 0xb4, 0x2b, 0xf, 0x2a, 0xd8, 0xa2, 0xee, + 0xa6, 0xc9, 0x34, 0xc9, 0xf7, 0xc8, 0x42, 0x5d, 0xa7, 0xad}; + claimable_balance_id id = {.type = CLAIMABLE_BALANCE_ID_TYPE_V0, .v0 = v0}; + + char out[36 * 2 + 1]; + assert_true(print_claimable_balance_id(&id, out, sizeof(out), 0, 0)); + assert_string_equal(out, + "00000000c9c4a9e3a46891a36015c317b3df17b42b0f2ad8a2eea6c934c9f7c8425da7ad"); + assert_true(print_claimable_balance_id(&id, out, sizeof(out), 12, 12)); + assert_string_equal(out, "00000000c9c4..f7c8425da7ad"); +} + +void test_print_time() { + char out[20]; + assert_true(print_time(0, out, sizeof(out))); + assert_string_equal(out, "1970-01-01 00:00:00"); + assert_true(print_time(1648263853, out, sizeof(out))); + assert_string_equal(out, "2022-03-26 03:04:13"); + assert_true(print_time(2147483647, out, sizeof(out))); + assert_string_equal(out, "2038-01-19 03:14:07"); + assert_true(print_time(4294967295, out, sizeof(out))); + assert_string_equal(out, "2106-02-07 06:28:15"); + assert_true(print_time(253402300799, out, sizeof(out))); + assert_string_equal(out, "9999-12-31 23:59:59"); + assert_false(print_time(253402300800, out, sizeof(out))); + assert_false(print_time(18446744073709551615, out, sizeof(out))); +} + +void test_print_uint() { + char out[24]; + + assert_true(print_uint(0, out, sizeof(out))); + assert_string_equal(out, "0"); + + assert_true(print_uint(1230, out, sizeof(out))); + assert_string_equal(out, "1230"); + + assert_true(print_uint((uint64_t) 18446744073709551615, out, sizeof(out))); + assert_string_equal(out, "18446744073709551615"); + + // output buffer too small + assert_false(print_uint(1230, out, 4)); + + // output buffer just big enough to store output data + assert_true(print_uint(9999, out, 5)); + assert_string_equal(out, "9999"); + + // output buffer just big enough to store output data + assert_true(print_uint(9999, out, 5)); + assert_string_equal(out, "9999"); +} + +void test_print_int() { + char out[24]; + + assert_true(print_int((int64_t) 0, out, sizeof(out))); + assert_string_equal(out, "0"); + + assert_true(print_int((int64_t) 1230, out, sizeof(out))); + assert_string_equal(out, "1230"); + + assert_true(print_int((int64_t) -1230, out, sizeof(out))); + assert_string_equal(out, "-1230"); + + // test overflow, ignore the warngins + assert_true(print_int((int64_t) 9223372036854775807, out, sizeof(out))); + assert_string_equal(out, "9223372036854775807"); + + // test overflow, ignore the warngins + assert_true(print_int((int64_t) -9223372036854775808, out, sizeof(out))); + assert_string_equal(out, "-9223372036854775808"); + + // output buffer too small + assert_false(print_int((int64_t) -1230, out, 5)); + assert_false(print_int(1230, out, 4)); + + // output buffer just big enough to store output data + assert_true(print_int((int64_t) -9999, out, 6)); + assert_string_equal(out, "-9999"); + assert_true(print_int((int64_t) 9999, out, 5)); + assert_string_equal(out, "9999"); +} + +void test_print_asset() { + asset_t assert_native = {.type = ASSET_TYPE_NATIVE}; + char out[24]; + assert_true(print_asset(&assert_native, 0, out, sizeof(out))); + assert_string_equal(out, "XLM"); + // testnet asset + assert_true(print_asset(&assert_native, 1, out, sizeof(out))); + assert_string_equal(out, "XLM"); + // private network asset + assert_true(print_asset(&assert_native, 2, out, sizeof(out))); + assert_string_equal(out, "native"); + + const uint8_t ed25519[] = { + 0x3f, 0x0c, 0x34, 0xbf, 0x93, 0xad, 0x0d, 0x99, 0x71, 0xd0, 0x4c, + 0xcc, 0x90, 0xf7, 0x05, 0x51, 0x1c, 0x83, 0x8a, 0xad, 0x97, 0x34, + 0xa4, 0xa2, 0xfb, 0x0d, 0x7a, 0x03, 0xfc, 0x7f, 0xe8, 0x9a, + }; + asset_t assert_alphanum4 = {.type = ASSET_TYPE_CREDIT_ALPHANUM4, + .alpha_num4 = {.asset_code = "CAT", .issuer = ed25519}}; + assert_true(print_asset(&assert_alphanum4, 0, out, sizeof(out))); + assert_string_equal(out, "CAT@GA7..VSGZ"); + + asset_t assert_alphanum12 = {.type = ASSET_TYPE_CREDIT_ALPHANUM12, + .alpha_num12 = {.asset_code = "BANANANANANA", .issuer = ed25519}}; + assert_true(print_asset(&assert_alphanum12, 0, out, sizeof(out))); + assert_string_equal(out, "BANANANANANA@GA7..VSGZ"); +} + +void test_print_summary() { + char *data1 = "abcdefghijklmnopqrstuvwxyz"; + char out1[10]; + assert_true(print_summary(data1, out1, sizeof(out1), 3, 4)); + assert_string_equal(out1, "abc..wxyz"); + + char *data2 = "abcdef"; + char out2[11]; + assert_true(print_summary(data2, out2, sizeof(out2), 4, 4)); + assert_string_equal(out2, "abcdef"); + + char *data3 = "abcdefghijklmnopqrstuvwxyz"; + char out3[10]; + assert_false(print_summary(data3, out3, sizeof(out3), 4, 4)); +} + +void test_print_amount_asset_native(void **state) { + (void) state; + + char printed[28]; + const asset_t asset = {.type = ASSET_TYPE_NATIVE}; + assert_true(print_amount(1, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "0.0000001 XLM"); + assert_true(print_amount(10000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "1 XLM"); + assert_true(print_amount(1000000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "100 XLM"); + assert_true(print_amount(1001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "100.1 XLM"); + assert_true( + print_amount(10000000000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "1,000,000.0000001 XLM"); + assert_true(print_amount(100000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "10.0000001 XLM"); + assert_true( + print_amount(100000001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "10,000,000.1 XLM"); + assert_true( + print_amount(9222036854775807, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "922,203,685.4775807 XLM"); + assert_true( + print_amount(9223372036854775807, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "922,337,203,685.4775807 XLM"); +} + +void test_print_amount_asset_alphanum4(void **state) { + (void) state; + // GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN + uint8_t issuer[] = {0x3b, 0x99, 0x11, 0x38, 0xe, 0xfe, 0x98, 0x8b, 0xa0, 0xa8, 0x90, + 0xe, 0xb1, 0xcf, 0xe4, 0x4f, 0x36, 0x6f, 0x7d, 0xbe, 0x94, 0x6b, + 0xed, 0x7, 0x72, 0x40, 0xf7, 0xf6, 0x24, 0xdf, 0x15, 0xc5}; + char printed[39]; + const asset_t asset = {.type = ASSET_TYPE_CREDIT_ALPHANUM4, + .alpha_num4 = {.asset_code = "USDC", .issuer = issuer}}; + + assert_true(print_amount(1, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "0.0000001 USDC@GA5..KZVN"); + assert_true(print_amount(10000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "1 USDC@GA5..KZVN"); + assert_true(print_amount(1000000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "100 USDC@GA5..KZVN"); + assert_true(print_amount(1001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "100.1 USDC@GA5..KZVN"); + assert_true( + print_amount(10000000000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "1,000,000.0000001 USDC@GA5..KZVN"); + assert_true(print_amount(100000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "10.0000001 USDC@GA5..KZVN"); + assert_true( + print_amount(100000001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "10,000,000.1 USDC@GA5..KZVN"); + assert_true( + print_amount(9222036854775807, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "922,203,685.4775807 USDC@GA5..KZVN"); + assert_true( + print_amount(9223372036854775807, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "922,337,203,685.4775807 USDC@GA5..KZVN"); +} + +void test_print_amount_asset_alphanum12(void **state) { + (void) state; + // GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN + uint8_t issuer[] = {0x3b, 0x99, 0x11, 0x38, 0xe, 0xfe, 0x98, 0x8b, 0xa0, 0xa8, 0x90, + 0xe, 0xb1, 0xcf, 0xe4, 0x4f, 0x36, 0x6f, 0x7d, 0xbe, 0x94, 0x6b, + 0xed, 0x7, 0x72, 0x40, 0xf7, 0xf6, 0x24, 0xdf, 0x15, 0xc5}; + char printed[47]; + const asset_t asset = {.type = ASSET_TYPE_CREDIT_ALPHANUM12, + .alpha_num12 = {.asset_code = "BANANANANANA", .issuer = issuer}}; + + assert_true(print_amount(1, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "0.0000001 BANANANANANA@GA5..KZVN"); + assert_true(print_amount(10000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "1 BANANANANANA@GA5..KZVN"); + assert_true(print_amount(1000000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "100 BANANANANANA@GA5..KZVN"); + assert_true(print_amount(1001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "100.1 BANANANANANA@GA5..KZVN"); + assert_true( + print_amount(10000000000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "1,000,000.0000001 BANANANANANA@GA5..KZVN"); + assert_true(print_amount(100000001, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "10.0000001 BANANANANANA@GA5..KZVN"); + assert_true( + print_amount(100000001000000, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "10,000,000.1 BANANANANANA@GA5..KZVN"); + assert_true( + print_amount(9222036854775807, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "922,203,685.4775807 BANANANANANA@GA5..KZVN"); + assert_true( + print_amount(9223372036854775807, &asset, NETWORK_TYPE_PUBLIC, printed, sizeof(printed))); + assert_string_equal(printed, "922,337,203,685.4775807 BANANANANANA@GA5..KZVN"); +} + +void test_is_printable_binary(void **state) { + (void) state; + uint8_t data1[] = {0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e}; + assert_true(is_printable_binary(data1, sizeof(data1))); + + uint8_t data2[] = {0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, + 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, + 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, + 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e}; + assert_false(is_printable_binary(data2, sizeof(data2))); + + uint8_t data3[] = {0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, + 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f}; + assert_false(is_printable_binary(data3, sizeof(data3))); +} + +void test_print_account_flags(void **state) { + (void) state; + char out[89]; + memset(out, 0, sizeof(out)); + assert_true(print_account_flags(1, out, sizeof(out))); + assert_string_equal(out, "AUTH_REQUIRED"); + memset(out, 0, sizeof(out)); + assert_true(print_account_flags(2, out, sizeof(out))); + assert_string_equal(out, "AUTH_REVOCABLE"); + memset(out, 0, sizeof(out)); + assert_true(print_account_flags(4, out, sizeof(out))); + assert_string_equal(out, "AUTH_IMMUTABLE"); + memset(out, 0, sizeof(out)); + assert_true(print_account_flags(8, out, sizeof(out))); + assert_string_equal(out, "AUTH_CLAWBACK_ENABLED"); + memset(out, 0, sizeof(out)); + assert_true(print_account_flags(15, out, sizeof(out))); + assert_string_equal(out, + "AUTH_REQUIRED, AUTH_REVOCABLE, AUTH_IMMUTABLE, AUTH_CLAWBACK_ENABLED"); +} + +int main() { + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_encode_ed25519_public_key), + cmocka_unit_test(test_encode_hash_x_key), + cmocka_unit_test(test_encode_pre_auth_x_key), + cmocka_unit_test(test_encode_muxed_account), + cmocka_unit_test(test_print_binary), + cmocka_unit_test(test_print_claimable_balance_id), + cmocka_unit_test(test_print_time), + cmocka_unit_test(test_print_uint), + cmocka_unit_test(test_print_int), + cmocka_unit_test(test_print_asset), + cmocka_unit_test(test_print_summary), + cmocka_unit_test(test_print_amount_asset_native), + cmocka_unit_test(test_print_amount_asset_alphanum4), + cmocka_unit_test(test_print_amount_asset_alphanum12), + cmocka_unit_test(test_is_printable_binary), + cmocka_unit_test(test_print_account_flags), + }; + return cmocka_run_group_tests(tests, NULL, NULL); +} \ No newline at end of file diff --git a/tests_unit/testcases/feeBumpTx.txt b/tests_unit/testcases/feeBumpTx.txt new file mode 100644 index 00000000..4267388e --- /dev/null +++ b/tests_unit/testcases/feeBumpTx.txt @@ -0,0 +1,17 @@ +Fee Bump; Transaction Details +Fee Source; GDUTHC..XM2FN7 +Max Fee; 0.000225 XLM +InnerTx; Details +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Operation 1 of 2; +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Operation 2 of 2; +Send; 1 XLM +Destination; GCJBZJSKICFGD3FJMN5RBQIIXYUNVWOI7YAHQZQKK4UAWFGW6TRBRVX3 +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_unit/testcases/feeBumpTxOmitFeeSourceEqualSigner.txt b/tests_unit/testcases/feeBumpTxOmitFeeSourceEqualSigner.txt new file mode 100644 index 00000000..a2b320f2 --- /dev/null +++ b/tests_unit/testcases/feeBumpTxOmitFeeSourceEqualSigner.txt @@ -0,0 +1,12 @@ +Fee Bump; Transaction Details +Fee Source; GDUTHC..XM2FN7 +Max Fee; 0.00015 XLM +InnerTx; Details +Memo Text; hello world +Max Fee; 0.000005 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_unit/testcases/feeBumpTxOmitFeeSourceNotEqualSigner.txt b/tests_unit/testcases/feeBumpTxOmitFeeSourceNotEqualSigner.txt new file mode 100644 index 00000000..a2d672a4 --- /dev/null +++ b/tests_unit/testcases/feeBumpTxOmitFeeSourceNotEqualSigner.txt @@ -0,0 +1,12 @@ +Fee Bump; Transaction Details +Fee Source; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Max Fee; 0.00015 XLM +InnerTx; Details +Memo Text; hello world +Max Fee; 0.000005 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_unit/testcases/feeBumpTxOmitMuxedFeeSourceEqualSigner.txt b/tests_unit/testcases/feeBumpTxOmitMuxedFeeSourceEqualSigner.txt new file mode 100644 index 00000000..a82e9ef1 --- /dev/null +++ b/tests_unit/testcases/feeBumpTxOmitMuxedFeeSourceEqualSigner.txt @@ -0,0 +1,12 @@ +Fee Bump; Transaction Details +Fee Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG +Max Fee; 0.00015 XLM +InnerTx; Details +Memo Text; hello world +Max Fee; 0.000005 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_unit/testcases/feeBumpTxWithMuxedFeeSource.txt b/tests_unit/testcases/feeBumpTxWithMuxedFeeSource.txt new file mode 100644 index 00000000..6cc7b49f --- /dev/null +++ b/tests_unit/testcases/feeBumpTxWithMuxedFeeSource.txt @@ -0,0 +1,17 @@ +Fee Bump; Transaction Details +Fee Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG +Max Fee; 0.000225 XLM +InnerTx; Details +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Operation 1 of 2; +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Operation 2 of 2; +Send; 1 XLM +Destination; GCJBZJSKICFGD3FJMN5RBQIIXYUNVWOI7YAHQZQKK4UAWFGW6TRBRVX3 +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_unit/testcases/opAccountMerge.txt b/tests_unit/testcases/opAccountMerge.txt new file mode 100644 index 00000000..10f4402a --- /dev/null +++ b/tests_unit/testcases/opAccountMerge.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Account Merge +Merge Account; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opAccountMergeWithMuxedDestination.txt b/tests_unit/testcases/opAccountMergeWithMuxedDestination.txt new file mode 100644 index 00000000..af9256a6 --- /dev/null +++ b/tests_unit/testcases/opAccountMergeWithMuxedDestination.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Account Merge +Merge Account; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 +Destination; MDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFKAAAAAAAAABHCCLDW +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opAllowTrustAuthorize.txt b/tests_unit/testcases/opAllowTrustAuthorize.txt new file mode 100644 index 00000000..a85e7a7e --- /dev/null +++ b/tests_unit/testcases/opAllowTrustAuthorize.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Allow Trust +Trustor; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Asset Code; USD +Authorize Flag; AUTHORIZED +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opAllowTrustAuthorizeToMaintainLiabilities.txt b/tests_unit/testcases/opAllowTrustAuthorizeToMaintainLiabilities.txt new file mode 100644 index 00000000..83000e0f --- /dev/null +++ b/tests_unit/testcases/opAllowTrustAuthorizeToMaintainLiabilities.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Allow Trust +Trustor; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Asset Code; USD +Authorize Flag; AUTHORIZED_TO_MAINTAIN_LIABILITIES +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opAllowTrustDeauthorize.txt b/tests_unit/testcases/opAllowTrustDeauthorize.txt new file mode 100644 index 00000000..4f177d50 --- /dev/null +++ b/tests_unit/testcases/opAllowTrustDeauthorize.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Allow Trust +Trustor; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Asset Code; USD +Authorize Flag; UNAUTHORIZED +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opBeginSponsoringFutureReserves.txt b/tests_unit/testcases/opBeginSponsoringFutureReserves.txt new file mode 100644 index 00000000..97abeb7e --- /dev/null +++ b/tests_unit/testcases/opBeginSponsoringFutureReserves.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Begin Sponsoring Future Reserves +Sponsored ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opBumpSequence.txt b/tests_unit/testcases/opBumpSequence.txt new file mode 100644 index 00000000..52d27a36 --- /dev/null +++ b/tests_unit/testcases/opBumpSequence.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Bump Sequence +Bump To; 9223372036854775807 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opChangeTrustAddTrustLine.txt b/tests_unit/testcases/opChangeTrustAddTrustLine.txt new file mode 100644 index 00000000..fbbe9568 --- /dev/null +++ b/tests_unit/testcases/opChangeTrustAddTrustLine.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Change Trust; USDC@GA5..KZVN +Trust Limit; 922,337,203,680.9999999 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opChangeTrustRemoveTrustLine.txt b/tests_unit/testcases/opChangeTrustRemoveTrustLine.txt new file mode 100644 index 00000000..a8dda3c8 --- /dev/null +++ b/tests_unit/testcases/opChangeTrustRemoveTrustLine.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Remove Trust; USD@GA5..KZVN +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.txt b/tests_unit/testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.txt new file mode 100644 index 00000000..34ee1993 --- /dev/null +++ b/tests_unit/testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.txt @@ -0,0 +1,11 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Change Trust; Liquidity Pool Asset +Asset A; BTC@GAT..MTCH +Asset B; USDC@GA5..KZVN +Pool Fee Rate; 0.3% +Trust Limit; 922,337,203,680.9999999 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.txt b/tests_unit/testcases/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.txt new file mode 100644 index 00000000..8a68117e --- /dev/null +++ b/tests_unit/testcases/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Remove Trust; Liquidity Pool Asset +Asset A; BTC@GAT..MTCH +Asset B; USDC@GA5..KZVN +Pool Fee Rate; 0.3% +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opClaimClaimableBalance.txt b/tests_unit/testcases/opClaimClaimableBalance.txt new file mode 100644 index 00000000..2f6042cd --- /dev/null +++ b/tests_unit/testcases/opClaimClaimableBalance.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Claim Claimable Balance +Balance ID; 00000000da0d..49149b91f5be +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opClawback.txt b/tests_unit/testcases/opClawback.txt new file mode 100644 index 00000000..d33d3012 --- /dev/null +++ b/tests_unit/testcases/opClawback.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Clawback +Clawback Balance; 1,000.85 USDC@GA5..KZVN +From; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opClawbackClaimableBalance.txt b/tests_unit/testcases/opClawbackClaimableBalance.txt new file mode 100644 index 00000000..2aba6c52 --- /dev/null +++ b/tests_unit/testcases/opClawbackClaimableBalance.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Clawback Claimable Balance +Balance ID; 00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opClawbackWithMuxedFrom.txt b/tests_unit/testcases/opClawbackWithMuxedFrom.txt new file mode 100644 index 00000000..11ce3417 --- /dev/null +++ b/tests_unit/testcases/opClawbackWithMuxedFrom.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Clawback +Clawback Balance; 1,000.85 USDC@GA5..KZVN +From; MDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFKAAAAAAAAABHCCLDW +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opCreateAccount.txt b/tests_unit/testcases/opCreateAccount.txt new file mode 100644 index 00000000..33a6394f --- /dev/null +++ b/tests_unit/testcases/opCreateAccount.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Create Account +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Starting Balance; 100 XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opCreateClaimableBalance.txt b/tests_unit/testcases/opCreateClaimableBalance.txt new file mode 100644 index 00000000..122446a1 --- /dev/null +++ b/tests_unit/testcases/opCreateClaimableBalance.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Create Claimable Balance +Balance; 100 USDC@GA5..KZVN +WARNING; Currently does not support displaying claimant details +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opCreatePassiveSellOffer.txt b/tests_unit/testcases/opCreatePassiveSellOffer.txt new file mode 100644 index 00000000..02b9204b --- /dev/null +++ b/tests_unit/testcases/opCreatePassiveSellOffer.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Create Passive Sell Offer +Buy; XLM +Sell; 988,448,423.2134 BTC@GAT..MTCH +Price; 0.0001234 XLM/BTC +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opEndSponsoringFutureReserves.txt b/tests_unit/testcases/opEndSponsoringFutureReserves.txt new file mode 100644 index 00000000..cd9daa43 --- /dev/null +++ b/tests_unit/testcases/opEndSponsoringFutureReserves.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; End Sponsoring Future Reserves +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opInflation.txt b/tests_unit/testcases/opInflation.txt new file mode 100644 index 00000000..30fd3bf0 --- /dev/null +++ b/tests_unit/testcases/opInflation.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Inflation +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opLiquidityPoolDeposit.txt b/tests_unit/testcases/opLiquidityPoolDeposit.txt new file mode 100644 index 00000000..bbd60fd0 --- /dev/null +++ b/tests_unit/testcases/opLiquidityPoolDeposit.txt @@ -0,0 +1,12 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Liquidity Pool Deposit +Liquidity Pool ID; 3aab0ed6d0b6f570c5b32b0339cc5930be36c4ae2c07697b70f11f9387e3f831 +Max Amount A; 1,000,000 +Max Amount B; 0.2321 +Min Price; 14,324,232.23 +Max Price; 10,000,000 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opLiquidityPoolWithdraw.txt b/tests_unit/testcases/opLiquidityPoolWithdraw.txt new file mode 100644 index 00000000..86cfd414 --- /dev/null +++ b/tests_unit/testcases/opLiquidityPoolWithdraw.txt @@ -0,0 +1,11 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Liquidity Pool Withdraw +Liquidity Pool ID; 3aab0ed6d0b6f570c5b32b0339cc5930be36c4ae2c07697b70f11f9387e3f831 +Amount; 5,000 +Min Amount A; 10,000 +Min Amount B; 20,000 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageBuyOfferCreate.txt b/tests_unit/testcases/opManageBuyOfferCreate.txt new file mode 100644 index 00000000..ce1a0488 --- /dev/null +++ b/tests_unit/testcases/opManageBuyOfferCreate.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Create Offer; Type Active +Sell; BTC@GAT..MTCH +Buy; 988,448,111.2222 XLM +Price; 0.0001011 BTC/XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageBuyOfferDelete.txt b/tests_unit/testcases/opManageBuyOfferDelete.txt new file mode 100644 index 00000000..2eb8298b --- /dev/null +++ b/tests_unit/testcases/opManageBuyOfferDelete.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Remove Offer; 3523456 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageBuyOfferUpdate.txt b/tests_unit/testcases/opManageBuyOfferUpdate.txt new file mode 100644 index 00000000..8780e289 --- /dev/null +++ b/tests_unit/testcases/opManageBuyOfferUpdate.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Change Offer; 3523456 +Sell; BTC@GAT..MTCH +Buy; 988,448,111.2222 XLM +Price; 0.0001011 BTC/XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageDataAdd.txt b/tests_unit/testcases/opManageDataAdd.txt new file mode 100644 index 00000000..6dacaea8 --- /dev/null +++ b/tests_unit/testcases/opManageDataAdd.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Set Data; Ledger Stellar App abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda +Data Value; Hello Stellar! abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageDataAddWithUnprintableData.txt b/tests_unit/testcases/opManageDataAddWithUnprintableData.txt new file mode 100644 index 00000000..615df479 --- /dev/null +++ b/tests_unit/testcases/opManageDataAddWithUnprintableData.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Set Data; Ledger Stellar App abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda +Data Value (base64); 6L+Z5p..hleQ== +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageDataRemove.txt b/tests_unit/testcases/opManageDataRemove.txt new file mode 100644 index 00000000..39eeed46 --- /dev/null +++ b/tests_unit/testcases/opManageDataRemove.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Remove Data; Ledger Stellar App abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageSellOfferCreate.txt b/tests_unit/testcases/opManageSellOfferCreate.txt new file mode 100644 index 00000000..1d8759fe --- /dev/null +++ b/tests_unit/testcases/opManageSellOfferCreate.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Create Offer; Type Active +Buy; XLM +Sell; 988,448,423.2134 BTC@GAT..MTCH +Price; 0.0001234 XLM/BTC +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageSellOfferDelete.txt b/tests_unit/testcases/opManageSellOfferDelete.txt new file mode 100644 index 00000000..c1a7232e --- /dev/null +++ b/tests_unit/testcases/opManageSellOfferDelete.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Remove Offer; 7123456 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opManageSellOfferUpdate.txt b/tests_unit/testcases/opManageSellOfferUpdate.txt new file mode 100644 index 00000000..0c70ce91 --- /dev/null +++ b/tests_unit/testcases/opManageSellOfferUpdate.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Change Offer; 7123456 +Buy; XLM +Sell; 988,448,423.2134 BTC@GAT..MTCH +Price; 0.0001234 XLM/BTC +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPathPaymentStrictReceive.txt b/tests_unit/testcases/opPathPaymentStrictReceive.txt new file mode 100644 index 00000000..dc41b734 --- /dev/null +++ b/tests_unit/testcases/opPathPaymentStrictReceive.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send Max; 1 BTC@GAT..MTCH +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Receive; 123,456,789.334 XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPathPaymentStrictReceiveWithEmptyPath.txt b/tests_unit/testcases/opPathPaymentStrictReceiveWithEmptyPath.txt new file mode 100644 index 00000000..dc41b734 --- /dev/null +++ b/tests_unit/testcases/opPathPaymentStrictReceiveWithEmptyPath.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send Max; 1 BTC@GAT..MTCH +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Receive; 123,456,789.334 XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPathPaymentStrictReceiveWithMuxedDestination.txt b/tests_unit/testcases/opPathPaymentStrictReceiveWithMuxedDestination.txt new file mode 100644 index 00000000..71f82e98 --- /dev/null +++ b/tests_unit/testcases/opPathPaymentStrictReceiveWithMuxedDestination.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send Max; 1 BTC@GAT..MTCH +Destination; MDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFKAAAAAAAAABHCCLDW +Receive; 123,456,789.334 XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPathPaymentStrictSend.txt b/tests_unit/testcases/opPathPaymentStrictSend.txt new file mode 100644 index 00000000..e0f19af1 --- /dev/null +++ b/tests_unit/testcases/opPathPaymentStrictSend.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 0.985 BTC@GAT..MTCH +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Receive Min; 123,456,789.987 XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPathPaymentStrictSendWithEmptyPath.txt b/tests_unit/testcases/opPathPaymentStrictSendWithEmptyPath.txt new file mode 100644 index 00000000..e0f19af1 --- /dev/null +++ b/tests_unit/testcases/opPathPaymentStrictSendWithEmptyPath.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 0.985 BTC@GAT..MTCH +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Receive Min; 123,456,789.987 XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPathPaymentStrictSendWithMuxedDestination.txt b/tests_unit/testcases/opPathPaymentStrictSendWithMuxedDestination.txt new file mode 100644 index 00000000..6815747c --- /dev/null +++ b/tests_unit/testcases/opPathPaymentStrictSendWithMuxedDestination.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 0.985 BTC@GAT..MTCH +Destination; MDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFKAAAAAAAAABHCCLDW +Receive Min; 123,456,789.987 XLM +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPaymentAssetAlphanum12.txt b/tests_unit/testcases/opPaymentAssetAlphanum12.txt new file mode 100644 index 00000000..2d07e61e --- /dev/null +++ b/tests_unit/testcases/opPaymentAssetAlphanum12.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 922,337,203,685.4775807 BANANANANANA@GCD..HPJS +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPaymentAssetAlphanum4.txt b/tests_unit/testcases/opPaymentAssetAlphanum4.txt new file mode 100644 index 00000000..0c85d35a --- /dev/null +++ b/tests_unit/testcases/opPaymentAssetAlphanum4.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 922,337,203,685.4775807 BTC@GAT..MTCH +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPaymentAssetNative.txt b/tests_unit/testcases/opPaymentAssetNative.txt new file mode 100644 index 00000000..f277ee41 --- /dev/null +++ b/tests_unit/testcases/opPaymentAssetNative.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 922,337,203,685.4775807 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opPaymentWithMuxedDestination.txt b/tests_unit/testcases/opPaymentWithMuxedDestination.txt new file mode 100644 index 00000000..5822d4b9 --- /dev/null +++ b/tests_unit/testcases/opPaymentWithMuxedDestination.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 922,337,203,685.4775807 XLM +Destination; MDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFKAAAAAAAAABHCCLDW +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipAccount.txt b/tests_unit/testcases/opRevokeSponsorshipAccount.txt new file mode 100644 index 00000000..c09f3ed2 --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipAccount.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (ACCOUNT) +Account ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipClaimableBalance.txt b/tests_unit/testcases/opRevokeSponsorshipClaimableBalance.txt new file mode 100644 index 00000000..3264598a --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipClaimableBalance.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (CLAIMABLE_BALANCE) +Balance ID; 00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipData.txt b/tests_unit/testcases/opRevokeSponsorshipData.txt new file mode 100644 index 00000000..19e15cc3 --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipData.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (DATA) +Account ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Data Name; Ledger Stellar App abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcda +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipEd25519PublicKeySigner.txt b/tests_unit/testcases/opRevokeSponsorshipEd25519PublicKeySigner.txt new file mode 100644 index 00000000..4d6136bf --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipEd25519PublicKeySigner.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (SIGNER_KEY) +Account ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Signer Key Type; Public Key +Signer Key; GCJBZJSKICFGD3FJMN5RBQIIXYUNVWOI7YAHQZQKK4UAWFGW6TRBRVX3 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipHashXSigner.txt b/tests_unit/testcases/opRevokeSponsorshipHashXSigner.txt new file mode 100644 index 00000000..15894b29 --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipHashXSigner.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (SIGNER_KEY) +Account ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Signer Key Type; Hash(x) +Signer Key; XDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH235FXL +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipLiquidityPool.txt b/tests_unit/testcases/opRevokeSponsorshipLiquidityPool.txt new file mode 100644 index 00000000..1a06f1a7 --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipLiquidityPool.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (LIQUIDITY_POOL) +Liquidity Pool ID; dd7b1ab831c273310ddbec6f97870aa83c2fbd78ce22aded37ecbf4f3380fac7 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipOffer.txt b/tests_unit/testcases/opRevokeSponsorshipOffer.txt new file mode 100644 index 00000000..46b26c78 --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipOffer.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (OFFER) +Seller ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Offer ID; 123456 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipPreAuthTxSigner.txt b/tests_unit/testcases/opRevokeSponsorshipPreAuthTxSigner.txt new file mode 100644 index 00000000..81d41abf --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipPreAuthTxSigner.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (SIGNER_KEY) +Account ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Signer Key Type; Pre-Auth +Signer Key; TDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH234BSS +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipTrustLineWithAsset.txt b/tests_unit/testcases/opRevokeSponsorshipTrustLineWithAsset.txt new file mode 100644 index 00000000..105a0ba1 --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipTrustLineWithAsset.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (TRUSTLINE) +Account ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Asset; BTC@GAT..MTCH +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.txt b/tests_unit/testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.txt new file mode 100644 index 00000000..657a93e1 --- /dev/null +++ b/tests_unit/testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Revoke Sponsorship (TRUSTLINE) +Account ID; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Liquidity Pool ID; 3aab0ed6d0b6f570c5b32b0339cc5930be36c4ae2c07697b70f11f9387e3f831 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptions.txt b/tests_unit/testcases/opSetOptions.txt new file mode 100644 index 00000000..f6c5738f --- /dev/null +++ b/tests_unit/testcases/opSetOptions.txt @@ -0,0 +1,18 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Inflation Dest; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Clear Flags; AUTH_CLAWBACK_ENABLED +Set Flags; AUTH_REQUIRED +Master Weight; 255 +Low Threshold; 10 +Medium Threshold; 20 +High Threshold; 30 +Home Domain; stellar.org +Add Signer; Type Public Key +Signer Key; GCJBZJSKICFGD3FJMN5RBQIIXYUNVWOI7YAHQZQKK4UAWFGW6TRBRVX3 +Weight; 10 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptionsAddHashXSigner.txt b/tests_unit/testcases/opSetOptionsAddHashXSigner.txt new file mode 100644 index 00000000..6fcf788d --- /dev/null +++ b/tests_unit/testcases/opSetOptionsAddHashXSigner.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Add Signer; Type Hash(x) +Signer Key; XDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH235FXL +Weight; 10 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptionsAddPreAuthTxSigner.txt b/tests_unit/testcases/opSetOptionsAddPreAuthTxSigner.txt new file mode 100644 index 00000000..59b9b85f --- /dev/null +++ b/tests_unit/testcases/opSetOptionsAddPreAuthTxSigner.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Add Signer; Type Pre-Auth +Signer Key; TDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH234BSS +Weight; 10 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptionsAddPublicKeySigner.txt b/tests_unit/testcases/opSetOptionsAddPublicKeySigner.txt new file mode 100644 index 00000000..aae62e6a --- /dev/null +++ b/tests_unit/testcases/opSetOptionsAddPublicKeySigner.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Add Signer; Type Public Key +Signer Key; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Weight; 10 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptionsWithEmptyBody.txt b/tests_unit/testcases/opSetOptionsWithEmptyBody.txt new file mode 100644 index 00000000..006f5b24 --- /dev/null +++ b/tests_unit/testcases/opSetOptionsWithEmptyBody.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +SET OPTIONS; BODY IS EMPTY +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetTrustLineFlagsAuthorized.txt b/tests_unit/testcases/opSetTrustLineFlagsAuthorized.txt new file mode 100644 index 00000000..67253119 --- /dev/null +++ b/tests_unit/testcases/opSetTrustLineFlagsAuthorized.txt @@ -0,0 +1,11 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Trust Line Flags +Trustor; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Asset; USDC@GA5..KZVN +Clear Flags; TRUSTLINE_CLAWBACK_ENABLED +Set Flags; AUTHORIZED, AUTHORIZED_TO_MAINTAIN_LIABILITIES +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.txt b/tests_unit/testcases/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.txt new file mode 100644 index 00000000..6df02d25 --- /dev/null +++ b/tests_unit/testcases/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.txt @@ -0,0 +1,11 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Trust Line Flags +Trustor; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Asset; USDC@GA5..KZVN +Clear Flags; AUTHORIZED_TO_MAINTAIN_LIABILITIES +Set Flags; AUTHORIZED, TRUSTLINE_CLAWBACK_ENABLED +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.txt b/tests_unit/testcases/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.txt new file mode 100644 index 00000000..d57f1e82 --- /dev/null +++ b/tests_unit/testcases/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.txt @@ -0,0 +1,11 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Trust Line Flags +Trustor; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Asset; USDC@GA5..KZVN +Clear Flags; AUTHORIZED, TRUSTLINE_CLAWBACK_ENABLED +Set Flags; AUTHORIZED_TO_MAINTAIN_LIABILITIES +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetTrustLineFlagsUnauthorized.txt b/tests_unit/testcases/opSetTrustLineFlagsUnauthorized.txt new file mode 100644 index 00000000..57069e9d --- /dev/null +++ b/tests_unit/testcases/opSetTrustLineFlagsUnauthorized.txt @@ -0,0 +1,11 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Trust Line Flags +Trustor; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Asset; USDC@GA5..KZVN +Clear Flags; AUTHORIZED, AUTHORIZED_TO_MAINTAIN_LIABILITIES, TRUSTLINE_CLAWBACK_ENABLED +Set Flags; [none] +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSourceOmitOpSourceEqualSignerNotEqualTxSource.txt b/tests_unit/testcases/opSourceOmitOpSourceEqualSignerNotEqualTxSource.txt new file mode 100644 index 00000000..6da3a9cf --- /dev/null +++ b/tests_unit/testcases/opSourceOmitOpSourceEqualSignerNotEqualTxSource.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_unit/testcases/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.txt b/tests_unit/testcases/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.txt new file mode 100644 index 00000000..10b14188 --- /dev/null +++ b/tests_unit/testcases/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG diff --git a/tests_unit/testcases/opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner.txt b/tests_unit/testcases/opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner.txt new file mode 100644 index 00000000..13a9b2bb --- /dev/null +++ b/tests_unit/testcases/opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_unit/testcases/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.txt b/tests_unit/testcases/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.txt new file mode 100644 index 00000000..3a380f75 --- /dev/null +++ b/tests_unit/testcases/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG diff --git a/tests_unit/testcases/opSourceOmitTxSourceEqualOpSourceEqualSigner.txt b/tests_unit/testcases/opSourceOmitTxSourceEqualOpSourceEqualSigner.txt new file mode 100644 index 00000000..f7e88fe3 --- /dev/null +++ b/tests_unit/testcases/opSourceOmitTxSourceEqualOpSourceEqualSigner.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSourceOmitTxSourceEqualOpSourceNotEqualSigner.txt b/tests_unit/testcases/opSourceOmitTxSourceEqualOpSourceNotEqualSigner.txt new file mode 100644 index 00000000..12f02fcd --- /dev/null +++ b/tests_unit/testcases/opSourceOmitTxSourceEqualOpSourceNotEqualSigner.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX diff --git a/tests_unit/testcases/opSourceOmitTxSourceEqualSignerNotEqualOpSource.txt b/tests_unit/testcases/opSourceOmitTxSourceEqualSignerNotEqualOpSource.txt new file mode 100644 index 00000000..4ea229b0 --- /dev/null +++ b/tests_unit/testcases/opSourceOmitTxSourceEqualSignerNotEqualOpSource.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX diff --git a/tests_unit/testcases/opWithEmptySource.txt b/tests_unit/testcases/opWithEmptySource.txt new file mode 100644 index 00000000..e2668302 --- /dev/null +++ b/tests_unit/testcases/opWithEmptySource.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 922,337,203,685.4775807 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX diff --git a/tests_unit/testcases/opWithMuxedSource.txt b/tests_unit/testcases/opWithMuxedSource.txt new file mode 100644 index 00000000..41ecd903 --- /dev/null +++ b/tests_unit/testcases/opWithMuxedSource.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 922,337,203,685.4775807 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG diff --git a/tests_unit/testcases/txCondExtraSignersWithOneSigner.txt b/tests_unit/testcases/txCondExtraSignersWithOneSigner.txt new file mode 100644 index 00000000..af3000e1 --- /dev/null +++ b/tests_unit/testcases/txCondExtraSignersWithOneSigner.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondExtraSignersWithTwoSigners.txt b/tests_unit/testcases/txCondExtraSignersWithTwoSigners.txt new file mode 100644 index 00000000..af3000e1 --- /dev/null +++ b/tests_unit/testcases/txCondExtraSignersWithTwoSigners.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondIsNone.txt b/tests_unit/testcases/txCondIsNone.txt new file mode 100644 index 00000000..7b6e2f15 --- /dev/null +++ b/tests_unit/testcases/txCondIsNone.txt @@ -0,0 +1,7 @@ +Memo Return; 573c10b148fc4bc7db97540ce49da22930f4bcd48a060dc7347be84ea9f52d9f +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondLedgerBounds.txt b/tests_unit/testcases/txCondLedgerBounds.txt new file mode 100644 index 00000000..e4680497 --- /dev/null +++ b/tests_unit/testcases/txCondLedgerBounds.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Ledger Bounds Min; 40351800 +Ledger Bounds Max; 40352000 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondLedgerBoundsAreZero.txt b/tests_unit/testcases/txCondLedgerBoundsAreZero.txt new file mode 100644 index 00000000..af3000e1 --- /dev/null +++ b/tests_unit/testcases/txCondLedgerBoundsAreZero.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondLedgerBoundsMaxIsZero.txt b/tests_unit/testcases/txCondLedgerBoundsMaxIsZero.txt new file mode 100644 index 00000000..9bed1f15 --- /dev/null +++ b/tests_unit/testcases/txCondLedgerBoundsMaxIsZero.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Ledger Bounds Min; 40351800 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondLedgerBoundsMinIsZero.txt b/tests_unit/testcases/txCondLedgerBoundsMinIsZero.txt new file mode 100644 index 00000000..50e5b52d --- /dev/null +++ b/tests_unit/testcases/txCondLedgerBoundsMinIsZero.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Ledger Bounds Max; 40352000 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondMinAccountSequence.txt b/tests_unit/testcases/txCondMinAccountSequence.txt new file mode 100644 index 00000000..f0514855 --- /dev/null +++ b/tests_unit/testcases/txCondMinAccountSequence.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Min Seq Num; 103420918407103888 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondMinAccountSequenceAge.txt b/tests_unit/testcases/txCondMinAccountSequenceAge.txt new file mode 100644 index 00000000..2004d67f --- /dev/null +++ b/tests_unit/testcases/txCondMinAccountSequenceAge.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Min Seq Age; 1649239999 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondMinAccountSequenceLedgerGap.txt b/tests_unit/testcases/txCondMinAccountSequenceLedgerGap.txt new file mode 100644 index 00000000..45d8c5b8 --- /dev/null +++ b/tests_unit/testcases/txCondMinAccountSequenceLedgerGap.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Min Seq Ledger Gap; 30 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondTimeBounds.txt b/tests_unit/testcases/txCondTimeBounds.txt new file mode 100644 index 00000000..0cb3bc60 --- /dev/null +++ b/tests_unit/testcases/txCondTimeBounds.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid After (UTC); 2022-07-16 06:01:37 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondTimeBoundsAreZero.txt b/tests_unit/testcases/txCondTimeBoundsAreZero.txt new file mode 100644 index 00000000..af3000e1 --- /dev/null +++ b/tests_unit/testcases/txCondTimeBoundsAreZero.txt @@ -0,0 +1,7 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondTimeBoundsIsNone.txt b/tests_unit/testcases/txCondTimeBoundsIsNone.txt new file mode 100644 index 00000000..8a8b138d --- /dev/null +++ b/tests_unit/testcases/txCondTimeBoundsIsNone.txt @@ -0,0 +1,9 @@ +Memo Return; 573c10b148fc4bc7db97540ce49da22930f4bcd48a060dc7347be84ea9f52d9f +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Ledger Bounds Min; 40351800 +Ledger Bounds Max; 40352000 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondTimeBoundsMaxIsZero.txt b/tests_unit/testcases/txCondTimeBoundsMaxIsZero.txt new file mode 100644 index 00000000..9bcf8e7e --- /dev/null +++ b/tests_unit/testcases/txCondTimeBoundsMaxIsZero.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid After (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondTimeBoundsMinIsZero.txt b/tests_unit/testcases/txCondTimeBoundsMinIsZero.txt new file mode 100644 index 00000000..325bbc0d --- /dev/null +++ b/tests_unit/testcases/txCondTimeBoundsMinIsZero.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-07-16 06:01:37 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCondWithAllItems.txt b/tests_unit/testcases/txCondWithAllItems.txt new file mode 100644 index 00000000..11a6156e --- /dev/null +++ b/tests_unit/testcases/txCondWithAllItems.txt @@ -0,0 +1,14 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid After (UTC); 2022-07-16 06:01:37 +Valid Before (UTC); 2022-12-12 04:12:12 +Ledger Bounds Min; 40351800 +Ledger Bounds Max; 40352000 +Min Seq Num; 103420918407103888 +Min Seq Age; 1649239999 +Min Seq Ledger Gap; 30 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txCustomBaseFee.txt b/tests_unit/testcases/txCustomBaseFee.txt new file mode 100644 index 00000000..84b33f05 --- /dev/null +++ b/tests_unit/testcases/txCustomBaseFee.txt @@ -0,0 +1,13 @@ +Memo Text; hello world +Max Fee; 0.000255 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation 1 of 2; +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 +Operation 2 of 2; +Send; 1 XLM +Destination; GCJBZJSKICFGD3FJMN5RBQIIXYUNVWOI7YAHQZQKK4UAWFGW6TRBRVX3 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txMemoHash.txt b/tests_unit/testcases/txMemoHash.txt new file mode 100644 index 00000000..0bc550b4 --- /dev/null +++ b/tests_unit/testcases/txMemoHash.txt @@ -0,0 +1,8 @@ +Memo Hash; 573c10b148fc4bc7db97540ce49da22930f4bcd48a060dc7347be84ea9f52d9f +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txMemoId.txt b/tests_unit/testcases/txMemoId.txt new file mode 100644 index 00000000..d8968bf7 --- /dev/null +++ b/tests_unit/testcases/txMemoId.txt @@ -0,0 +1,8 @@ +Memo ID; 18446744073709551615 +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txMemoNone.txt b/tests_unit/testcases/txMemoNone.txt new file mode 100644 index 00000000..c6a0bb29 --- /dev/null +++ b/tests_unit/testcases/txMemoNone.txt @@ -0,0 +1,7 @@ +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txMemoReturnHash.txt b/tests_unit/testcases/txMemoReturnHash.txt new file mode 100644 index 00000000..e5df07e4 --- /dev/null +++ b/tests_unit/testcases/txMemoReturnHash.txt @@ -0,0 +1,8 @@ +Memo Return; 573c10b148fc4bc7db97540ce49da22930f4bcd48a060dc7347be84ea9f52d9f +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txMemoText.txt b/tests_unit/testcases/txMemoText.txt new file mode 100644 index 00000000..1285ed46 --- /dev/null +++ b/tests_unit/testcases/txMemoText.txt @@ -0,0 +1,8 @@ +Memo Text; hello world 123456789 123456 +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txMemoTextUnprintable.txt b/tests_unit/testcases/txMemoTextUnprintable.txt new file mode 100644 index 00000000..f11d1e7d --- /dev/null +++ b/tests_unit/testcases/txMemoTextUnprintable.txt @@ -0,0 +1,8 @@ +Memo Text (base64); 6L+Z5p..hleQ== +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txMultiOperations.txt b/tests_unit/testcases/txMultiOperations.txt new file mode 100644 index 00000000..013549d9 --- /dev/null +++ b/tests_unit/testcases/txMultiOperations.txt @@ -0,0 +1,16 @@ +Memo Text; hello world +Max Fee; 0.00003 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation 1 of 3; +Send; 922,337,203,685.4775807 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 +Operation 2 of 3; +Send; 922,337,203,685.4775807 BTC@GAT..MTCH +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 +Operation 3 of 3; +Operation Type; Set Options +Home Domain; stellar.org diff --git a/tests_unit/testcases/txNetworkCustom.txt b/tests_unit/testcases/txNetworkCustom.txt new file mode 100644 index 00000000..0038a745 --- /dev/null +++ b/tests_unit/testcases/txNetworkCustom.txt @@ -0,0 +1,9 @@ +Network; Unknown +Memo Text; hello world +Max Fee; 0.00001 native +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txNetworkPublic.txt b/tests_unit/testcases/txNetworkPublic.txt new file mode 100644 index 00000000..f7e88fe3 --- /dev/null +++ b/tests_unit/testcases/txNetworkPublic.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txNetworkTestnet.txt b/tests_unit/testcases/txNetworkTestnet.txt new file mode 100644 index 00000000..caca4305 --- /dev/null +++ b/tests_unit/testcases/txNetworkTestnet.txt @@ -0,0 +1,9 @@ +Network; Testnet +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txSourceOmitMuxedSourceEqualSigner.txt b/tests_unit/testcases/txSourceOmitMuxedSourceEqualSigner.txt new file mode 100644 index 00000000..13a9b2bb --- /dev/null +++ b/tests_unit/testcases/txSourceOmitMuxedSourceEqualSigner.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_unit/testcases/txSourceOmitSourceEqualSigner.txt b/tests_unit/testcases/txSourceOmitSourceEqualSigner.txt new file mode 100644 index 00000000..f7e88fe3 --- /dev/null +++ b/tests_unit/testcases/txSourceOmitSourceEqualSigner.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/txSourceOmitSourceNotEqualSigner.txt b/tests_unit/testcases/txSourceOmitSourceNotEqualSigner.txt new file mode 100644 index 00000000..12f02fcd --- /dev/null +++ b/tests_unit/testcases/txSourceOmitSourceNotEqualSigner.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Operation Type; Bump Sequence +Bump To; 1232134324234 +Op Source; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX diff --git a/tests_unit/testcases/txWithMuxedSource.txt b/tests_unit/testcases/txWithMuxedSource.txt new file mode 100644 index 00000000..7394277b --- /dev/null +++ b/tests_unit/testcases/txWithMuxedSource.txt @@ -0,0 +1,8 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; MDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2AAAAAAAAABHCDCGG +Send; 1 XLM +Destination; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 diff --git a/tests_zemu/elfs/.gitkeep b/tests_zemu/elfs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/tests_zemu/jest.config.js b/tests_zemu/jest.config.js new file mode 100644 index 00000000..1d6fb65f --- /dev/null +++ b/tests_zemu/jest.config.js @@ -0,0 +1,11 @@ +// For a detailed explanation regarding each configuration property, visit: +// https://jestjs.io/docs/en/configuration.html + +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + transformIgnorePatterns: ['^.+\\.js$'], + // globalSetup: "/tests/globalsetup.ts", + // Stop immediatly when a test fail + bail: false, +}; \ No newline at end of file diff --git a/tests_zemu/jest.js b/tests_zemu/jest.js new file mode 100644 index 00000000..e69de29b diff --git a/tests_zemu/package-lock.json b/tests_zemu/package-lock.json new file mode 100644 index 00000000..a96f48c3 --- /dev/null +++ b/tests_zemu/package-lock.json @@ -0,0 +1,9056 @@ +{ + "name": "stellar-app-integration-tests", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "stellar-app-integration-tests", + "version": "1.0.0", + "license": "Apache-2.0", + "devDependencies": { + "@ledgerhq/hw-app-str": "^6.27.1", + "@types/jest": "^27.4.1", + "@zondax/zemu": "0.33.0", + "jest": "^27.5.1", + "stellar-base": "^8.1.0", + "tests-common": "file:../tests_common_js", + "ts-jest": "^27.1.4", + "typescript": "^4.6.3" + } + }, + "../tests_common_js": { + "name": "tests-common", + "version": "1.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "stellar-base": "^8.1.0" + }, + "devDependencies": { + "@types/node": "^17.0.29", + "typescript": "^4.6.3" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.9", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.9", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.7.tgz", + "integrity": "sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.6.4", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.6.9", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@ledgerhq/devices": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-6.27.1.tgz", + "integrity": "sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/logs": "^6.10.0", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/devices/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ledgerhq/errors": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.10.0.tgz", + "integrity": "sha512-fQFnl2VIXh9Yd41lGjReCeK+Q2hwxQJvLZfqHnKqWapTz68NHOv5QcI0OHuZVNEbv0xhgdLhi5b65kgYeQSUVg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@ledgerhq/hw-app-str": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-str/-/hw-app-str-6.27.1.tgz", + "integrity": "sha512-cAtl6UKdD/KThcEnsCDn99XZtNxMNcMc6Wcbk7L7h/lmF8zgl6b8fjaA9yPvEZZgOfu6CQ8NTjf4Mp6BHMx4lQ==", + "dev": true, + "dependencies": { + "@ledgerhq/hw-transport": "^6.27.1", + "base32.js": "^0.1.0", + "sha.js": "^2.3.6", + "tweetnacl": "^1.0.3" + } + }, + "node_modules/@ledgerhq/hw-app-str/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/@ledgerhq/hw-transport": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz", + "integrity": "sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/hw-transport-http": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-http/-/hw-transport-http-6.27.1.tgz", + "integrity": "sha512-494Zk5jvHcasa5xjZW7l5g+QqJqLlZpuV/RvlIWnKHdVdrBWYvG/1VukQfJQPgbK3WHtt/9WhrnJoLI+xv2PrA==", + "dev": true, + "dependencies": { + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/hw-transport": "^6.27.1", + "@ledgerhq/logs": "^6.10.0", + "axios": "^0.26.1", + "ws": "8.5.0" + } + }, + "node_modules/@ledgerhq/logs": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.0.tgz", + "integrity": "sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.17.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/long": { + "version": "4.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "17.0.25", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prettier": { + "version": "2.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zondax/zemu": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@zondax/zemu/-/zemu-0.33.0.tgz", + "integrity": "sha512-Ql1gqAYr6kflnLX4UXFFtcd0GDDrjSxmfsaqXUHhSR8xMck71XcvxD2d4wLUnGCnEu3jA9pw5d2fBFlvIzDtQA==", + "dev": true, + "dependencies": { + "@grpc/grpc-js": "^1.5.5", + "@grpc/proto-loader": "^0.6.9", + "@ledgerhq/hw-transport": "^6.24.1", + "@ledgerhq/hw-transport-http": "^6.24.1", + "axios": "^0.27.2", + "axios-retry": "^3.2.0", + "dockerode": "^3.3.1", + "elfy": "^1.0.0", + "fs-extra": "^10.0.0", + "get-port": "^5.1.1", + "path": "^0.12.7", + "pngjs": "^6.0.0", + "randomstring": "^1.2.1" + } + }, + "node_modules/@zondax/zemu/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/@zondax/zemu/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@zondax/zemu/node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/acorn": { + "version": "8.7.0", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-uniq": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", + "integrity": "sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/axios-retry": { + "version": "3.2.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base32.js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz", + "integrity": "sha1-tYLexpPC8R6JPPBk7mrFthMaIgI=", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bignumber.js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz", + "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/browserslist": { + "version": "4.20.2", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buildcheck": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.3.tgz", + "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001332", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" + }, + "node_modules/ci-info": { + "version": "3.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cpu-features": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", + "integrity": "sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "0.0.3", + "nan": "^2.15.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/docker-modem": { + "version": "3.0.3", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.4.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/dockerode": { + "version": "3.3.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "docker-modem": "^3.0.0", + "tar-fs": "~2.0.1" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.118", + "dev": true, + "license": "ISC" + }, + "node_modules/elfy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/elfy/-/elfy-1.0.0.tgz", + "integrity": "sha512-4Kp3AA94jC085IJox+qnvrZ3PudqTi4gQNvIoTZfJJ9IqkRuCoqP60vCVYlIg00c5aYusi5Wjh2bf0cHYt+6gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "endian-reader": "^0.3.0" + } + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/endian-reader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/endian-reader/-/endian-reader-0.3.0.tgz", + "integrity": "sha512-zPlHN59VLEjeJtpEU41ti/i7ZvTbwclvUN2M8anCsI3tOC/3mq6WNTJEKi49A5eLGvDkA0975LZb67Xwp7u4xQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-xdr": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/js-xdr/-/js-xdr-1.3.0.tgz", + "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.5", + "long": "^2.2.3" + } + }, + "node_modules/js-xdr/node_modules/long": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz", + "integrity": "sha1-n6GAux2VAM3CnEFWdmoZleH0Uk8=", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "7.5.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/nan": { + "version": "2.15.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, + "node_modules/psl": { + "version": "1.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", + "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/randomstring": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.2.tgz", + "integrity": "sha512-9FByiB8guWZLbE+akdQiWE3I1I6w7Vn5El4o4y7o5bWQ6DWPcEOp+aLG7Jezc8BVRKKpgJd2ppRX0jnKu1YCfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "1.0.2", + "randombytes": "2.0.3" + }, + "bin": { + "randomstring": "bin/randomstring" + }, + "engines": { + "node": "*" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true, + "license": "MIT" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sodium-native": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.3.0.tgz", + "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ssh2": { + "version": "1.9.0", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.4", + "nan": "^2.15.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stellar-base": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.1.0.tgz", + "integrity": "sha512-sQaLZZ2qaFUokOtFVfimFNCCZuX5QEYV2Zxa4Ve+br8cdv1pl6AOaAlpyjs0T7E4V3FmvLi5MJkUQ50i0yHfmA==", + "dev": true, + "dependencies": { + "base32.js": "^0.1.0", + "bignumber.js": "^4.0.0", + "crc": "^3.5.0", + "js-xdr": "^1.1.3", + "lodash": "^4.17.21", + "sha.js": "^2.3.6", + "tweetnacl": "^1.0.3" + }, + "optionalDependencies": { + "sodium-native": "^3.3.0" + } + }, + "node_modules/stellar-base/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tests-common": { + "resolved": "../tests_common_js", + "link": true + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-jest": { + "version": "27.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", + "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.6.3", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "dev": true + }, + "@babel/core": { + "version": "7.17.9", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "dev": true + }, + "@babel/helpers": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.17.9", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/runtime": { + "version": "7.17.9", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.9", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@grpc/grpc-js": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.7.tgz", + "integrity": "sha512-eBM03pu9hd3VqDQG+kHahiG1x80RGkkqqRb1Pchcwqej/KkAH95gAvKs6laqaHCycYaPK+TKuNQnOz9UXYA8qw==", + "dev": true, + "requires": { + "@grpc/proto-loader": "^0.6.4", + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.6.9", + "dev": true, + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^6.10.0", + "yargs": "^16.2.0" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + } + }, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.6", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@ledgerhq/devices": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-6.27.1.tgz", + "integrity": "sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==", + "dev": true, + "requires": { + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/logs": "^6.10.0", + "rxjs": "6", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@ledgerhq/errors": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.10.0.tgz", + "integrity": "sha512-fQFnl2VIXh9Yd41lGjReCeK+Q2hwxQJvLZfqHnKqWapTz68NHOv5QcI0OHuZVNEbv0xhgdLhi5b65kgYeQSUVg==", + "dev": true + }, + "@ledgerhq/hw-app-str": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-str/-/hw-app-str-6.27.1.tgz", + "integrity": "sha512-cAtl6UKdD/KThcEnsCDn99XZtNxMNcMc6Wcbk7L7h/lmF8zgl6b8fjaA9yPvEZZgOfu6CQ8NTjf4Mp6BHMx4lQ==", + "dev": true, + "requires": { + "@ledgerhq/hw-transport": "^6.27.1", + "base32.js": "^0.1.0", + "sha.js": "^2.3.6", + "tweetnacl": "^1.0.3" + }, + "dependencies": { + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + } + } + }, + "@ledgerhq/hw-transport": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz", + "integrity": "sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==", + "dev": true, + "requires": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "events": "^3.3.0" + } + }, + "@ledgerhq/hw-transport-http": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-http/-/hw-transport-http-6.27.1.tgz", + "integrity": "sha512-494Zk5jvHcasa5xjZW7l5g+QqJqLlZpuV/RvlIWnKHdVdrBWYvG/1VukQfJQPgbK3WHtt/9WhrnJoLI+xv2PrA==", + "dev": true, + "requires": { + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/hw-transport": "^6.27.1", + "@ledgerhq/logs": "^6.10.0", + "axios": "^0.26.1", + "ws": "8.5.0" + } + }, + "@ledgerhq/logs": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.0.tgz", + "integrity": "sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw==", + "dev": true + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.17.0", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "27.4.1", + "dev": true, + "requires": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/long": { + "version": "4.0.1", + "dev": true + }, + "@types/node": { + "version": "17.0.25", + "dev": true + }, + "@types/prettier": { + "version": "2.6.0", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@zondax/zemu": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@zondax/zemu/-/zemu-0.33.0.tgz", + "integrity": "sha512-Ql1gqAYr6kflnLX4UXFFtcd0GDDrjSxmfsaqXUHhSR8xMck71XcvxD2d4wLUnGCnEu3jA9pw5d2fBFlvIzDtQA==", + "dev": true, + "requires": { + "@grpc/grpc-js": "^1.5.5", + "@grpc/proto-loader": "^0.6.9", + "@ledgerhq/hw-transport": "^6.24.1", + "@ledgerhq/hw-transport-http": "^6.24.1", + "axios": "^0.27.2", + "axios-retry": "^3.2.0", + "dockerode": "^3.3.1", + "elfy": "^1.0.0", + "fs-extra": "^10.0.0", + "get-port": "^5.1.1", + "path": "^0.12.7", + "pngjs": "^6.0.0", + "randomstring": "^1.2.1" + }, + "dependencies": { + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + } + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "acorn": { + "version": "8.7.0", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-uniq": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", + "integrity": "sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.8" + } + }, + "axios-retry": { + "version": "3.2.4", + "dev": true, + "requires": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, + "babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base32.js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz", + "integrity": "sha1-tYLexpPC8R6JPPBk7mrFthMaIgI=", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bignumber.js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz", + "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.20.2", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buildcheck": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.3.tgz", + "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", + "dev": true, + "optional": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001332", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "ci-info": { + "version": "3.3.0", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cpu-features": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", + "integrity": "sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==", + "dev": true, + "optional": true, + "requires": { + "buildcheck": "0.0.3", + "nan": "^2.15.0" + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "requires": { + "buffer": "^5.1.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "docker-modem": { + "version": "3.0.3", + "dev": true, + "requires": { + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.4.0" + } + }, + "dockerode": { + "version": "3.3.1", + "dev": true, + "requires": { + "docker-modem": "^3.0.0", + "tar-fs": "~2.0.1" + } + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "electron-to-chromium": { + "version": "1.4.118", + "dev": true + }, + "elfy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/elfy/-/elfy-1.0.0.tgz", + "integrity": "sha512-4Kp3AA94jC085IJox+qnvrZ3PudqTi4gQNvIoTZfJJ9IqkRuCoqP60vCVYlIg00c5aYusi5Wjh2bf0cHYt+6gQ==", + "dev": true, + "requires": { + "endian-reader": "^0.3.0" + } + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "endian-reader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/endian-reader/-/endian-reader-0.3.0.tgz", + "integrity": "sha512-zPlHN59VLEjeJtpEU41ti/i7ZvTbwclvUN2M8anCsI3tOC/3mq6WNTJEKi49A5eLGvDkA0975LZb67Xwp7u4xQ==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "follow-redirects": { + "version": "1.14.9", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-core-module": { + "version": "2.9.0", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.4", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + } + }, + "jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + } + }, + "jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + } + }, + "jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + } + }, + "jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + } + }, + "jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "requires": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true + }, + "jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + } + }, + "jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "requires": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + } + }, + "jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + } + }, + "jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "requires": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-xdr": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/js-xdr/-/js-xdr-1.3.0.tgz", + "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==", + "dev": true, + "requires": { + "lodash": "^4.17.5", + "long": "^2.2.3" + }, + "dependencies": { + "long": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz", + "integrity": "sha1-n6GAux2VAM3CnEFWdmoZleH0Uk8=", + "dev": true + } + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "ws": { + "version": "7.5.7", + "dev": true, + "requires": {} + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nan": { + "version": "2.15.0", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true, + "optional": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.3", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dev": true, + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "protobufjs": { + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, + "psl": { + "version": "1.8.0", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "randombytes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", + "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", + "dev": true + }, + "randomstring": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.2.tgz", + "integrity": "sha512-9FByiB8guWZLbE+akdQiWE3I1I6w7Vn5El4o4y7o5bWQ6DWPcEOp+aLG7Jezc8BVRKKpgJd2ppRX0jnKu1YCfg==", + "dev": true, + "requires": { + "array-uniq": "1.0.2", + "randombytes": "2.0.3" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "sodium-native": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.3.0.tgz", + "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==", + "dev": true, + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "ssh2": { + "version": "1.9.0", + "dev": true, + "requires": { + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2", + "cpu-features": "~0.0.4", + "nan": "^2.15.0" + } + }, + "stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, + "stellar-base": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.1.0.tgz", + "integrity": "sha512-sQaLZZ2qaFUokOtFVfimFNCCZuX5QEYV2Zxa4Ve+br8cdv1pl6AOaAlpyjs0T7E4V3FmvLi5MJkUQ50i0yHfmA==", + "dev": true, + "requires": { + "base32.js": "^0.1.0", + "bignumber.js": "^4.0.0", + "crc": "^3.5.0", + "js-xdr": "^1.1.3", + "lodash": "^4.17.21", + "sha.js": "^2.3.6", + "sodium-native": "^3.3.0", + "tweetnacl": "^1.0.3" + }, + "dependencies": { + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "tests-common": { + "version": "file:../tests_common_js", + "requires": { + "@types/node": "^17.0.29", + "stellar-base": "^8.1.0", + "typescript": "^4.6.3" + } + }, + "throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "dependencies": { + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "ts-jest": { + "version": "27.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", + "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.6.3", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "dev": true + } + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } +} diff --git a/tests_zemu/package.json b/tests_zemu/package.json new file mode 100644 index 00000000..ce55a7ac --- /dev/null +++ b/tests_zemu/package.json @@ -0,0 +1,23 @@ +{ + "name": "stellar-app-integration-tests", + "version": "1.0.0", + "description": "Ledger Stellar App Zemu Test", + "main": "index.js", + "repository": "https://github.com/LedgerHQ/app-stellar", + "author": "overcat", + "license": "Apache-2.0", + "types": "./dist/index.d.ts", + "scripts": { + "test": "jest" + }, + "devDependencies": { + "@ledgerhq/hw-app-str": "^6.27.1", + "@types/jest": "^27.4.1", + "@zondax/zemu": "0.33.0", + "jest": "^27.5.1", + "stellar-base": "^8.1.0", + "tests-common": "file:../tests_common_js", + "ts-jest": "^27.1.4", + "typescript": "^4.6.3" + } +} \ No newline at end of file diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00000.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..88429892f93b7b0e9cd223636a3660d85014331c GIT binary patch literal 379 zcmV->0fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEP)$-~WMoXb;Xfkw^%FES3FEEhRrJ2$F_C2q9!v7EIXh=a|LX)ttl%)|gki zLi0u^AlRkcSF~=i&86Y?Sx(Qg#tx%j5ezc{TC!6SW&e$=aM@Xje(eix0<;QRXk&Xp z3)c$V1ZdSfEsx`cPGEM1IRo?wsaquW!QiLpobSP(ztxq|f3TT|Q>h<7<4p#gP5poy z@=4qY)yKj)K*C)J$x&og4b5IGN2o;B+8vNJ60pW}v7 zgg=kdg$$(0c2v0h@2LeDb$s1t&)8#iE4Fso^e&vq_-bghy*_}#5#93ycrvgL&yfBH xQLZn$V(LjxK7Xl{oR8*kg;hcbA%u`|`2ktP}~002ovPDHLkV1mTey6OM` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00002.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7be8d935d82b3e0be8541f14fdf25be66cddf3bf GIT binary patch literal 411 zcmV;M0c8G(P)rhZYADu>)isH=@Fz^L{?e=>+cB&b4>?42ySp|p$A@*@3Ct2Srou=Emja?)yg5^e(TU3P zn)O$^HjUamshNAka`W{q$@8pQ9-Gpn>XG>VOT-(3an+0ydDkEAw zv~Ku%^F**c0x+UCS>IIfLRNXX7xB378 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00003.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..726d04ded60f432042bb372dbf66c68874e4f90a GIT binary patch literal 360 zcmV-u0hj)XP)Ko7$ z8S0x+ks9h7gBW;%EaZvlclbP-4&|evC3Te+=}LC1H{{`}W-#62nu^V(hMcZ>m*%B> z%%cGi1i6U)g?)$ek*4@*;0p!-00000Cj0=*tmeMzHotBF0000=}K9dBy~6jHJ@ZHt|Dt}t=Gv4)kSSwNf4c;5h@Nj{Z|&0cL94lO1`feg~=|Q~hofq^A0vVGJzcDr5=z zK0J-9-xWJq0|6*!%49BXczp0WK};UI=5{LV=z5&4ci!;S_77?qu+g|O-Ws17 zaO$sY7})f86@YE+^xZ&h08$JdRt*hm!>|T21By3X#oDL5UD=hDn=m1S5JCtH9|Q)A UWPa}4YXATM07*qoM6N<$g6bEFv;Y7A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00005.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..368711bc9abdf71c707b99f578164e96bc477e47 GIT binary patch literal 341 zcmV-b0jmCqP)Vds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00006.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00007.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a8c7613a53f2be3a31b6ab6d45f2f063b62e0f GIT binary patch literal 463 zcmV;=0WkiFP)&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00008.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..568effefaea7e84eb02704b46bb0e2907598a83e GIT binary patch literal 490 zcmVH9x$7U{wnkKyu*5w&UgR;@)uKw{{&1wjx5zskc|-?5+7zZ&GL!Y&;9 z|3YbXvTi9LPMKq87bFZWl3wH$(+6Szx98YTgWd)|ebvd3JzM0#wo7fL82-w!B=SA- zouj2yHNQ69*TzA-qG&+V>Y|bk{v36wJYI6O%_G{cJzQ|pihQ3EfGRmczB+p#Pl#c$ znG%3({f$a$Y3E3@SDyf$_~mIJUI36;nvygwdei9T;W;$_UO1V~4UV1u_1@oB2LNgK z1@C_df~&*(lZhCtB&yI#&Q50CP;$)@yPI0elg|b6nlO>qH1J!dIEyc#4Qkq|R&jTM zcZjxItac!-HC~Kg#SR)cnn1W}r)8nmMi%cT!Md{gMNDM$+cM})O=oEUT(0ERzf*d& zi87^FS<^^0vtbUvh?KE+8i+ue=-XeaKAE=0?dQ3m|IrYD5e>^G92+&p=Acm2>@Bo3j&wFwt=KX>}84ufK^0$O3&uvfcvlDZmPj+*Ns~7 gK@bE%5Cr3S1L@gbmKPbSm;e9(07*qoM6N<$f~yJU4FCWD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00009.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..521170f7e3a4bba94dc782a39ab1183a61e8a241 GIT binary patch literal 495 zcmV^s-+)wXnhpAvv3B|^S3n;0I?_SB1D zOl+nEpuTwQv!&X`)Kw$RUcCbN#IIKa@qz*Ar3uO9^`0Y^+Xj!FL-X&2levB`8rc2c zdq1rXfFYxAs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00010.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..5223728169aea836462952a356805f14571033c8 GIT binary patch literal 479 zcmV<50U-W~P)JoYEU#ID4g41#ASo4IbT1OWH8Ik~#nxR;oJrsZ7M{rGU zh9qF>5Nibbd8OO4zW_S$;n#qopn!TwN{XD_hB~8s`4}3%FC0w&zUad4|33QL>;z~U z?hyS&U_zbIA57+8COHeuM2Wy_9i>VpqFMONeB}ITv}>KfRi3c2ANdNs=VFD<6Zx VWRiB3ZtDO5002ovPDHLkV1jPd-GcxC literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00011.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..eea1f103406ededba3a0c1f8f1539a5a7cfd7eb3 GIT binary patch literal 424 zcmV;Z0ayNsP)V!$=W*6YGiyo#)-ZN+AF8Q*F?6QG?Q^-Bc#&zzpYOW93XZ7 zd+YllV`^A`GVsAlkcC$AZR9QUc+PG;{yzAq!*+`2E&p1MYxt%!iKLQPKKf`JeGCal zzS#mljnPObwbvX$PhtFNsFFA|&VV%!mJw$j-MDc;mDqgdzFC(U92~}x(foOq4oUesK(=UONO!<85!{0!=~f>`maq0r4M1{x)uvPz5On00000U^Q=KdpGl? SktUn~0000sn3{L_e4G6Tb=a@ z?)?2?$6aO{(|va&HoqsQKCL)2qOeDQM2;>|-!JAS(ud|Rx@+6vo^!ktQ>ROfxTWfn zTA!FTGEad1={V?4YYiz57OSmEtB-0l_z6hKlpg!~8mDtN`dYLA`O?jM>4bv1FCzDl zlxvCWzQjBMX6Kaberx8tSCZOP^yFellh(9>U!v#yg8UnWhJ^Qv1vpCfWJI%A0GHDi wIyD(Px#07*qoM6N<$f&!+7(EtDd literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00013.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00016.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00017.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00018.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00019.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z09@5ACg%P6PJPD2x;Hu;z8Cp> z!gh%ne;}tX(|z|$Z2p+Q>ad8y9{)#_=o0mOF_TCinoG9BeJ1J^kj}*1?V3u}CAlkL zIfWIVe@aif!&*bCCz}ecR#nbv*LelxG<7HZ)*&-GC}+|GD3@;DOMw>azKGmIQqEz$ z?n}%HFgvFd_ggdG{U^D1v>sdyapf*)P3!n2y7(95*;N`c>x=tRvOVdv=^^E`g-#8| tGni@UTL{MJeHa?;1poj50001H`2bzZnHVWBR?+|f002ovPDHLkV1g0*f9wDN literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00023.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000`iE1sy?@*1@QIp7s-POW_- zv{3{8@JBHZnErlSP@uWsm<5W3^ss6M&=k*DGs{`PnAA=#?trENb&(lp7+;`P((DlP z`sU&e5NTHJM?lq16+fv1#Ep*bS9}wuhRzL8Orf^CMhqAVPA|_NN!xAl7ZYr6uep)` z)4X4ncK|Z^K=0p$;Og}LVzLkJBv+w3IXn3!yw;9oCp#Ev5d%9#x=djcesQDOfCjT( zoJiBfTDUfTCKgZFgU42FW@z!}-oTD#;wfz)h78i3wR>b}&N=gC<}et(hV+gFkpEei z>NDXEFnRxfsPVgLRtPUhuWWh`cN_MHBK*OFDvN6}hjUZQK==rJ25>gPv)P2{?|}Fh z36CpzExmn!zrBn#!7tmbGrRAtBJXCg)BuTOle-O=p32%j^n*aa+07*qoM6N<$g7Dz!q5uE@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00025.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..132b93a5a93bb8aa34f22883c2736effe4b9b8d3 GIT binary patch literal 488 zcmVP)<|G^&gfFaly!yB`m7{jtHowiW24Z-1XI2?|4yk9@R=0$o4^y_N;?U^3a z!$3&joOT7>UdN6vNm4hBN2h)PiQnx>ALBUw$44TQwD_c^%PndPHoKFo9|Y|L7z6$& z${5=d*EJRtL#fFlUesgN3CL#}w&Ai(M-Efxi2*P<0mOk+WEvdf1!_19VtLWCB`YyG z0U}7%J_I(U{MAtMgAyQKboqV7FX3Df@khH4a$RoGhH-&|Q69gOj=SO~qtoA7^@9A> zq92wgz*4zj^mjoBwMTz3JO?}BRcI$F?qQ?HKzfH_H&pAA8uR&pTNn8h8zF`;U)G>h z?)iy;*Ny7@h*h0x%n5ZH-GG$*tw)={SpR0IIF%( z5u}*T=w!TKUEM08h*2$_fFSLo+w=P)w)t*Nk^^^QRcJ)=sZ7uAM*-^t3BZjF_b0~a zA1X-*jTyxffQR6~U?G%9_ibUn7QO>=H}J~NJr`?&ri(;`EC|X}#TV!NXE^PwToIlF ehr{7;ToxZO;kyQkHU7A# zXXs&IB>bF?nsjUj&o2v7H;qT9zJbE;_T-m)d;i}rnM~1=oi$xKV$EQ)J7x3}p|%4+ zLtd&fV0rp=fkAm0WvG&jVAT$wJq^on&7vz?kTqsvasZeEJ&wr(Y9;8Qw~dU=t{f3VP5z;6I({XcF2zqqr@v8kL;l}pe_I{^ zr1FQee-xCd&e>m#jKPt}Q|L&vsM%R77&uE5Sin{fpEM_ZMa6fm(L&uf^BgF|}l(qPIHW*a1Tpd&9C)Yj*1A7kc2Dqcpe!Y)=0^ z<4J>|ysBCT!egI;oDU~>EWfZLHgE^91!b0z<#J$ET-u3+@t{#A>Y?0R6+h!wNr@1} l3;1(IWDF9CL?V#@_y8jP>|$DW^Bn*H002ovPDHLkV1g`%}i+xLIqz1Uuu7%K-+95CtsrD(kqJdw zFUkeIWo49&Z||!p99nKv%bIE?WCye@!)0jE6ULgsGdvl9&h(mO7N$fK)Lz=Ob_qsW zWafD?04!bBK7`gD$vlh9JUarw9(3(VMGxV&qh%)2dC>NyBkBy7g3-&H*V94g`}1s> z?39v$@K<^N$_Ria|83q+gmE>z9}HrU39?WopH9A+pJN`DD?3YJl-_-%jy)PWbyJbFIA2YK*8>>V?1jlDFr!CLc5FUJ4-e})fNB%0000G Z!W%_sCZXBDQBeQ@002ovPDHLkV1k>X!|MP5 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00028.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00028.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00029.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00029.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00033.png b/tests_zemu/snapshots/s-fee-bump-tx-hide-sequence/00033.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEP)$-~WMoXb;Xfkw^%FES3FEEhRrJ2$F_C2q9!v7EIXh=a|LX)ttl%)|gki zLi0u^AlRkcSF~=i&86Y?Sx(Qg#tx%j5ezc{TC!6SW&e$=aM@Xje(eix0<;QRXk&Xp z3)c$V1ZdSfEsx`cPGEM1IRo?wsaquW!QiLpobSP(ztxq|f3TT|Q>h<7<4p#gP5poy z@=4qY)yKj)K*C)J$x&og4b5IGN2o;B+8vNJ60pW}v7 zgg=kdg$$(0c2v0h@2LeDb$s1t&)8#iE4Fso^e&vq_-bghy*_}#5#93ycrvgL&yfBH xQLZn$V(LjxK7Xl{oR8*kg;hcbA%u`|`2ktP}~002ovPDHLkV1mTey6OM` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00002.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7be8d935d82b3e0be8541f14fdf25be66cddf3bf GIT binary patch literal 411 zcmV;M0c8G(P)rhZYADu>)isH=@Fz^L{?e=>+cB&b4>?42ySp|p$A@*@3Ct2Srou=Emja?)yg5^e(TU3P zn)O$^HjUamshNAka`W{q$@8pQ9-Gpn>XG>VOT-(3an+0ydDkEAw zv~Ku%^F**c0x+UCS>IIfLRNXX7xB378 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00003.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb6946800fed4ba03c4f45a72328994b440e76e GIT binary patch literal 350 zcmV-k0iphhP)~;ynQ(BHA}1qGfGaF1bo{ zco@sqdjfx8deL(t1Rzgp7I)vuhS5VBEG@5wkwgQ-CZ5RzQPagwEr{i7zb^5kIG<=0skoKY*&p zP=6ST)KGsgh=C{Ag*@>&hxe`OSw8Bpa915ByXwXG^ozIPlj4@rO-G{$fc@)^0T2Ya zh!tGAJ+%u*-oz|LsHj_zo&0)ita9H$%oQM!h5jHsB>)ZVe{VcCs|RgCF&VM~WM-vg wl#eVHNv*n>XFdCozZRxEoB;p;005rN0bLi)+)Ep2EC2ui07*qoM6N<$f=~{WWdHyG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00004.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3118afd38a92fb5de21a48318c5860247e980541 GIT binary patch literal 322 zcmV-I0lof-P)=}K9dBy~6jHJ@ZHt|Dt}t=Gv4)kSSwNf4c;5h@Nj{Z|&0cL94lO1`feg~=|Q~hofq^A0vVGJzcDr5=z zK0J-9-xWJq0|6*!%49BXczp0WK};UI=5{LV=z5&4ci!;S_77?qu+g|O-Ws17 zaO$sY7})f86@YE+^xZ&h08$JdRt*hm!>|T21By3X#oDL5UD=hDn=m1S5JCtH9|Q)A UWPa}4YXATM07*qoM6N<$g6bEFv;Y7A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00005.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..368711bc9abdf71c707b99f578164e96bc477e47 GIT binary patch literal 341 zcmV-b0jmCqP)Vds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00006.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..0d19a3361522face49e636dd3a95e485a6a77c1b GIT binary patch literal 343 zcmV-d0jU0oP)EYTexBBFgGB3f3>@{_B~ z2@k%!qdV{b-HTo_LIBD^oy6U@x?uE>8*|HFljO*vRMo0kv%uR}-r|kj8Epn6mQ`CM znlt9mXAnIFK#^6_QSx)b62vRI1E)x-KL>1NdYS~U5EEgbjTmwVoB9zGhS_;kPp9j1=k^Nxv_b!VCj#402qTD z#BM>qK?-8bs|cND3bIq4la1Hi7np7a@EiZWnJxed_TM;;$!f+F1itV+qV(u4i?jep p+t6y;T4w*Aew+aS0000?#s?pt`TFn>^OFDo002ovPDHLkV1lG}kXrx% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00007.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00009.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..568effefaea7e84eb02704b46bb0e2907598a83e GIT binary patch literal 490 zcmVH9x$7U{wnkKyu*5w&UgR;@)uKw{{&1wjx5zskc|-?5+7zZ&GL!Y&;9 z|3YbXvTi9LPMKq87bFZWl3wH$(+6Szx98YTgWd)|ebvd3JzM0#wo7fL82-w!B=SA- zouj2yHNQ69*TzA-qG&+V>Y|bk{v36wJYI6O%_G{cJzQ|pihQ3EfGRmczB+p#Pl#c$ znG%3({f$a$Y3E3@SDyf$_~mIJUI36;nvygwdei9T;W;$_UO1V~4UV1u_1@oB2LNgK z1@C_df~&*(lZhCtB&yI#&Q50CP;$)@yPI0elg|b6nlO>qH1J!dIEyc#4Qkq|R&jTM zcZjxItac!-HC~Kg#SR)cnn1W}r)8nmMi%cT!Md{gMNDM$+cM})O=oEUT(0ERzf*d& zi87^FS<^^0vtbUvh?KE+8i+ue=-XeaKAE=0?dQ3m|IrYD5e>^G92+&p=Acm2>@Bo3j&wFwt=KX>}84ufK^0$O3&uvfcvlDZmPj+*Ns~7 gK@bE%5Cr3S1L@gbmKPbSm;e9(07*qoM6N<$f~yJU4FCWD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00010.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..521170f7e3a4bba94dc782a39ab1183a61e8a241 GIT binary patch literal 495 zcmV^s-+)wXnhpAvv3B|^S3n;0I?_SB1D zOl+nEpuTwQv!&X`)Kw$RUcCbN#IIKa@qz*Ar3uO9^`0Y^+Xj!FL-X&2levB`8rc2c zdq1rXfFYxAs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00011.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..5223728169aea836462952a356805f14571033c8 GIT binary patch literal 479 zcmV<50U-W~P)JoYEU#ID4g41#ASo4IbT1OWH8Ik~#nxR;oJrsZ7M{rGU zh9qF>5Nibbd8OO4zW_S$;n#qopn!TwN{XD_hB~8s`4}3%FC0w&zUad4|33QL>;z~U z?hyS&U_zbIA57+8COHeuM2Wy_9i>VpqFMONeB}ITv}>KfRi3c2ANdNs=VFD<6Zx VWRiB3ZtDO5002ovPDHLkV1jPd-GcxC literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00012.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..eea1f103406ededba3a0c1f8f1539a5a7cfd7eb3 GIT binary patch literal 424 zcmV;Z0ayNsP)V!$=W*6YGiyo#)-ZN+AF8Q*F?6QG?Q^-Bc#&zzpYOW93XZ7 zd+YllV`^A`GVsAlkcC$AZR9QUc+PG;{yzAq!*+`2E&p1MYxt%!iKLQPKKf`JeGCal zzS#mljnPObwbvX$PhtFNsFFA|&VV%!mJw$j-MDc;mDqgdzFC(U92~}x(foOq4oUesK(=UONO!<85!{0!=~f>`maq0r4M1{x)uvPz5On00000U^Q=KdpGl? SktUn~0000c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00015.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00016.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00020.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-equal-signer/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEP)$-~WMoXb;Xfkw^%FES3FEEhRrJ2$F_C2q9!v7EIXh=a|LX)ttl%)|gki zLi0u^AlRkcSF~=i&86Y?Sx(Qg#tx%j5ezc{TC!6SW&e$=aM@Xje(eix0<;QRXk&Xp z3)c$V1ZdSfEsx`cPGEM1IRo?wsaquW!QiLpobSP(ztxq|f3TT|Q>h<7<4p#gP5poy z@=4qY)yKj)K*C)J$x&og4b5IGN2o;B+8vNJ60pW}v7 zgg=kdg$$(0c2v0h@2LeDb$s1t&)8#iE4Fso^e&vq_-bghy*_}#5#93ycrvgL&yfBH xQLZn$V(LjxK7Xl{oR8*kg;hcbA%u`|`2ktP}~002ovPDHLkV1mTey6OM` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..15b92f5796daa037bf08fd1c24ca5e8289741696 GIT binary patch literal 507 zcmVNV5i$}i z(zU?g>WFdCPR4i8SZX+Edo-dY9jS}#C$s}_A0IxaIzM(Va-=C}e`i?y4PZvZui1TW(7w(kZXBuLi{G1Uw}`OnEmFqSY?4`CwM||6Lm$fI zllsgDR`<#Nc2WT>!&_zlT$EI2_75g&a3;A6oyljCK@AnBD^=s{37@K>iGOa}5p>7g z8jdj3-U>ofGQ?4|QvdVgsnpi8#`GG3(OcRUV#tvI>?{BP002ovPDHLkV1fnG>M8&L literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..2b9f76fd280b6395a19d87a9934c6d4d3aae9ec4 GIT binary patch literal 495 zcmVgXXk&2A!dP2r%5emD~nNm&Tqoogu(KmOcY&q^186}gk zF}>5p$_bz`;mjR2^~6{-26O^L<4&mvHYg*c{OF`bWX_&Tn4}q+Gv_n``gXSh`*bSl z%tf7KcVmIjJz#z{utA?5!`iRx`rvHFyaMQ}cD)I8iYk#J$)rW!?+Q|Y-4X8g@0ocS lJlKC?i8>=CNs=T<2>&^eUZ%tg3~T@Z002ovPDHLkV1j8YioeFY}gGK6Y=lxT#tv5Az9~0PM7-hP(}5<|kcQ`qM6g z(7BoX4fqGN?w+tRW==pG&ZXa2Q^CNOg!LstT1iSuz4XyG9uTH%Qk4-z^&xZ^+ef ii_|1Zk|arzoACjBVQ}JgLIl$Q0000{&FOAb9@hpm_&yEY-K-4c<*+nz7vAFofeXi{>40 z3CdKqGRyIqMXdnkc1|mXmJHnZEoZt#s;Jf=$xh^vnPrt@YSUX@8j;7G`^6(X;zjW) z02Otg?7M@cI~;ynQ(BHA}1qGfGaF1bo{ zco@sqdjfx8deL(t1Rzgp7I)vuhS5VBEG@5wkwgQ-CZ5RzQPagwEr{i7zb^5kIG<=0skoKY*&p zP=6ST)KGsgh=C{Ag*@>&hxe`OSw8Bpa915ByXwXG^ozIPlj4@rO-G{$fc@)^0T2Ya zh!tGAJ+%u*-oz|LsHj_zo&0)ita9H$%oQM!h5jHsB>)ZVe{VcCs|RgCF&VM~WM-vg wl#eVHNv*n>XFdCozZRxEoB;p;005rN0bLi)+)Ep2EC2ui07*qoM6N<$f=~{WWdHyG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..3118afd38a92fb5de21a48318c5860247e980541 GIT binary patch literal 322 zcmV-I0lof-P)=}K9dBy~6jHJ@ZHt|Dt}t=Gv4)kSSwNf4c;5h@Nj{Z|&0cL94lO1`feg~=|Q~hofq^A0vVGJzcDr5=z zK0J-9-xWJq0|6*!%49BXczp0WK};UI=5{LV=z5&4ci!;S_77?qu+g|O-Ws17 zaO$sY7})f86@YE+^xZ&h08$JdRt*hm!>|T21By3X#oDL5UD=hDn=m1S5JCtH9|Q)A UWPa}4YXATM07*qoM6N<$g6bEFv;Y7A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..368711bc9abdf71c707b99f578164e96bc477e47 GIT binary patch literal 341 zcmV-b0jmCqP)Vds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00009.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..0d19a3361522face49e636dd3a95e485a6a77c1b GIT binary patch literal 343 zcmV-d0jU0oP)EYTexBBFgGB3f3>@{_B~ z2@k%!qdV{b-HTo_LIBD^oy6U@x?uE>8*|HFljO*vRMo0kv%uR}-r|kj8Epn6mQ`CM znlt9mXAnIFK#^6_QSx)b62vRI1E)x-KL>1NdYS~U5EEgbjTmwVoB9zGhS_;kPp9j1=k^Nxv_b!VCj#402qTD z#BM>qK?-8bs|cND3bIq4la1Hi7np7a@EiZWnJxed_TM;;$!f+F1itV+qV(u4i?jep p+t6y;T4w*Aew+aS0000?#s?pt`TFn>^OFDo002ovPDHLkV1lG}kXrx% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..568effefaea7e84eb02704b46bb0e2907598a83e GIT binary patch literal 490 zcmVH9x$7U{wnkKyu*5w&UgR;@)uKw{{&1wjx5zskc|-?5+7zZ&GL!Y&;9 z|3YbXvTi9LPMKq87bFZWl3wH$(+6Szx98YTgWd)|ebvd3JzM0#wo7fL82-w!B=SA- zouj2yHNQ69*TzA-qG&+V>Y|bk{v36wJYI6O%_G{cJzQ|pihQ3EfGRmczB+p#Pl#c$ znG%3({f$a$Y3E3@SDyf$_~mIJUI36;nvygwdei9T;W;$_UO1V~4UV1u_1@oB2LNgK z1@C_df~&*(lZhCtB&yI#&Q50CP;$)@yPI0elg|b6nlO>qH1J!dIEyc#4Qkq|R&jTM zcZjxItac!-HC~Kg#SR)cnn1W}r)8nmMi%cT!Md{gMNDM$+cM})O=oEUT(0ERzf*d& zi87^FS<^^0vtbUvh?KE+8i+ue=-XeaKAE=0?dQ3m|IrYD5e>^G92+&p=Acm2>@Bo3j&wFwt=KX>}84ufK^0$O3&uvfcvlDZmPj+*Ns~7 gK@bE%5Cr3S1L@gbmKPbSm;e9(07*qoM6N<$f~yJU4FCWD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..521170f7e3a4bba94dc782a39ab1183a61e8a241 GIT binary patch literal 495 zcmV^s-+)wXnhpAvv3B|^S3n;0I?_SB1D zOl+nEpuTwQv!&X`)Kw$RUcCbN#IIKa@qz*Ar3uO9^`0Y^+Xj!FL-X&2levB`8rc2c zdq1rXfFYxAs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..5223728169aea836462952a356805f14571033c8 GIT binary patch literal 479 zcmV<50U-W~P)JoYEU#ID4g41#ASo4IbT1OWH8Ik~#nxR;oJrsZ7M{rGU zh9qF>5Nibbd8OO4zW_S$;n#qopn!TwN{XD_hB~8s`4}3%FC0w&zUad4|33QL>;z~U z?hyS&U_zbIA57+8COHeuM2Wy_9i>VpqFMONeB}ITv}>KfRi3c2ANdNs=VFD<6Zx VWRiB3ZtDO5002ovPDHLkV1jPd-GcxC literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..eea1f103406ededba3a0c1f8f1539a5a7cfd7eb3 GIT binary patch literal 424 zcmV;Z0ayNsP)V!$=W*6YGiyo#)-ZN+AF8Q*F?6QG?Q^-Bc#&zzpYOW93XZ7 zd+YllV`^A`GVsAlkcC$AZR9QUc+PG;{yzAq!*+`2E&p1MYxt%!iKLQPKKf`JeGCal zzS#mljnPObwbvX$PhtFNsFFA|&VV%!mJw$j-MDc;mDqgdzFC(U92~}x(foOq4oUesK(=UONO!<85!{0!=~f>`maq0r4M1{x)uvPz5On00000U^Q=KdpGl? SktUn~0000c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00018.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00019.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00023.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-fee-source-not-equal-signer/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEP)$-~WMoXb;Xfkw^%FES3FEEhRrJ2$F_C2q9!v7EIXh=a|LX)ttl%)|gki zLi0u^AlRkcSF~=i&86Y?Sx(Qg#tx%j5ezc{TC!6SW&e$=aM@Xje(eix0<;QRXk&Xp z3)c$V1ZdSfEsx`cPGEM1IRo?wsaquW!QiLpobSP(ztxq|f3TT|Q>h<7<4p#gP5poy z@=4qY)yKj)K*C)J$x&og4b5IGN2o;B+8vNJ60pW}v7 zgg=kdg$$(0c2v0h@2LeDb$s1t&)8#iE4Fso^e&vq_-bghy*_}#5#93ycrvgL&yfBH xQLZn$V(LjxK7Xl{oR8*kg;hcbA%u`|`2ktP}~002ovPDHLkV1mTey6OM` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb97f712b437a937c3334aeed674717dc14ad81 GIT binary patch literal 474 zcmV<00VV#4P)y*+XIg4T5p8lq5-#vVf8yb)(bWO_O$!xHa}5@RN7cstQA|Bch%)J6T`QX9mClH zh!k)^g|!&e6mcW&aTwQBvHgI$i|7pKE|)-tLgiya(%~$cXEJx=h@JrHI7?#e}ri`*D#bV4H@{FFisJsr5UO1-Q-~Hcq0(Z^LxRCxLJtr*Z(Gm*LrZTfuSt)pxL(BuSDaNs^rT156f7-hhCv!lgL`jk)$z6Fw8hgJ!Z9m7=dv(Wn zzjjB(HS@a($iRx?wO|WyvU-TedZc{EV#oN6GSozFuGV(*tIO|94FCLEz)k^QYGF2L z?ngX`J*vC7WxRZ_dOy)8KuwoGrlyvU-Kx&XQqLA?XE%=M1&|Zx8DUq$@6(ya7N-_(rL4nE%?j&*;BJhk?Ss{wjiath{??|acOu(Xrk4goZ^CM~U>jWbN;wNNB^+aZ zJGu*ywPL+&47dP+4aE#kK(Q#dd`Qb|_HijeGDnZ+{xJ!Ou$8Zf$UXu7S?=Au*H2ch z+M!PLp6(Fbtkwd6R``)aAj4&)l&q|-0H_8>X)l00wyjxX!m1=F{yev#=0Nk38H`zR n4nHks{Hu{9Ns=T<@NzTe8(%AFyY5P8|zE*dP z=i}|Dx)y$y2D)Qa@wX5Yu(NuI$5v9GakKBZMHzC@i_2SXyt;lC&G75r0#*umXd4S* zcRgYu_NZThV*T^fM~U76X1D}xTH5xpOO+Wc5!~B-ruS|f(G#Etj**D}hJWV|N1p5K z4xF9nG*quO{t!0PP@vw*g=_K<24^_1rW-`Ee=azY;g8))@l>N|e9qTt)bgQKy5EvOprFXkF zYgQt}={@INt?7Oe6JTD-yS*pPGP=4vCr$#=k&p}<6lOgwuDE;H5ENcCH4QF8a&EkB z1Uc*kl)dI)W4`!3Afz7Bjc=G5I?SKWi+_Z8UdUL)oPT+#N|Gc=k|gnY0nLSA%T3S* Q>;M1&07*qoM6N<$g42T9Pyhe` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..723c33e316dd451da42e98f35a449f548a6fd357 GIT binary patch literal 453 zcmV;$0XqJPP)Ah5jdVy|`+8-KKyNasBuM}oep2Z77s3@yUR zK5#ecya#LnboW^AyS@Ver*r5Pl|<;oPZgGz2+~Sb66Auf(O3C*K$DGs0}5&EX`T9o z)^oh?CJlh3_$cqsg>kice=s%%GqET%lj40Cp2Aa^0Qi+X&9j*XT0@Sl>kCsJOQ}ob zWO#&6$i>u3p*eXtR~DA!i}Vg+D09*yt8+)*LJtO02)E~Hl)_ulOc!!QiPFsk?gQJKi_d{9?p00000NkvXXu0mjfwSdrz literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e5771e3e5f6af7db280a985415b1a934df213b98 GIT binary patch literal 390 zcmV;10eSw3P)Oq6P8c-hFsEWp5G^G^5fr zFn(kWWue?-ViGRaPNIP%ywADaE1%5vqgE^Q9qR>o^PR`O$!vw1^n!NfL?gQ*kHJd3?En$`0v1YJ)>j-t5Y7L`FxhkK8 z<3Hi1mEvnzHDF(kuHtM-4#vR*ltQ^8r3$M><+TyVAxM#uiyZ_m#}m-B8-6y9sa8Wf kSS<|&0000007OLe2C10g7g9>gr2qf`07*qoM6N<$f;(5N82|tP literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb6946800fed4ba03c4f45a72328994b440e76e GIT binary patch literal 350 zcmV-k0iphhP)~;ynQ(BHA}1qGfGaF1bo{ zco@sqdjfx8deL(t1Rzgp7I)vuhS5VBEG@5wkwgQ-CZ5RzQPagwEr{i7zb^5kIG<=0skoKY*&p zP=6ST)KGsgh=C{Ag*@>&hxe`OSw8Bpa915ByXwXG^ozIPlj4@rO-G{$fc@)^0T2Ya zh!tGAJ+%u*-oz|LsHj_zo&0)ita9H$%oQM!h5jHsB>)ZVe{VcCs|RgCF&VM~WM-vg wl#eVHNv*n>XFdCozZRxEoB;p;005rN0bLi)+)Ep2EC2ui07*qoM6N<$f=~{WWdHyG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..3118afd38a92fb5de21a48318c5860247e980541 GIT binary patch literal 322 zcmV-I0lof-P)=}K9dBy~6jHJ@ZHt|Dt}t=Gv4)kSSwNf4c;5h@Nj{Z|&0cL94lO1`feg~=|Q~hofq^A0vVGJzcDr5=z zK0J-9-xWJq0|6*!%49BXczp0WK};UI=5{LV=z5&4ci!;S_77?qu+g|O-Ws17 zaO$sY7})f86@YE+^xZ&h08$JdRt*hm!>|T21By3X#oDL5UD=hDn=m1S5JCtH9|Q)A UWPa}4YXATM07*qoM6N<$g6bEFv;Y7A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00009.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..368711bc9abdf71c707b99f578164e96bc477e47 GIT binary patch literal 341 zcmV-b0jmCqP)Vds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0d19a3361522face49e636dd3a95e485a6a77c1b GIT binary patch literal 343 zcmV-d0jU0oP)EYTexBBFgGB3f3>@{_B~ z2@k%!qdV{b-HTo_LIBD^oy6U@x?uE>8*|HFljO*vRMo0kv%uR}-r|kj8Epn6mQ`CM znlt9mXAnIFK#^6_QSx)b62vRI1E)x-KL>1NdYS~U5EEgbjTmwVoB9zGhS_;kPp9j1=k^Nxv_b!VCj#402qTD z#BM>qK?-8bs|cND3bIq4la1Hi7np7a@EiZWnJxed_TM;;$!f+F1itV+qV(u4i?jep p+t6y;T4w*Aew+aS0000?#s?pt`TFn>^OFDo002ovPDHLkV1lG}kXrx% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..568effefaea7e84eb02704b46bb0e2907598a83e GIT binary patch literal 490 zcmVH9x$7U{wnkKyu*5w&UgR;@)uKw{{&1wjx5zskc|-?5+7zZ&GL!Y&;9 z|3YbXvTi9LPMKq87bFZWl3wH$(+6Szx98YTgWd)|ebvd3JzM0#wo7fL82-w!B=SA- zouj2yHNQ69*TzA-qG&+V>Y|bk{v36wJYI6O%_G{cJzQ|pihQ3EfGRmczB+p#Pl#c$ znG%3({f$a$Y3E3@SDyf$_~mIJUI36;nvygwdei9T;W;$_UO1V~4UV1u_1@oB2LNgK z1@C_df~&*(lZhCtB&yI#&Q50CP;$)@yPI0elg|b6nlO>qH1J!dIEyc#4Qkq|R&jTM zcZjxItac!-HC~Kg#SR)cnn1W}r)8nmMi%cT!Md{gMNDM$+cM})O=oEUT(0ERzf*d& zi87^FS<^^0vtbUvh?KE+8i+ue=-XeaKAE=0?dQ3m|IrYD5e>^G92+&p=Acm2>@Bo3j&wFwt=KX>}84ufK^0$O3&uvfcvlDZmPj+*Ns~7 gK@bE%5Cr3S1L@gbmKPbSm;e9(07*qoM6N<$f~yJU4FCWD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..521170f7e3a4bba94dc782a39ab1183a61e8a241 GIT binary patch literal 495 zcmV^s-+)wXnhpAvv3B|^S3n;0I?_SB1D zOl+nEpuTwQv!&X`)Kw$RUcCbN#IIKa@qz*Ar3uO9^`0Y^+Xj!FL-X&2levB`8rc2c zdq1rXfFYxAs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..5223728169aea836462952a356805f14571033c8 GIT binary patch literal 479 zcmV<50U-W~P)JoYEU#ID4g41#ASo4IbT1OWH8Ik~#nxR;oJrsZ7M{rGU zh9qF>5Nibbd8OO4zW_S$;n#qopn!TwN{XD_hB~8s`4}3%FC0w&zUad4|33QL>;z~U z?hyS&U_zbIA57+8COHeuM2Wy_9i>VpqFMONeB}ITv}>KfRi3c2ANdNs=VFD<6Zx VWRiB3ZtDO5002ovPDHLkV1jPd-GcxC literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..eea1f103406ededba3a0c1f8f1539a5a7cfd7eb3 GIT binary patch literal 424 zcmV;Z0ayNsP)V!$=W*6YGiyo#)-ZN+AF8Q*F?6QG?Q^-Bc#&zzpYOW93XZ7 zd+YllV`^A`GVsAlkcC$AZR9QUc+PG;{yzAq!*+`2E&p1MYxt%!iKLQPKKf`JeGCal zzS#mljnPObwbvX$PhtFNsFFA|&VV%!mJw$j-MDc;mDqgdzFC(U92~}x(foOq4oUesK(=UONO!<85!{0!=~f>`maq0r4M1{x)uvPz5On00000U^Q=KdpGl? SktUn~0000c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00019.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00020.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00024.png b/tests_zemu/snapshots/s-fee-bump-tx-omit-muxed-fee-source-equal-signer/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEP)$-~WMoXb;Xfkw^%FES3FEEhRrJ2$F_C2q9!v7EIXh=a|LX)ttl%)|gki zLi0u^AlRkcSF~=i&86Y?Sx(Qg#tx%j5ezc{TC!6SW&e$=aM@Xje(eix0<;QRXk&Xp z3)c$V1ZdSfEsx`cPGEM1IRo?wsaquW!QiLpobSP(ztxq|f3TT|Q>h<7<4p#gP5poy z@=4qY)yKj)K*C)J$x&og4b5IGN2o;B+8vNJ60pW}v7 zgg=kdg$$(0c2v0h@2LeDb$s1t&)8#iE4Fso^e&vq_-bghy*_}#5#93ycrvgL&yfBH xQLZn$V(LjxK7Xl{oR8*kg;hcbA%u`|`2ktP}~002ovPDHLkV1mTey6OM` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00002.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7be8d935d82b3e0be8541f14fdf25be66cddf3bf GIT binary patch literal 411 zcmV;M0c8G(P)rhZYADu>)isH=@Fz^L{?e=>+cB&b4>?42ySp|p$A@*@3Ct2Srou=Emja?)yg5^e(TU3P zn)O$^HjUamshNAka`W{q$@8pQ9-Gpn>XG>VOT-(3an+0ydDkEAw zv~Ku%^F**c0x+UCS>IIfLRNXX7xB378 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00003.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..726d04ded60f432042bb372dbf66c68874e4f90a GIT binary patch literal 360 zcmV-u0hj)XP)Ko7$ z8S0x+ks9h7gBW;%EaZvlclbP-4&|evC3Te+=}LC1H{{`}W-#62nu^V(hMcZ>m*%B> z%%cGi1i6U)g?)$ek*4@*;0p!-00000Cj0=*tmeMzHotBF0000=}K9dBy~6jHJ@ZHt|Dt}t=Gv4)kSSwNf4c;5h@Nj{Z|&0cL94lO1`feg~=|Q~hofq^A0vVGJzcDr5=z zK0J-9-xWJq0|6*!%49BXczp0WK};UI=5{LV=z5&4ci!;S_77?qu+g|O-Ws17 zaO$sY7})f86@YE+^xZ&h08$JdRt*hm!>|T21By3X#oDL5UD=hDn=m1S5JCtH9|Q)A UWPa}4YXATM07*qoM6N<$g6bEFv;Y7A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00005.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..368711bc9abdf71c707b99f578164e96bc477e47 GIT binary patch literal 341 zcmV-b0jmCqP)Vds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00006.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00007.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00009.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..568effefaea7e84eb02704b46bb0e2907598a83e GIT binary patch literal 490 zcmVH9x$7U{wnkKyu*5w&UgR;@)uKw{{&1wjx5zskc|-?5+7zZ&GL!Y&;9 z|3YbXvTi9LPMKq87bFZWl3wH$(+6Szx98YTgWd)|ebvd3JzM0#wo7fL82-w!B=SA- zouj2yHNQ69*TzA-qG&+V>Y|bk{v36wJYI6O%_G{cJzQ|pihQ3EfGRmczB+p#Pl#c$ znG%3({f$a$Y3E3@SDyf$_~mIJUI36;nvygwdei9T;W;$_UO1V~4UV1u_1@oB2LNgK z1@C_df~&*(lZhCtB&yI#&Q50CP;$)@yPI0elg|b6nlO>qH1J!dIEyc#4Qkq|R&jTM zcZjxItac!-HC~Kg#SR)cnn1W}r)8nmMi%cT!Md{gMNDM$+cM})O=oEUT(0ERzf*d& zi87^FS<^^0vtbUvh?KE+8i+ue=-XeaKAE=0?dQ3m|IrYD5e>^G92+&p=Acm2>@Bo3j&wFwt=KX>}84ufK^0$O3&uvfcvlDZmPj+*Ns~7 gK@bE%5Cr3S1L@gbmKPbSm;e9(07*qoM6N<$f~yJU4FCWD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00010.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..521170f7e3a4bba94dc782a39ab1183a61e8a241 GIT binary patch literal 495 zcmV^s-+)wXnhpAvv3B|^S3n;0I?_SB1D zOl+nEpuTwQv!&X`)Kw$RUcCbN#IIKa@qz*Ar3uO9^`0Y^+Xj!FL-X&2levB`8rc2c zdq1rXfFYxAs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00011.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..5223728169aea836462952a356805f14571033c8 GIT binary patch literal 479 zcmV<50U-W~P)JoYEU#ID4g41#ASo4IbT1OWH8Ik~#nxR;oJrsZ7M{rGU zh9qF>5Nibbd8OO4zW_S$;n#qopn!TwN{XD_hB~8s`4}3%FC0w&zUad4|33QL>;z~U z?hyS&U_zbIA57+8COHeuM2Wy_9i>VpqFMONeB}ITv}>KfRi3c2ANdNs=VFD<6Zx VWRiB3ZtDO5002ovPDHLkV1jPd-GcxC literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00012.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..eea1f103406ededba3a0c1f8f1539a5a7cfd7eb3 GIT binary patch literal 424 zcmV;Z0ayNsP)V!$=W*6YGiyo#)-ZN+AF8Q*F?6QG?Q^-Bc#&zzpYOW93XZ7 zd+YllV`^A`GVsAlkcC$AZR9QUc+PG;{yzAq!*+`2E&p1MYxt%!iKLQPKKf`JeGCal zzS#mljnPObwbvX$PhtFNsFFA|&VV%!mJw$j-MDc;mDqgdzFC(U92~}x(foOq4oUesK(=UONO!<85!{0!=~f>`maq0r4M1{x)uvPz5On00000U^Q=KdpGl? SktUn~0000sn3{L_e4G6Tb=a@ z?)?2?$6aO{(|va&HoqsQKCL)2qOeDQM2;>|-!JAS(ud|Rx@+6vo^!ktQ>ROfxTWfn zTA!FTGEad1={V?4YYiz57OSmEtB-0l_z6hKlpg!~8mDtN`dYLA`O?jM>4bv1FCzDl zlxvCWzQjBMX6Kaberx8tSCZOP^yFellh(9>U!v#yg8UnWhJ^Qv1vpCfWJI%A0GHDi wIyD(Px#07*qoM6N<$f&!+7(EtDd literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00014.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00017.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00018.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00019.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00020.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z09@5ACg%P6PJPD2x;Hu;z8Cp> z!gh%ne;}tX(|z|$Z2p+Q>ad8y9{)#_=o0mOF_TCinoG9BeJ1J^kj}*1?V3u}CAlkL zIfWIVe@aif!&*bCCz}ecR#nbv*LelxG<7HZ)*&-GC}+|GD3@;DOMw>azKGmIQqEz$ z?n}%HFgvFd_ggdG{U^D1v>sdyapf*)P3!n2y7(95*;N`c>x=tRvOVdv=^^E`g-#8| tGni@UTL{MJeHa?;1poj50001H`2bzZnHVWBR?+|f002ovPDHLkV1g0*f9wDN literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00024.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000`iE1sy?@*1@QIp7s-POW_- zv{3{8@JBHZnErlSP@uWsm<5W3^ss6M&=k*DGs{`PnAA=#?trENb&(lp7+;`P((DlP z`sU&e5NTHJM?lq16+fv1#Ep*bS9}wuhRzL8Orf^CMhqAVPA|_NN!xAl7ZYr6uep)` z)4X4ncK|Z^K=0p$;Og}LVzLkJBv+w3IXn3!yw;9oCp#Ev5d%9#x=djcesQDOfCjT( zoJiBfTDUfTCKgZFgU42FW@z!}-oTD#;wfz)h78i3wR>b}&N=gC<}et(hV+gFkpEei z>NDXEFnRxfsPVgLRtPUhuWWh`cN_MHBK*OFDvN6}hjUZQK==rJ25>gPv)P2{?|}Fh z36CpzExmn!zrBn#!7tmbGrRAtBJXCg)BuTOle-O=p32%j^n*aa+07*qoM6N<$g7Dz!q5uE@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00026.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00026.png new file mode 100644 index 0000000000000000000000000000000000000000..132b93a5a93bb8aa34f22883c2736effe4b9b8d3 GIT binary patch literal 488 zcmVP)<|G^&gfFaly!yB`m7{jtHowiW24Z-1XI2?|4yk9@R=0$o4^y_N;?U^3a z!$3&joOT7>UdN6vNm4hBN2h)PiQnx>ALBUw$44TQwD_c^%PndPHoKFo9|Y|L7z6$& z${5=d*EJRtL#fFlUesgN3CL#}w&Ai(M-Efxi2*P<0mOk+WEvdf1!_19VtLWCB`YyG z0U}7%J_I(U{MAtMgAyQKboqV7FX3Df@khH4a$RoGhH-&|Q69gOj=SO~qtoA7^@9A> zq92wgz*4zj^mjoBwMTz3JO?}BRcI$F?qQ?HKzfH_H&pAA8uR&pTNn8h8zF`;U)G>h z?)iy;*Ny7@h*h0x%n5ZH-GG$*tw)={SpR0IIF%( z5u}*T=w!TKUEM08h*2$_fFSLo+w=P)w)t*Nk^^^QRcJ)=sZ7uAM*-^t3BZjF_b0~a zA1X-*jTyxffQR6~U?G%9_ibUn7QO>=H}J~NJr`?&ri(;`EC|X}#TV!NXE^PwToIlF ehr{7;ToxZO;kyQkHU7A# zXXs&IB>bF?nsjUj&o2v7H;qT9zJbE;_T-m)d;i}rnM~1=oi$xKV$EQ)J7x3}p|%4+ zLtd&fV0rp=fkAm0WvG&jVAT$wJq^on&7vz?kTqsvasZeEJ&wr(Y9;8Qw~dU=t{f3VP5z;6I({XcF2zqqr@v8kL;l}pe_I{^ zr1FQee-xCd&e>m#jKPt}Q|L&vsM%R77&uE5Sin{fpEM_ZMa6fm(L&uf^BgF|}l(qPIHW*a1Tpd&9C)Yj*1A7kc2Dqcpe!Y)=0^ z<4J>|ysBCT!egI;oDU~>EWfZLHgE^91!b0z<#J$ET-u3+@t{#A>Y?0R6+h!wNr@1} l3;1(IWDF9CL?V#@_y8jP>|$DW^Bn*H002ovPDHLkV1g`%}i+xLIqz1Uuu7%K-+95CtsrD(kqJdw zFUkeIWo49&Z||!p99nKv%bIE?WCye@!)0jE6ULgsGdvl9&h(mO7N$fK)Lz=Ob_qsW zWafD?04!bBK7`gD$vlh9JUarw9(3(VMGxV&qh%)2dC>NyBkBy7g3-&H*V94g`}1s> z?39v$@K<^N$_Ria|83q+gmE>z9}HrU39?WopH9A+pJN`DD?3YJl-_-%jy)PWbyJbFIA2YK*8>>V?1jlDFr!CLc5FUJ4-e})fNB%0000G Z!W%_sCZXBDQBeQ@002ovPDHLkV1k>X!|MP5 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00029.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00029.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00030.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00030.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-reject/00034.png b/tests_zemu/snapshots/s-fee-bump-tx-reject/00034.png new file mode 100644 index 0000000000000000000000000000000000000000..a957ab9fbdfa16968d3378cedf5bff5f5c1c2ca0 GIT binary patch literal 325 zcmV-L0lNN)P)q6^JyNy1C;^R@_<==Guu`NFomCRIMp}43`kUR)2eT*23!bE1A0Z65JCgW zs@v;}cyI=Qzlra8$UXQpAO`4y*6TQ#JtzzSS3lDXk|OeN5PmzCLmsS09;`emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEP)$-~WMoXb;Xfkw^%FES3FEEhRrJ2$F_C2q9!v7EIXh=a|LX)ttl%)|gki zLi0u^AlRkcSF~=i&86Y?Sx(Qg#tx%j5ezc{TC!6SW&e$=aM@Xje(eix0<;QRXk&Xp z3)c$V1ZdSfEsx`cPGEM1IRo?wsaquW!QiLpobSP(ztxq|f3TT|Q>h<7<4p#gP5poy z@=4qY)yKj)K*C)J$x&og4b5IGN2o;B+8vNJ60pW}v7 zgg=kdg$$(0c2v0h@2LeDb$s1t&)8#iE4Fso^e&vq_-bghy*_}#5#93ycrvgL&yfBH xQLZn$V(LjxK7Xl{oR8*kg;hcbA%u`|`2ktP}~002ovPDHLkV1mTey6OM` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00002.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb97f712b437a937c3334aeed674717dc14ad81 GIT binary patch literal 474 zcmV<00VV#4P)y*+XIg4T5p8lq5-#vVf8yb)(bWO_O$!xHa}5@RN7cstQA|Bch%)J6T`QX9mClH zh!k)^g|!&e6mcW&aTwQBvHgI$i|7pKE|)-tLgiya(%~$cXEJx=h@JrHI7?#e}ri`*D#bV4H@{FFisJsr5UO1-Q-~Hcq0(Z^LxRCxLJtr*Z(Gm*LrZTfuSt)pxL(BuSDaNs^rT156f7-hhCv!lgL`jk)$z6Fw8hgJ!Z9m7=dv(Wn zzjjB(HS@a($iRx?wO|WyvU-TedZc{EV#oN6GSozFuGV(*tIO|94FCLEz)k^QYGF2L z?ngX`J*vC7WxRZ_dOy)8KuwoGrlyvU-Kx&XQqLA?XE%=M1&|Zx8DUq$@6(ya7N-_(rL4nE%?j&*;BJhk?Ss{wjiath{??|acOu(Xrk4goZ^CM~U>jWbN;wNNB^+aZ zJGu*ywPL+&47dP+4aE#kK(Q#dd`Qb|_HijeGDnZ+{xJ!Ou$8Zf$UXu7S?=Au*H2ch z+M!PLp6(Fbtkwd6R``)aAj4&)l&q|-0H_8>X)l00wyjxX!m1=F{yev#=0Nk38H`zR n4nHks{Hu{9Ns=T<@NzTe8(%AFyY5P8|zE*dP z=i}|Dx)y$y2D)Qa@wX5Yu(NuI$5v9GakKBZMHzC@i_2SXyt;lC&G75r0#*umXd4S* zcRgYu_NZThV*T^fM~U76X1D}xTH5xpOO+Wc5!~B-ruS|f(G#Etj**D}hJWV|N1p5K z4xF9nG*quO{t!0PP@vw*g=_K<24^_1rW-`Ee=azY;g8))@l>N|e9qTt)bgQKy5EvOprFXkF zYgQt}={@INt?7Oe6JTD-yS*pPGP=4vCr$#=k&p}<6lOgwuDE;H5ENcCH4QF8a&EkB z1Uc*kl)dI)W4`!3Afz7Bjc=G5I?SKWi+_Z8UdUL)oPT+#N|Gc=k|gnY0nLSA%T3S* Q>;M1&07*qoM6N<$g42T9Pyhe` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00005.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..723c33e316dd451da42e98f35a449f548a6fd357 GIT binary patch literal 453 zcmV;$0XqJPP)Ah5jdVy|`+8-KKyNasBuM}oep2Z77s3@yUR zK5#ecya#LnboW^AyS@Ver*r5Pl|<;oPZgGz2+~Sb66Auf(O3C*K$DGs0}5&EX`T9o z)^oh?CJlh3_$cqsg>kice=s%%GqET%lj40Cp2Aa^0Qi+X&9j*XT0@Sl>kCsJOQ}ob zWO#&6$i>u3p*eXtR~DA!i}Vg+D09*yt8+)*LJtO02)E~Hl)_ulOc!!QiPFsk?gQJKi_d{9?p00000NkvXXu0mjfwSdrz literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00006.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e5771e3e5f6af7db280a985415b1a934df213b98 GIT binary patch literal 390 zcmV;10eSw3P)Oq6P8c-hFsEWp5G^G^5fr zFn(kWWue?-ViGRaPNIP%ywADaE1%5vqgE^Q9qR>o^PR`O$!vw1^n!NfL?gQ*kHJd3?En$`0v1YJ)>j-t5Y7L`FxhkK8 z<3Hi1mEvnzHDF(kuHtM-4#vR*ltQ^8r3$M><+TyVAxM#uiyZ_m#}m-B8-6y9sa8Wf kSS<|&0000007OLe2C10g7g9>gr2qf`07*qoM6N<$f;(5N82|tP literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00007.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..726d04ded60f432042bb372dbf66c68874e4f90a GIT binary patch literal 360 zcmV-u0hj)XP)Ko7$ z8S0x+ks9h7gBW;%EaZvlclbP-4&|evC3Te+=}LC1H{{`}W-#62nu^V(hMcZ>m*%B> z%%cGi1i6U)g?)$ek*4@*;0p!-00000Cj0=*tmeMzHotBF0000=}K9dBy~6jHJ@ZHt|Dt}t=Gv4)kSSwNf4c;5h@Nj{Z|&0cL94lO1`feg~=|Q~hofq^A0vVGJzcDr5=z zK0J-9-xWJq0|6*!%49BXczp0WK};UI=5{LV=z5&4ci!;S_77?qu+g|O-Ws17 zaO$sY7})f86@YE+^xZ&h08$JdRt*hm!>|T21By3X#oDL5UD=hDn=m1S5JCtH9|Q)A UWPa}4YXATM07*qoM6N<$g6bEFv;Y7A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00009.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..368711bc9abdf71c707b99f578164e96bc477e47 GIT binary patch literal 341 zcmV-b0jmCqP)Vds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00010.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00011.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00013.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..568effefaea7e84eb02704b46bb0e2907598a83e GIT binary patch literal 490 zcmVH9x$7U{wnkKyu*5w&UgR;@)uKw{{&1wjx5zskc|-?5+7zZ&GL!Y&;9 z|3YbXvTi9LPMKq87bFZWl3wH$(+6Szx98YTgWd)|ebvd3JzM0#wo7fL82-w!B=SA- zouj2yHNQ69*TzA-qG&+V>Y|bk{v36wJYI6O%_G{cJzQ|pihQ3EfGRmczB+p#Pl#c$ znG%3({f$a$Y3E3@SDyf$_~mIJUI36;nvygwdei9T;W;$_UO1V~4UV1u_1@oB2LNgK z1@C_df~&*(lZhCtB&yI#&Q50CP;$)@yPI0elg|b6nlO>qH1J!dIEyc#4Qkq|R&jTM zcZjxItac!-HC~Kg#SR)cnn1W}r)8nmMi%cT!Md{gMNDM$+cM})O=oEUT(0ERzf*d& zi87^FS<^^0vtbUvh?KE+8i+ue=-XeaKAE=0?dQ3m|IrYD5e>^G92+&p=Acm2>@Bo3j&wFwt=KX>}84ufK^0$O3&uvfcvlDZmPj+*Ns~7 gK@bE%5Cr3S1L@gbmKPbSm;e9(07*qoM6N<$f~yJU4FCWD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00014.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..521170f7e3a4bba94dc782a39ab1183a61e8a241 GIT binary patch literal 495 zcmV^s-+)wXnhpAvv3B|^S3n;0I?_SB1D zOl+nEpuTwQv!&X`)Kw$RUcCbN#IIKa@qz*Ar3uO9^`0Y^+Xj!FL-X&2levB`8rc2c zdq1rXfFYxAs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00015.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..5223728169aea836462952a356805f14571033c8 GIT binary patch literal 479 zcmV<50U-W~P)JoYEU#ID4g41#ASo4IbT1OWH8Ik~#nxR;oJrsZ7M{rGU zh9qF>5Nibbd8OO4zW_S$;n#qopn!TwN{XD_hB~8s`4}3%FC0w&zUad4|33QL>;z~U z?hyS&U_zbIA57+8COHeuM2Wy_9i>VpqFMONeB}ITv}>KfRi3c2ANdNs=VFD<6Zx VWRiB3ZtDO5002ovPDHLkV1jPd-GcxC literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00016.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..eea1f103406ededba3a0c1f8f1539a5a7cfd7eb3 GIT binary patch literal 424 zcmV;Z0ayNsP)V!$=W*6YGiyo#)-ZN+AF8Q*F?6QG?Q^-Bc#&zzpYOW93XZ7 zd+YllV`^A`GVsAlkcC$AZR9QUc+PG;{yzAq!*+`2E&p1MYxt%!iKLQPKKf`JeGCal zzS#mljnPObwbvX$PhtFNsFFA|&VV%!mJw$j-MDc;mDqgdzFC(U92~}x(foOq4oUesK(=UONO!<85!{0!=~f>`maq0r4M1{x)uvPz5On00000U^Q=KdpGl? SktUn~0000sn3{L_e4G6Tb=a@ z?)?2?$6aO{(|va&HoqsQKCL)2qOeDQM2;>|-!JAS(ud|Rx@+6vo^!ktQ>ROfxTWfn zTA!FTGEad1={V?4YYiz57OSmEtB-0l_z6hKlpg!~8mDtN`dYLA`O?jM>4bv1FCzDl zlxvCWzQjBMX6Kaberx8tSCZOP^yFellh(9>U!v#yg8UnWhJ^Qv1vpCfWJI%A0GHDi wIyD(Px#07*qoM6N<$f&!+7(EtDd literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00018.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00021.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00022.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00023.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00024.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z09@5ACg%P6PJPD2x;Hu;z8Cp> z!gh%ne;}tX(|z|$Z2p+Q>ad8y9{)#_=o0mOF_TCinoG9BeJ1J^kj}*1?V3u}CAlkL zIfWIVe@aif!&*bCCz}ecR#nbv*LelxG<7HZ)*&-GC}+|GD3@;DOMw>azKGmIQqEz$ z?n}%HFgvFd_ggdG{U^D1v>sdyapf*)P3!n2y7(95*;N`c>x=tRvOVdv=^^E`g-#8| tGni@UTL{MJeHa?;1poj50001H`2bzZnHVWBR?+|f002ovPDHLkV1g0*f9wDN literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00028.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00028.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000`iE1sy?@*1@QIp7s-POW_- zv{3{8@JBHZnErlSP@uWsm<5W3^ss6M&=k*DGs{`PnAA=#?trENb&(lp7+;`P((DlP z`sU&e5NTHJM?lq16+fv1#Ep*bS9}wuhRzL8Orf^CMhqAVPA|_NN!xAl7ZYr6uep)` z)4X4ncK|Z^K=0p$;Og}LVzLkJBv+w3IXn3!yw;9oCp#Ev5d%9#x=djcesQDOfCjT( zoJiBfTDUfTCKgZFgU42FW@z!}-oTD#;wfz)h78i3wR>b}&N=gC<}et(hV+gFkpEei z>NDXEFnRxfsPVgLRtPUhuWWh`cN_MHBK*OFDvN6}hjUZQK==rJ25>gPv)P2{?|}Fh z36CpzExmn!zrBn#!7tmbGrRAtBJXCg)BuTOle-O=p32%j^n*aa+07*qoM6N<$g7Dz!q5uE@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00030.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00030.png new file mode 100644 index 0000000000000000000000000000000000000000..132b93a5a93bb8aa34f22883c2736effe4b9b8d3 GIT binary patch literal 488 zcmVP)<|G^&gfFaly!yB`m7{jtHowiW24Z-1XI2?|4yk9@R=0$o4^y_N;?U^3a z!$3&joOT7>UdN6vNm4hBN2h)PiQnx>ALBUw$44TQwD_c^%PndPHoKFo9|Y|L7z6$& z${5=d*EJRtL#fFlUesgN3CL#}w&Ai(M-Efxi2*P<0mOk+WEvdf1!_19VtLWCB`YyG z0U}7%J_I(U{MAtMgAyQKboqV7FX3Df@khH4a$RoGhH-&|Q69gOj=SO~qtoA7^@9A> zq92wgz*4zj^mjoBwMTz3JO?}BRcI$F?qQ?HKzfH_H&pAA8uR&pTNn8h8zF`;U)G>h z?)iy;*Ny7@h*h0x%n5ZH-GG$*tw)={SpR0IIF%( z5u}*T=w!TKUEM08h*2$_fFSLo+w=P)w)t*Nk^^^QRcJ)=sZ7uAM*-^t3BZjF_b0~a zA1X-*jTyxffQR6~U?G%9_ibUn7QO>=H}J~NJr`?&ri(;`EC|X}#TV!NXE^PwToIlF ehr{7;ToxZO;kyQkHU7A# zXXs&IB>bF?nsjUj&o2v7H;qT9zJbE;_T-m)d;i}rnM~1=oi$xKV$EQ)J7x3}p|%4+ zLtd&fV0rp=fkAm0WvG&jVAT$wJq^on&7vz?kTqsvasZeEJ&wr(Y9;8Qw~dU=t{f3VP5z;6I({XcF2zqqr@v8kL;l}pe_I{^ zr1FQee-xCd&e>m#jKPt}Q|L&vsM%R77&uE5Sin{fpEM_ZMa6fm(L&uf^BgF|}l(qPIHW*a1Tpd&9C)Yj*1A7kc2Dqcpe!Y)=0^ z<4J>|ysBCT!egI;oDU~>EWfZLHgE^91!b0z<#J$ET-u3+@t{#A>Y?0R6+h!wNr@1} l3;1(IWDF9CL?V#@_y8jP>|$DW^Bn*H002ovPDHLkV1g`%}i+xLIqz1Uuu7%K-+95CtsrD(kqJdw zFUkeIWo49&Z||!p99nKv%bIE?WCye@!)0jE6ULgsGdvl9&h(mO7N$fK)Lz=Ob_qsW zWafD?04!bBK7`gD$vlh9JUarw9(3(VMGxV&qh%)2dC>NyBkBy7g3-&H*V94g`}1s> z?39v$@K<^N$_Ria|83q+gmE>z9}HrU39?WopH9A+pJN`DD?3YJl-_-%jy)PWbyJbFIA2YK*8>>V?1jlDFr!CLc5FUJ4-e})fNB%0000G Z!W%_sCZXBDQBeQ@002ovPDHLkV1k>X!|MP5 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00033.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00033.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00034.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00034.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00038.png b/tests_zemu/snapshots/s-fee-bump-tx-with-muxed-fee-source/00038.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEP)$-~WMoXb;Xfkw^%FES3FEEhRrJ2$F_C2q9!v7EIXh=a|LX)ttl%)|gki zLi0u^AlRkcSF~=i&86Y?Sx(Qg#tx%j5ezc{TC!6SW&e$=aM@Xje(eix0<;QRXk&Xp z3)c$V1ZdSfEsx`cPGEM1IRo?wsaquW!QiLpobSP(ztxq|f3TT|Q>h<7<4p#gP5poy z@=4qY)yKj)K*C)J$x&og4b5IGN2o;B+8vNJ60pW}v7 zgg=kdg$$(0c2v0h@2LeDb$s1t&)8#iE4Fso^e&vq_-bghy*_}#5#93ycrvgL&yfBH xQLZn$V(LjxK7Xl{oR8*kg;hcbA%u`|`2ktP}~002ovPDHLkV1mTey6OM` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00002.png b/tests_zemu/snapshots/s-fee-bump-tx/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7be8d935d82b3e0be8541f14fdf25be66cddf3bf GIT binary patch literal 411 zcmV;M0c8G(P)rhZYADu>)isH=@Fz^L{?e=>+cB&b4>?42ySp|p$A@*@3Ct2Srou=Emja?)yg5^e(TU3P zn)O$^HjUamshNAka`W{q$@8pQ9-Gpn>XG>VOT-(3an+0ydDkEAw zv~Ku%^F**c0x+UCS>IIfLRNXX7xB378 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00003.png b/tests_zemu/snapshots/s-fee-bump-tx/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..726d04ded60f432042bb372dbf66c68874e4f90a GIT binary patch literal 360 zcmV-u0hj)XP)Ko7$ z8S0x+ks9h7gBW;%EaZvlclbP-4&|evC3Te+=}LC1H{{`}W-#62nu^V(hMcZ>m*%B> z%%cGi1i6U)g?)$ek*4@*;0p!-00000Cj0=*tmeMzHotBF0000=}K9dBy~6jHJ@ZHt|Dt}t=Gv4)kSSwNf4c;5h@Nj{Z|&0cL94lO1`feg~=|Q~hofq^A0vVGJzcDr5=z zK0J-9-xWJq0|6*!%49BXczp0WK};UI=5{LV=z5&4ci!;S_77?qu+g|O-Ws17 zaO$sY7})f86@YE+^xZ&h08$JdRt*hm!>|T21By3X#oDL5UD=hDn=m1S5JCtH9|Q)A UWPa}4YXATM07*qoM6N<$g6bEFv;Y7A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00005.png b/tests_zemu/snapshots/s-fee-bump-tx/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..368711bc9abdf71c707b99f578164e96bc477e47 GIT binary patch literal 341 zcmV-b0jmCqP)Vds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00006.png b/tests_zemu/snapshots/s-fee-bump-tx/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00007.png b/tests_zemu/snapshots/s-fee-bump-tx/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00009.png b/tests_zemu/snapshots/s-fee-bump-tx/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..568effefaea7e84eb02704b46bb0e2907598a83e GIT binary patch literal 490 zcmVH9x$7U{wnkKyu*5w&UgR;@)uKw{{&1wjx5zskc|-?5+7zZ&GL!Y&;9 z|3YbXvTi9LPMKq87bFZWl3wH$(+6Szx98YTgWd)|ebvd3JzM0#wo7fL82-w!B=SA- zouj2yHNQ69*TzA-qG&+V>Y|bk{v36wJYI6O%_G{cJzQ|pihQ3EfGRmczB+p#Pl#c$ znG%3({f$a$Y3E3@SDyf$_~mIJUI36;nvygwdei9T;W;$_UO1V~4UV1u_1@oB2LNgK z1@C_df~&*(lZhCtB&yI#&Q50CP;$)@yPI0elg|b6nlO>qH1J!dIEyc#4Qkq|R&jTM zcZjxItac!-HC~Kg#SR)cnn1W}r)8nmMi%cT!Md{gMNDM$+cM})O=oEUT(0ERzf*d& zi87^FS<^^0vtbUvh?KE+8i+ue=-XeaKAE=0?dQ3m|IrYD5e>^G92+&p=Acm2>@Bo3j&wFwt=KX>}84ufK^0$O3&uvfcvlDZmPj+*Ns~7 gK@bE%5Cr3S1L@gbmKPbSm;e9(07*qoM6N<$f~yJU4FCWD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00010.png b/tests_zemu/snapshots/s-fee-bump-tx/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..521170f7e3a4bba94dc782a39ab1183a61e8a241 GIT binary patch literal 495 zcmV^s-+)wXnhpAvv3B|^S3n;0I?_SB1D zOl+nEpuTwQv!&X`)Kw$RUcCbN#IIKa@qz*Ar3uO9^`0Y^+Xj!FL-X&2levB`8rc2c zdq1rXfFYxAs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00011.png b/tests_zemu/snapshots/s-fee-bump-tx/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..5223728169aea836462952a356805f14571033c8 GIT binary patch literal 479 zcmV<50U-W~P)JoYEU#ID4g41#ASo4IbT1OWH8Ik~#nxR;oJrsZ7M{rGU zh9qF>5Nibbd8OO4zW_S$;n#qopn!TwN{XD_hB~8s`4}3%FC0w&zUad4|33QL>;z~U z?hyS&U_zbIA57+8COHeuM2Wy_9i>VpqFMONeB}ITv}>KfRi3c2ANdNs=VFD<6Zx VWRiB3ZtDO5002ovPDHLkV1jPd-GcxC literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00012.png b/tests_zemu/snapshots/s-fee-bump-tx/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..eea1f103406ededba3a0c1f8f1539a5a7cfd7eb3 GIT binary patch literal 424 zcmV;Z0ayNsP)V!$=W*6YGiyo#)-ZN+AF8Q*F?6QG?Q^-Bc#&zzpYOW93XZ7 zd+YllV`^A`GVsAlkcC$AZR9QUc+PG;{yzAq!*+`2E&p1MYxt%!iKLQPKKf`JeGCal zzS#mljnPObwbvX$PhtFNsFFA|&VV%!mJw$j-MDc;mDqgdzFC(U92~}x(foOq4oUesK(=UONO!<85!{0!=~f>`maq0r4M1{x)uvPz5On00000U^Q=KdpGl? SktUn~0000sn3{L_e4G6Tb=a@ z?)?2?$6aO{(|va&HoqsQKCL)2qOeDQM2;>|-!JAS(ud|Rx@+6vo^!ktQ>ROfxTWfn zTA!FTGEad1={V?4YYiz57OSmEtB-0l_z6hKlpg!~8mDtN`dYLA`O?jM>4bv1FCzDl zlxvCWzQjBMX6Kaberx8tSCZOP^yFellh(9>U!v#yg8UnWhJ^Qv1vpCfWJI%A0GHDi wIyD(Px#07*qoM6N<$f&!+7(EtDd literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00014.png b/tests_zemu/snapshots/s-fee-bump-tx/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00017.png b/tests_zemu/snapshots/s-fee-bump-tx/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00018.png b/tests_zemu/snapshots/s-fee-bump-tx/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00019.png b/tests_zemu/snapshots/s-fee-bump-tx/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00020.png b/tests_zemu/snapshots/s-fee-bump-tx/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z09@5ACg%P6PJPD2x;Hu;z8Cp> z!gh%ne;}tX(|z|$Z2p+Q>ad8y9{)#_=o0mOF_TCinoG9BeJ1J^kj}*1?V3u}CAlkL zIfWIVe@aif!&*bCCz}ecR#nbv*LelxG<7HZ)*&-GC}+|GD3@;DOMw>azKGmIQqEz$ z?n}%HFgvFd_ggdG{U^D1v>sdyapf*)P3!n2y7(95*;N`c>x=tRvOVdv=^^E`g-#8| tGni@UTL{MJeHa?;1poj50001H`2bzZnHVWBR?+|f002ovPDHLkV1g0*f9wDN literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00024.png b/tests_zemu/snapshots/s-fee-bump-tx/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000`iE1sy?@*1@QIp7s-POW_- zv{3{8@JBHZnErlSP@uWsm<5W3^ss6M&=k*DGs{`PnAA=#?trENb&(lp7+;`P((DlP z`sU&e5NTHJM?lq16+fv1#Ep*bS9}wuhRzL8Orf^CMhqAVPA|_NN!xAl7ZYr6uep)` z)4X4ncK|Z^K=0p$;Og}LVzLkJBv+w3IXn3!yw;9oCp#Ev5d%9#x=djcesQDOfCjT( zoJiBfTDUfTCKgZFgU42FW@z!}-oTD#;wfz)h78i3wR>b}&N=gC<}et(hV+gFkpEei z>NDXEFnRxfsPVgLRtPUhuWWh`cN_MHBK*OFDvN6}hjUZQK==rJ25>gPv)P2{?|}Fh z36CpzExmn!zrBn#!7tmbGrRAtBJXCg)BuTOle-O=p32%j^n*aa+07*qoM6N<$g7Dz!q5uE@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00026.png b/tests_zemu/snapshots/s-fee-bump-tx/00026.png new file mode 100644 index 0000000000000000000000000000000000000000..132b93a5a93bb8aa34f22883c2736effe4b9b8d3 GIT binary patch literal 488 zcmVP)<|G^&gfFaly!yB`m7{jtHowiW24Z-1XI2?|4yk9@R=0$o4^y_N;?U^3a z!$3&joOT7>UdN6vNm4hBN2h)PiQnx>ALBUw$44TQwD_c^%PndPHoKFo9|Y|L7z6$& z${5=d*EJRtL#fFlUesgN3CL#}w&Ai(M-Efxi2*P<0mOk+WEvdf1!_19VtLWCB`YyG z0U}7%J_I(U{MAtMgAyQKboqV7FX3Df@khH4a$RoGhH-&|Q69gOj=SO~qtoA7^@9A> zq92wgz*4zj^mjoBwMTz3JO?}BRcI$F?qQ?HKzfH_H&pAA8uR&pTNn8h8zF`;U)G>h z?)iy;*Ny7@h*h0x%n5ZH-GG$*tw)={SpR0IIF%( z5u}*T=w!TKUEM08h*2$_fFSLo+w=P)w)t*Nk^^^QRcJ)=sZ7uAM*-^t3BZjF_b0~a zA1X-*jTyxffQR6~U?G%9_ibUn7QO>=H}J~NJr`?&ri(;`EC|X}#TV!NXE^PwToIlF ehr{7;ToxZO;kyQkHU7A# zXXs&IB>bF?nsjUj&o2v7H;qT9zJbE;_T-m)d;i}rnM~1=oi$xKV$EQ)J7x3}p|%4+ zLtd&fV0rp=fkAm0WvG&jVAT$wJq^on&7vz?kTqsvasZeEJ&wr(Y9;8Qw~dU=t{f3VP5z;6I({XcF2zqqr@v8kL;l}pe_I{^ zr1FQee-xCd&e>m#jKPt}Q|L&vsM%R77&uE5Sin{fpEM_ZMa6fm(L&uf^BgF|}l(qPIHW*a1Tpd&9C)Yj*1A7kc2Dqcpe!Y)=0^ z<4J>|ysBCT!egI;oDU~>EWfZLHgE^91!b0z<#J$ET-u3+@t{#A>Y?0R6+h!wNr@1} l3;1(IWDF9CL?V#@_y8jP>|$DW^Bn*H002ovPDHLkV1g`%}i+xLIqz1Uuu7%K-+95CtsrD(kqJdw zFUkeIWo49&Z||!p99nKv%bIE?WCye@!)0jE6ULgsGdvl9&h(mO7N$fK)Lz=Ob_qsW zWafD?04!bBK7`gD$vlh9JUarw9(3(VMGxV&qh%)2dC>NyBkBy7g3-&H*V94g`}1s> z?39v$@K<^N$_Ria|83q+gmE>z9}HrU39?WopH9A+pJN`DD?3YJl-_-%jy)PWbyJbFIA2YK*8>>V?1jlDFr!CLc5FUJ4-e})fNB%0000G Z!W%_sCZXBDQBeQ@002ovPDHLkV1k>X!|MP5 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00029.png b/tests_zemu/snapshots/s-fee-bump-tx/00029.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00030.png b/tests_zemu/snapshots/s-fee-bump-tx/00030.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-fee-bump-tx/00034.png b/tests_zemu/snapshots/s-fee-bump-tx/00034.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE?Cgc1dDgro;<2cS3_6_!}@ZB-oCd=pv%+6=@ z1Q>8!hqcy-+i{~2bU1*f5iI(?CCXBj!)iAX>2N^Q6pL69G!~9H?~V9%TPc^bn~^OVaV$b*+i? z(EM{ihx)~M_eF39lqOhD0ssraDB?@_&tH70_%H_d{k%0bLFdpL#v-(Y%yN%o*hT z2U^sJ@wK30t$!v)I{;4jKrm*Ng+B~_4>)<^64XnR^pT+s$kH^Yj^K-<<;Tm%$*Ox- wihY8nq*1U3%uUxt>@oT-cXyj|9LISJU#OR{sz%R3Jpcdz07*qoM6N<$f{lx|T>t<8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-approve/00002.png b/tests_zemu/snapshots/s-hash-signing-approve/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..a77863bb8e18c58a31813d2e2d5c11a6b48e293d GIT binary patch literal 487 zcmVP!I&g+ifFNW^)>9vS+b-p@lYZcD}n z!|;=89RT1w;PuYlMj(<~;oMMvXFB_b^WdYTh!Bw9)#o(gbhCASn&zonJIB7%|-qQ8hCt2vT*WXjiDo_q*G_rCcglvG4)j!008LTQQk{Qy0cBNRRJu6Uzz% zwR|pJXWAnw+g*T+BV+v7XaQUocCv3`F!sm}IU-E3vesRI<$qHQbpTDZQ zyk)F03wTeUG>w@7P+QdAi2=B|N-qNXJ+&P7=AYe$9rypg>T~1{P`^7GnVay<)MQLa z$RPgwL=$}%6w#PvB~S1UPbHJs_agj{pn=PWIV+t!DaKUusnN@J>a5uK2OwW=PV#eS zv7b4%PxG#cJHs;oY#PZm>Ty&(qw)dxCCuWHj{&_r`P zyrlQ{L~(U^e=-q+mBcBul3ynuO1Ju=NktN)QD$s1Q)C&Te3Y_9z|_euRVhnqZOL+^ zlxB=XtTJ3wq*N3{K2&M)1Ch|$g^ULWkZ=N`1=RJ$tOXe_rVXkngDLGKXV#UYo3~__ zmNy+L?5Yv?ga)Vu0DrRErnoMpWTY&9fDEya-D<||mC;^~HtIRX_?;=`4(S45cT8zI zUDE`Ppfja>X)a#8T*$=AD0T;=7*u^{B!9>>WU!e!wX14OHRJ5QEw1+e%OD7XAP9m< ZyZ|EKc5m2dpmqQN002ovPDHLkV1f$2*);$F literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-approve/00004.png b/tests_zemu/snapshots/s-hash-signing-approve/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..567a56f098b39f3e2d5a9786f0d2f58a1e4f2160 GIT binary patch literal 478 zcmV<40U`d0P)!+=fEN?qlfcn6eW1TEy( zj4r*P*CsiIg)1Y{0caS-G;BCBV^m$izX{j=p!GdgULB@B>Hq)$!y}4569;y72uC?U z6ZnzVKNH5(Y5m2d4|bAKXeaMRzL?L_$sHZ${Dr1KdIm>oC^eB}st;|84yH(^Q-7%= zX_!=J8zm{&l*Kf2ES?8Xb43$LpqVW4OY@gh1m}VVnSKd6Ao+u^Zo-2(Ub@Cv$}P8h zwJPC)MjqOA9j54-L#>oZ*pB4@U3(M%rJtrEnzA}dMD7!a#7eECy~NGgA!z!4BT5=- zBsDa!0?u{-tn$G=+<{907*qoM6N<$g3(6MH2?qr literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-approve/00005.png b/tests_zemu/snapshots/s-hash-signing-approve/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..3379bdd841552db071138fd4d796b78a2c7149e4 GIT binary patch literal 421 zcmV;W0b2fvP)pXp98X1Xc6j zCjS>$51v*9MY{~MF(7-~{+bu;y8z5qzx z?x+5=WTb}rok0vnf+{qUv&c*4cArNs?kF5k`rsIz%tY-}eg=&)spK~8-J8)b-T}ht zTlOM7c+hw#*=tUuyWo5rttWk$Pwpe=tz`l=p*<{7wlHXiDnIc7izqaO5@TW>hg+Jybyn0ssI202s{+eW5B*i#6*$ P00000NkvXXu0mjfCRx3Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-approve/00006.png b/tests_zemu/snapshots/s-hash-signing-approve/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b614410ae51503ff596c20c9143cba0e1670d2f0 GIT binary patch literal 459 zcmV;+0W|)JP)7mk)R2|aU92ShH@V0l)n*NJrBhgkMLpi z<7fPoBRG$+?e)PKiWmIO4&X|zNE9oLB<%K6ocRn3sS;yW$|HizvgDC3)W-uUHxt_OHu z0<168s!SkBq{_3C@fXCp+zfuevsb2ATK%v>0?;h0tG^J6)UN(uJO?xJDm0U;$eVIm z{YS;Em^g?>tWdyR4F=XMK{S_uA97yRZB@O-FI~{cWe$Kt%a}Ca8`R{8bPFDbkp(jF zM-2Z`<&RAos14@?`JypypM*$2bv>qD4G29gJ?p)wHXE33gjynS6}{8sP|GzgK>{KH zNw{3`aMe`WG_3vmfEG7ML$haVA}N&3GbQN1ZT;?3KjAZoh1H{2y{{epWz<#x^BF4l z0ALgBnoz)OEg)b%Hr^-R7Pe>FIsFf5q;( z#BRp#_#3Zs1jqTlxG#L2B(qs80J%q^vyvqDBat-gI?m}am=^%}=G@DHIa-?0e1hxR zdE*$5&bU@GF95`MBi*6!8$~zjpJUbX4Ble}!_yO-;P_ec5!wvz^wCwKvjR3B8?+?afFcZ&0 zGx>J%0Uq~n#i9;U%n4{KDXA-dM#0e}8(=R>-N`bJMSCuPe5Y$KHN%RrBG(ncM@s$K z-d!@XK|90tAx1uG5^y#JIsT*#tT8}&ao+u^L`pD@_Ke zOnT`vS2C=4jAMBh$em*^C*)}Ej>e~WEY~^D zOxpj6p8(idiBYA_Dftfs4hG}py#U0rUOaW2wha`=Z22ke8ifXX25__u4npAS&UgZF z8LH~0QY0|S=w)v)zKfWbhl}s9cjXdOdq2$}fOM7Fy+09ztHb-92@O1nDCEi2$qUge zq+(nvsCoUSzZyY~h&ymYgbu0&FId<`V)9-2jhf7r$=M!dx@3V@wu1xmRJPnLDXYU( zV@0dbO$#dK7cs7OsMZwA*L|1Q9O3p%+LB~3T5QKAfF<&9O=K0JRgoF%iY;U~!p3|X zao-Z;32W~#k5YuNEA{&n&=SYx>e}bSx+xxO%V-P&fRZ7ow_tm!-9rhvjUj3^Hq0^@ z1mJ3iook8{dH)U`Aqa#%hTyjyD5C=gJ1VIo41s_lkK{f4^6zTu~ N002ovPDHLkV1mEq&td=o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-approve/00009.png b/tests_zemu/snapshots/s-hash-signing-approve/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..cc93d991914b77e7003be245d03387c27f94118f GIT binary patch literal 391 zcmV;20eJq2P)q!HT;#>oNMccv-_B6Qj&ttww~&p_Km ze~9(EztGmkgqhX=j@q!GiAA;XY8aC_ zfZL&p0*Ovis_Y-8ytifTbb0d8uP^lfT=m0498enK(ds{ojMPxy82G>wL?KVkA}^V0 z_v0d$0@CCvE}hULcdex_Gsr7YNEd5z%iJw(h4I)P#0vS&aQnN{pW1-%nIAt|#dVVH zkhU*d-ZcX_OUO-*hJlVw^o5&)HesF%;v!E&%Cmc@@o>Xr>FD=CwxL5&F2c(FBKPlZ l+H=*W6U#UN0001h6+gTj{_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-approve/00011.png b/tests_zemu/snapshots/s-hash-signing-approve/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE?Cgc1dDgro;<2cS3_6_!}@ZB-oCd=pv%+6=@ z1Q>8!hqcy-+i{~2bU1*f5iI(?CCXBj!)iAX>2N^Q6pL69G!~9H?~V9%TPc^bn~^OVaV$b*+i? z(EM{ihx)~M_eF39lqOhD0ssraDB?@_&tH70_%H_d{k%0bLFdpL#v-(Y%yN%o*hT z2U^sJ@wK30t$!v)I{;4jKrm*Ng+B~_4>)<^64XnR^pT+s$kH^Yj^K-<<;Tm%$*Ox- wihY8nq*1U3%uUxt>@oT-cXyj|9LISJU#OR{sz%R3Jpcdz07*qoM6N<$f{lx|T>t<8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-reject/00002.png b/tests_zemu/snapshots/s-hash-signing-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..a77863bb8e18c58a31813d2e2d5c11a6b48e293d GIT binary patch literal 487 zcmVP!I&g+ifFNW^)>9vS+b-p@lYZcD}n z!|;=89RT1w;PuYlMj(<~;oMMvXFB_b^WdYTh!Bw9)#o(gbhCASn&zonJIB7%|-qQ8hCt2vT*WXjiDo_q*G_rCcglvG4)j!008LTQQk{Qy0cBNRRJu6Uzz% zwR|pJXWAnw+g*T+BV+v7XaQUocCv3`F!sm}IU-E3vesRI<$qHQbpTDZQ zyk)F03wTeUG>w@7P+QdAi2=B|N-qNXJ+&P7=AYe$9rypg>T~1{P`^7GnVay<)MQLa z$RPgwL=$}%6w#PvB~S1UPbHJs_agj{pn=PWIV+t!DaKUusnN@J>a5uK2OwW=PV#eS zv7b4%PxG#cJHs;oY#PZm>Ty&(qw)dxCCuWHj{&_r`P zyrlQ{L~(U^e=-q+mBcBul3ynuO1Ju=NktN)QD$s1Q)C&Te3Y_9z|_euRVhnqZOL+^ zlxB=XtTJ3wq*N3{K2&M)1Ch|$g^ULWkZ=N`1=RJ$tOXe_rVXkngDLGKXV#UYo3~__ zmNy+L?5Yv?ga)Vu0DrRErnoMpWTY&9fDEya-D<||mC;^~HtIRX_?;=`4(S45cT8zI zUDE`Ppfja>X)a#8T*$=AD0T;=7*u^{B!9>>WU!e!wX14OHRJ5QEw1+e%OD7XAP9m< ZyZ|EKc5m2dpmqQN002ovPDHLkV1f$2*);$F literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-reject/00004.png b/tests_zemu/snapshots/s-hash-signing-reject/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..567a56f098b39f3e2d5a9786f0d2f58a1e4f2160 GIT binary patch literal 478 zcmV<40U`d0P)!+=fEN?qlfcn6eW1TEy( zj4r*P*CsiIg)1Y{0caS-G;BCBV^m$izX{j=p!GdgULB@B>Hq)$!y}4569;y72uC?U z6ZnzVKNH5(Y5m2d4|bAKXeaMRzL?L_$sHZ${Dr1KdIm>oC^eB}st;|84yH(^Q-7%= zX_!=J8zm{&l*Kf2ES?8Xb43$LpqVW4OY@gh1m}VVnSKd6Ao+u^Zo-2(Ub@Cv$}P8h zwJPC)MjqOA9j54-L#>oZ*pB4@U3(M%rJtrEnzA}dMD7!a#7eECy~NGgA!z!4BT5=- zBsDa!0?u{-tn$G=+<{907*qoM6N<$g3(6MH2?qr literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-reject/00005.png b/tests_zemu/snapshots/s-hash-signing-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..3379bdd841552db071138fd4d796b78a2c7149e4 GIT binary patch literal 421 zcmV;W0b2fvP)pXp98X1Xc6j zCjS>$51v*9MY{~MF(7-~{+bu;y8z5qzx z?x+5=WTb}rok0vnf+{qUv&c*4cArNs?kF5k`rsIz%tY-}eg=&)spK~8-J8)b-T}ht zTlOM7c+hw#*=tUuyWo5rttWk$Pwpe=tz`l=p*<{7wlHXiDnIc7izqaO5@TW>hg+Jybyn0ssI202s{+eW5B*i#6*$ P00000NkvXXu0mjfCRx3Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-reject/00006.png b/tests_zemu/snapshots/s-hash-signing-reject/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b614410ae51503ff596c20c9143cba0e1670d2f0 GIT binary patch literal 459 zcmV;+0W|)JP)7mk)R2|aU92ShH@V0l)n*NJrBhgkMLpi z<7fPoBRG$+?e)PKiWmIO4&X|zNE9oLB<%K6ocRn3sS;yW$|HizvgDC3)W-uUHxt_OHu z0<168s!SkBq{_3C@fXCp+zfuevsb2ATK%v>0?;h0tG^J6)UN(uJO?xJDm0U;$eVIm z{YS;Em^g?>tWdyR4F=XMK{S_uA97yRZB@O-FI~{cWe$Kt%a}Ca8`R{8bPFDbkp(jF zM-2Z`<&RAos14@?`JypypM*$2bv>qD4G29gJ?p)wHXE33gjynS6}{8sP|GzgK>{KH zNw{3`aMe`WG_3vmfEG7ML$haVA}N&3GbQN1ZT;?3KjAZoh1H{2y{{epWz<#x^BF4l z0ALgBnoz)OEg)b%Hr^-R7Pe>FIsFf5q;( z#BRp#_#3Zs1jqTlxG#L2B(qs80J%q^vyvqDBat-gI?m}am=^%}=G@DHIa-?0e1hxR zdE*$5&bU@GF95`MBi*6!8$~zjpJUbX4Ble}!_yO-;P_ec5!wvz^wCwKvjR3B8?+?afFcZ&0 zGx>J%0Uq~n#i9;U%n4{KDXA-dM#0e}8(=R>-N`bJMSCuPe5Y$KHN%RrBG(ncM@s$K z-d!@XK|90tAx1uG5^y#JIsT*#tT8}&ao+u^L`pD@_Ke zOnT`vS2C=4jAMBh$em*^C*)}Ej>e~WEY~^D zOxpj6p8(idiBYA_Dftfs4hG}py#U0rUOaW2wha`=Z22ke8ifXX25__u4npAS&UgZF z8LH~0QY0|S=w)v)zKfWbhl}s9cjXdOdq2$}fOM7Fy+09ztHb-92@O1nDCEi2$qUge zq+(nvsCoUSzZyY~h&ymYgbu0&FId<`V)9-2jhf7r$=M!dx@3V@wu1xmRJPnLDXYU( zV@0dbO$#dK7cs7OsMZwA*L|1Q9O3p%+LB~3T5QKAfF<&9O=K0JRgoF%iY;U~!p3|X zao-Z;32W~#k5YuNEA{&n&=SYx>e}bSx+xxO%V-P&fRZ7ow_tm!-9rhvjUj3^Hq0^@ z1mJ3iook8{dH)U`Aqa#%hTyjyD5C=gJ1VIo41s_lkK{f4^6zTu~ N002ovPDHLkV1mEq&td=o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-reject/00009.png b/tests_zemu/snapshots/s-hash-signing-reject/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..cc93d991914b77e7003be245d03387c27f94118f GIT binary patch literal 391 zcmV;20eJq2P)q!HT;#>oNMccv-_B6Qj&ttww~&p_Km ze~9(EztGmkgqhX=j@q!GiAA;XY8aC_ zfZL&p0*Ovis_Y-8ytifTbb0d8uP^lfT=m0498enK(ds{ojMPxy82G>wL?KVkA}^V0 z_v0d$0@CCvE}hULcdex_Gsr7YNEd5z%iJw(h4I)P#0vS&aQnN{pW1-%nIAt|#dVVH zkhU*d-ZcX_OUO-*hJlVw^o5&)HesF%;v!E&%Cmc@@o>Xr>FD=CwxL5&F2c(FBKPlZ l+H=*W6U#UN0001h6+gTj{_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-hash-signing-reject/00011.png b/tests_zemu/snapshots/s-hash-signing-reject/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d GIT binary patch literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00002.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00003.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00005.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00006.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..3329a3e7e368bb5dd9e204b2e303eee13aa116fc GIT binary patch literal 442 zcmV;r0Y(0aP)h(bZ3GssdtnC?p&*{iYMn9eCE2_0`~K1-G9!#WNbUc;L(ll!D%+MbEacbcR` ziBb`Jsy9l%c~A-*6j(AMo=ktXY^aLknicY(8HE*4W-ChEdt>iV>I6ES5acH)Gg&r% zW>oV|3g|eX`sdWOuv)m%4nQ%dL?M(%4`mq4f0TVHGICn0sHb7&TmKG?~ID3nyb2l=I31}8b0 zQ6VG!!i!cT)&bPY*zig<`Qz!rsRt_&CNS>m3}u1T zOR@`@CW3Kg)thjLyN|*kp|YH<4w&+?BlGfO!|HK~j7vPGog+zUw*&5&GNH7A48dxk zzbFQW>`+I(w65C$EB~Uh1ayfeYOuYtH4xAoBlgt4B)2nVVU-8EQZF~oMiAqpsw%`yZdMz!Z9xzOK~Ug2x9cq28Qa`iNI>eQ z)PwK1^?zE#&E`6{{kU%qa6|j?_hI9^9~G6@{IvZ|ffOWV`6Ux44La*rYs<%oe&psGQ_ZV#Eb4w5LFEL{ zMw1G#CiyR5zuW^ez=+F}pmJ`;?Ep-btbDC42ajo9)U-1OO+fB~R1vJyvS)puQ;6B) zOW9}Lr@aO4<_5KnU6~z=I&Sq~h{Y_*L1VIo4!8`c{IDMLR9?h8N P00000NkvXXu0mjf#X;Ig#(Ne>)cUBZAOz=<#ZElimLy4%Bo5cPU8hqrwz;{0fbyAK zk6jYh|7j8TG}pQ9$9rR7H?$wWf24o+qr!;JPupt(pr9zjw?rJT&}m<^hWiMvu@YQT z{s)za+8&=VSg3X@Uc{?uZSiWxZBT%%!F9F~JF)S2Uj6nl{Ly#zfJk{!xZvZbu>f5)x zQ5Uj6vG?QAKGMtWZff|XYYI*C>C|aNxH}*Ec!i+%hp~36j~;8a^W^_T=!fi@m&q}h z$pkNy0QXMbg~!@9oTpQQg|0!q6V);~+MZQQ4T-IgEhgW&M)Ye9X`jh8`^2*`MjJHdi!keBy68=U9`jzK}<1Kb(Y~S!~`{I8oMdJ z=6LGAI|BiD17NFni67s^pAF)T8XmdLATg`GrNxpkYrCM~zjBBMOJPrvr(*@IJpkKV zV=#|!3~0d3P{!R0&xzvKwGg7U67)rp_@}KWQj#P|k|arz-1!0t_Kc$pd_ivj0000< KMNUMnLSTaQHu(qu literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00010.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..9840b28596515358c1d424f8c3ba04a8fc12ab57 GIT binary patch literal 453 zcmV;$0XqJPP)!n4RshK5UsMUuAvx9AwffCPxrZ36%R04&a9JCDwpSaov|4d5s3 zGrp&I449R}d2IVLZw;J^L|^aED^tDlci|p^s=L@khmBcW;LZ8P*{FBwF|~xADZhp# zo|w2dZm6N!P(1L9X}Y+WF?1SW+n~)qs#lzx5uE{V%GYQu(d5jJeBx{yS%8{iT(@lv zzst_|b>O+qE%(Ui1Z9BDP_WS2JsoPf=2?%7PQ(Jx%|}$uVKi+NDX* zZuN6|`C^%hjl1zpX$eB?^nFY`+RMxCd*6Zes(Mp+mT%@;znnh~!4>dMGFXF|WLF_T zd3EwGT+Z2twH8fd0PV5xw@jlKMA4?@+V5te*Bqk>BOZAA;dY0|?iEkU{$<+HG&D-U zh6hV#m)p%U3($qSFMMt0Rfd#aP?wPB=T*MqZ!`Q5o{qe|8TkJ*;8WTAK_Z`1f((X& vda<2gjRl~+3ceeU&d>!V2mk;80AM!%-WymMC$y-500000NkvXXu0mjf@_yTa literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00011.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..bf84b39ea452d6497bdd882239ef7fa1671274fa GIT binary patch literal 488 zcmVP)9!F6WMNx$K|9krkD~ULeA}jiT zj^GcB7)^$`;`eOTq>FmmL>o`D9r%f>=+M0U`sH8g4?e%LcbXIqYO-iiQ-~Oko=$hy zX#0qTzcJ{1?W)4=zNShr$A*JoVg%5UfxWgQ;Zj${cnWj>0a4)9-W z*&SId*`3<#o4EEA4QXYz(-X~B*8vR_1d&CRFyrpR_`!v@xd7DfVAYqXY67Q+-DUGE zD(1;|ZfM3`>I5_}{Aps*GK1fck;=xPot5r?4C4#XcEQ!N0Zk65vbWe1!YG{FZaV`8 zJVTK)4`fZW$0Zgh>2U)DQjpmG3_|~F#2#ndO5$m(T{@|)fuP?M|EfIoHubTXSCqjw ei=rrs!ov&PK##~$gu5pI0000zvfQGi z@Lxe%0ieLE%|0OR^s+!ZMc4&Gj^l`3@j+J#u{U z4ayzM&()um#y%iP#YwOutMOX_&4aF6W^1}*ifE(NjE^yj>#NM(HylXC56o# zQBvN#;^9WXnDXS+p1EqcK(KDGIObstEKrw3>M}q2s^%Sl(Kj~TgfrZ4G2nu|2zPj)GL4w_0ULoP~;ZCT#i`urMsmKcExtL{>+Ta;0x*7>EBo^ir;w?CtzhohwZ!lZbK$>kYZ$$mag<@ z8T=|(CjflNp(+FF&aVp$${~oQ|A6HUV&Ms(Gl4S9YB(6IxznYp=V=sjloVM(x3ss4jFRo|7!tQ2DfyGz)u&sWc&*5so>5LmgS%s`|cEg~5Z; z3PF8b;+4o{fS}Z&7mN>)la{>vtDiNpRIu==Bo4t(Lje-Wzq}Px1V%qV??6&!{bMx} z)Cd*P)~B)vk|uml;1GtgPmN6MT+#`U?uYn*Az0C>ecA6_w(li)85!3K?G&ISfxP9> zDQRJpB5d;3v&Co4w*jm={Kb;XdirxJC7mHGr)iT~P^{so8IdUflqASkxCc5{Vj)(k hg+ifFC=?2t;Q@Ooda&l-srvu`002ovPDHLkV1h2t;b#B< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00014.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..beb98eb9d411efd2678866146926a3688718d76d GIT binary patch literal 416 zcmV;R0bl-!P)o&WdGuh~e%fxfy@_?5`Z zjGVd~%!zWJRt4R+Bg@DMci4?*P(MTR@A2Y?six8)Ta&b;(9)G>veBMUZ(`8gN{x!IfSWV$<@S} z{oSH}O;3QQa>MAaLJ2jZKN;j;CFnvcX_>?7erLmbyd`JG%Qp|s5;}4Z$5wXlr9qxm zIaFxySF*@t=*HoOZ_5K1vlS7~$~~fA2J17{CUf^0;BPW$z!3XRqg19NAGl)yo4j@&raslq$i6Vv4iaF*FQ@FwV1JC_390v zCOuh`q_VT2lX1EU|BLE1r*NfS=I4TPsQ1;yK1lDtPSfc(0qVBvI2le{WDB}47nuP2 z&%y@SpJ=SOkQ2m!BGEc5W~h}Rb2eo)000000Kl6cuon=jCDw5~00000NkvXXu0mjf DGIza< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00016.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00018.png b/tests_zemu/snapshots/s-op-account-merge-with-muxed-destination/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00002.png b/tests_zemu/snapshots/s-op-account-merge/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00003.png b/tests_zemu/snapshots/s-op-account-merge/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00005.png b/tests_zemu/snapshots/s-op-account-merge/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00006.png b/tests_zemu/snapshots/s-op-account-merge/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..3329a3e7e368bb5dd9e204b2e303eee13aa116fc GIT binary patch literal 442 zcmV;r0Y(0aP)h(bZ3GssdtnC?p&*{iYMn9eCE2_0`~K1-G9!#WNbUc;L(ll!D%+MbEacbcR` ziBb`Jsy9l%c~A-*6j(AMo=ktXY^aLknicY(8HE*4W-ChEdt>iV>I6ES5acH)Gg&r% zW>oV|3g|eX`sdWOuv)m%4nQ%dL?M(%4`mq4f0TVHGICn0sHb7&TmKG?~ID3nyb2l=I31}8b0 zQ6VG!!i!cT)&bPY*zig<`Qz!rsRt_&CNS>m3}u1T zOR@`@CW3Kg)thjLyN|*kp|YH<4w&+?BlGfO!|HK~j7vPGog+zUw*&5&GNH7A48dxk zzbFQW>`+I(w65C$EB~Uh1ayfeYOuYtH4xAoBlgt4B)2nVVU-8EQZF~oMiAqpsw%`yZdMz!Z9xzOK~Ug2x9cq28Qa`iNI>eQ z)PwK1^?zE#&E`6{{kU%qa6|j?_hI9^9~G6@{IvZ|ffOWV`6Ux44La*rYs<%oe&psGQ_ZV#Eb4w5LFEL{ zMw1G#CiyR5zuW^ez=+F}pmJ`;?Ep-btbDC42ajo9)U-1OO+fB~R1vJyvS)puQ;6B) zOW9}Lr@aO4<_5KnU6~z=I&Sq~h{Y_*L1VIo4!8`c{IDMLR9?h8N P00000NkvXXu0mjf#X;Ig#(Ne>)cUBZAOz=<#ZElimLy4%Bo5cPU8hqrwz;{0fbyAK zk6jYh|7j8TG}pQ9$9rR7H?$wWf24o+qr!;JPupt(pr9zjw?rJT&}m<^hWiMvu@YQT z{s)za+8&=VSg3X@Uc{?uZSiWxZBT%%!F9F~JF)S2Uj6nl{Ly#zfJk{!xZvZbu>f5)x zQ5Uj6vG?QAKGMtWZff|XYYI*C>C|aNxH}*Ec!i+%hp~36j~;8a^W^_T=!fi@m&q}h z$pkNy0QXMbg~!@9oTpQQg|0!q6V);~+MZQQ4T-IgEhgW&M)Ye9X`jh8`^2*`MjJHdi!keBy68=U9`jzK}<1Kb(Y~S!~`{I8oMdJ z=6LGAI|BiD17NFni67s^pAF)T8XmdLATg`GrNxpkYrCM~zjBBMOJPrvr(*@IJpkKV zV=#|!3~0d3P{!R0&xzvKwGg7U67)rp_@}KWQj#P|k|arz-1!0t_Kc$pd_ivj0000< KMNUMnLSTaQHu(qu literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00010.png b/tests_zemu/snapshots/s-op-account-merge/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..9840b28596515358c1d424f8c3ba04a8fc12ab57 GIT binary patch literal 453 zcmV;$0XqJPP)!n4RshK5UsMUuAvx9AwffCPxrZ36%R04&a9JCDwpSaov|4d5s3 zGrp&I449R}d2IVLZw;J^L|^aED^tDlci|p^s=L@khmBcW;LZ8P*{FBwF|~xADZhp# zo|w2dZm6N!P(1L9X}Y+WF?1SW+n~)qs#lzx5uE{V%GYQu(d5jJeBx{yS%8{iT(@lv zzst_|b>O+qE%(Ui1Z9BDP_WS2JsoPf=2?%7PQ(Jx%|}$uVKi+NDX* zZuN6|`C^%hjl1zpX$eB?^nFY`+RMxCd*6Zes(Mp+mT%@;znnh~!4>dMGFXF|WLF_T zd3EwGT+Z2twH8fd0PV5xw@jlKMA4?@+V5te*Bqk>BOZAA;dY0|?iEkU{$<+HG&D-U zh6hV#m)p%U3($qSFMMt0Rfd#aP?wPB=T*MqZ!`Q5o{qe|8TkJ*;8WTAK_Z`1f((X& vda<2gjRl~+3ceeU&d>!V2mk;80AM!%-WymMC$y-500000NkvXXu0mjf@_yTa literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00011.png b/tests_zemu/snapshots/s-op-account-merge/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00013.png b/tests_zemu/snapshots/s-op-account-merge/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00014.png b/tests_zemu/snapshots/s-op-account-merge/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00015.png b/tests_zemu/snapshots/s-op-account-merge/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-account-merge/00017.png b/tests_zemu/snapshots/s-op-account-merge/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00002.png b/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00003.png b/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00005.png b/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00006.png b/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..30191e11833da0d170d71ba26e161905ff37a101 GIT binary patch literal 404 zcmV;F0c-w=P)w>IY<;x$o4CNf;#Pj`jI*dzYvNgh zumPmNnFtV`*7sHyhs86IcjpKw2R-RL;(?zr=E=BFe$SM&t49{Vd=FT*_cib$3m{#8 yIR&L*1TdEgPPEB!)-~);O{B#D00000F5?9th7LUlq0puP0000AFj7Z z?%H+0%T@bRxW0T|cH=N{0=B(hLx2{?9u=M#cLo@NP6$6MfWDP6O#+mDjgDDV8A`B} zlH2*{WM}dx?XxpuZwhzPTffQ zbs_Rl-)@(1n1G7#<{RcFIJ+bu55XK1n1<8CV%jW8J<8vp%v1zz<+@w9qD(mhxRvOH zTZWnwO8H5kb0MjaDsuvig)Etb?e-|>=4L3P7R}A41yy)Px14>TRiG^{p+f0G#Htmb zIL!`%50QU*%yqU3M8ngV)q`SEQS?6wdsZf%roI!U5v68jAP@)y0!I7;rz>7T&pkF~ P00000NkvXXu0mjfimc9Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00008.png b/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..428ea2c11222fff001fff3052bdd0d051b1eab92 GIT binary patch literal 454 zcmV;%0XhDOP)>#~(vb8=B|^Ij zyi~PI89sP)tGP090G4%dLLg>5r?@iLnc#N@Faak-H?)$n$#!Q<696KEgJTx#40>8Y z&Ozn0SJr9jVRrzRyKle3hs}PPF94Lz=gt1KAX6Q)Z%o9%lgL7zoF{ofnp>A*5FSEa zN{CubtJ^J$tv6fr2H8>$>Ps9UP+r!NfE$F9*KjH=#J-^)r)xD#i=g0K%lQ^>{p9#S z82#Z|iWvTmLzFJ&sQlDu2B6LfSIfc36J}E%(jH?#_?r`%`y;BYH0|L<2a6E$oaW^2Ac+R-~`B#!LzmH zp)+lNuZ=HAl6?Z+)&^LzZ}AA{C&c47p1uQtJc6%ch0RmSwl)Mf#x1n6XgrZ8HE47S zG6uX%wLhh=^YOSW@N(PDW8nmVc$tz*Tv_XeFz+6q1l%F)tYpUSjAaraRB&*c1v^6s zR+&5?uZ;49GPT(mV9MFIUEyZY59=jB(z##smxTzmM}IJ$gPC|0n#ncDk+=*FUZ7DE z0_@wA8o`+_P`#Qw4s78gBc}oU3kwT}PR<3~jJll(o`&EQ`BMvM>f%989$)2t>RURp z@U5im!fme(Y!WlICH3suqY)Yt2@1F-q$ z-FXhqTe2?et&eFsA)yR&dCO;1H09&NL{*tGNa$XTs68QXR)}9LI6~j4uN3WRFukUCaOg002ov JPDHLkV1l@x+-3j( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00010.png b/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0366cfb94c71e3892f83c2a34fe6e49004f5ef9d GIT binary patch literal 396 zcmV;70dxL|P)q-^u>cR#=v~eY(R^F#aLxQRK^yg`w?E0<5O7+=B^3sofF&+fPj zP$mk6=FFg)%m~BMXQ?q*!?_D!bmr(5btwq@Q)u-akcoK{xZu(OlKfuq;cK(`S0V=G~_G+Xz2^Uc&I`UF|2M$H1`fgODruxn>2a&J}MY0#!Y(wo%F&uSE zV%n{wT0o;s1VhT(r+YNijU1SWFJV%UJOLTjc$+c)54cBJ_wyCjjpR=N5=+05KLN?{ qJq^80`|uKZwxNU&LI@!Q0PqE~1FID9x+tLl0000cW{w$%lLjw3;_AECdLU1jw=^Ns=UqjeYAY?{2kkhuqt})nWz;ZU8x1VHD$VPrGUq`?jpF!~at6PZekel4N07Qg#Ihy)~8OIuW|k z_dgD76y$%OfZ#V+Mq}?9Ytm%_5?gw+NkkKHCf8E9LeQ{) zE+EXdS%sZ!UYv1l0FKwa>E~**L%eYVu=ha;xf!y3l?SY_5Y>^hzO)UwuE-K@URb_) zi3n}#6~fCH3mDyX239Z`EJ^$M%8h%{+2kMN!g|+=H296q?C#kyoPH zdJf~88TrYjbhx%$qK16vlA~x!7XBiuQ9x+U^?C9&N6rhmKb7f5tGq@Bt8grAJlZ06 z$n|9x&zNBxj#4yxf@Z8SqJsO_{Uw ztiKHb58yJR)w;OjlKZwtW+=H5tA-K9k_&uEC-JL0WT?oDi$1 z$xFV|_@D^}@facj%8Mz%rb!F8QRDE{k tFumqq5tV!&`#4p1{Rccrk|arDcmW==Mm2`2IvxN3002ovPDHLkV1iQK%T@pY literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00014.png b/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..af957bd196b86e2135f2592354c16cf914c16850 GIT binary patch literal 443 zcmV;s0Yv_ZP)5(`~DA{L-w#Ut`P*Wg0}s?*+VJ@Gzco25&!@IVBp{wZ{jr5g4K$csI%&=@LP!X)WRS6`9I;Zi-YQX@kt zC@i512(wj1G|1K^pCJd(eC>^2sIAWXMhDR7D+815pW2fwH(23AR9nvR?0vDNifvKn z#ikne5b=^zcStWWs2lGTwVL!%i&ux_heJ=*|9sEd&s2BjNV^?Pz!UgjCCEZ6xqsw? z5eMwU)CxV`371&;YFdfp7pbUfnaeK6oSs@^e|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00017.png b/tests_zemu/snapshots/s-op-allow-trust-authorize-to-maintain-liabilities/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize/00002.png b/tests_zemu/snapshots/s-op-allow-trust-authorize/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize/00003.png b/tests_zemu/snapshots/s-op-allow-trust-authorize/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize/00005.png b/tests_zemu/snapshots/s-op-allow-trust-authorize/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize/00006.png b/tests_zemu/snapshots/s-op-allow-trust-authorize/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..30191e11833da0d170d71ba26e161905ff37a101 GIT binary patch literal 404 zcmV;F0c-w=P)w>IY<;x$o4CNf;#Pj`jI*dzYvNgh zumPmNnFtV`*7sHyhs86IcjpKw2R-RL;(?zr=E=BFe$SM&t49{Vd=FT*_cib$3m{#8 yIR&L*1TdEgPPEB!)-~);O{B#D00000F5?9th7LUlq0puP0000AFj7Z z?%H+0%T@bRxW0T|cH=N{0=B(hLx2{?9u=M#cLo@NP6$6MfWDP6O#+mDjgDDV8A`B} zlH2*{WM}dx?XxpuZwhzPTffQ zbs_Rl-)@(1n1G7#<{RcFIJ+bu55XK1n1<8CV%jW8J<8vp%v1zz<+@w9qD(mhxRvOH zTZWnwO8H5kb0MjaDsuvig)Etb?e-|>=4L3P7R}A41yy)Px14>TRiG^{p+f0G#Htmb zIL!`%50QU*%yqU3M8ngV)q`SEQS?6wdsZf%roI!U5v68jAP@)y0!I7;rz>7T&pkF~ P00000NkvXXu0mjfimc9Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize/00008.png b/tests_zemu/snapshots/s-op-allow-trust-authorize/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..428ea2c11222fff001fff3052bdd0d051b1eab92 GIT binary patch literal 454 zcmV;%0XhDOP)>#~(vb8=B|^Ij zyi~PI89sP)tGP090G4%dLLg>5r?@iLnc#N@Faak-H?)$n$#!Q<696KEgJTx#40>8Y z&Ozn0SJr9jVRrzRyKle3hs}PPF94Lz=gt1KAX6Q)Z%o9%lgL7zoF{ofnp>A*5FSEa zN{CubtJ^J$tv6fr2H8>$>Ps9UP+r!NfE$F9*KjH=#J-^)r)xD#i=g0K%lQ^>{p9#S z82#Z|iWvTmLzFJ&sQlDu2B6LfSIfc36J}E%(jH?#_?r`%`y;BYH0|L<2a6E$oaW^2Ac+R-~`B#!LzmH zp)+lNuZ=HAl6?Z+)&^LzZ}AA{C&c47p1uQtJc6%ch0RmSwl)Mf#x1n6XgrZ8HE47S zG6uX%wLhh=^YOSW@N(PDW8nmVc$tz*Tv_XeFz+6q1l%F)tYpUSjAaraRB&*c1v^6s zR+&5?uZ;49GPT(mV9MFIUEyZY59=jB(z##smxTzmM}IJ$gPC|0n#ncDk+=*FUZ7DE z0_@wA8o`+_P`#Qw4s78gBc}oU3kwT}PR<3~jJll(o`&EQ`BMvM>f%989$)2t>RURp z@U5im!fme(Y!WlICH3suqY)Yt2@1F-q$ z-FXhqTe2?et&eFsA)yR&dCO;1H09&NL{*tGNa$XTs68QXR)}9LI6~j4uN3WRFukUCaOg002ov JPDHLkV1l@x+-3j( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize/00010.png b/tests_zemu/snapshots/s-op-allow-trust-authorize/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0366cfb94c71e3892f83c2a34fe6e49004f5ef9d GIT binary patch literal 396 zcmV;70dxL|P)q-^u>cR#=v~eY(R^F#aLxQRK^yg`w?E0<5O7+=B^3sofF&+fPj zP$mk6=FFg)%m~BMXQ?q*!?_D!bmr(5btwq@Q)u-akcoK{xZu(OlKfuq;cK(`S0V=G~_G+Xz2^Uc&I`UF|2M$H1`fgODruxn>2a&J}MY0#!Y(wo%F&uSE zV%n{wT0o;s1VhT(r+YNijU1SWFJV%UJOLTjc$+c)54cBJ_wyCjjpR=N5=+05KLN?{ qJq^80`|uKZwxNU&LI@!Q0PqE~1FID9x+tLl0000>Ro6aWAKz@O`kZEx;%o!!qo^wua} ztZk5{1v=0=1N`L;b)DsScmG=>-Bnc)wIy5Fmb9WOg0#m;&V+m`YBAIU*#EW$g5S_K zn)NP}2y#4#@qoJ6>k7?b7)wwYUFnZqVh9UCJ8Wx$;UBB0lf^8fFaywd9Zj68MS5_6 z0R~01QHV8$yuR8ER#3#S2*?vTNz$`5~=*1kD%!ft!8|P4Bo*@7L0001(^8qJx4!Om6t6%^C N002ovPDHLkV1gffwxj?6 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize/00013.png b/tests_zemu/snapshots/s-op-allow-trust-authorize/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-authorize/00015.png b/tests_zemu/snapshots/s-op-allow-trust-authorize/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00002.png b/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00003.png b/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00005.png b/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00006.png b/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..30191e11833da0d170d71ba26e161905ff37a101 GIT binary patch literal 404 zcmV;F0c-w=P)w>IY<;x$o4CNf;#Pj`jI*dzYvNgh zumPmNnFtV`*7sHyhs86IcjpKw2R-RL;(?zr=E=BFe$SM&t49{Vd=FT*_cib$3m{#8 yIR&L*1TdEgPPEB!)-~);O{B#D00000F5?9th7LUlq0puP0000AFj7Z z?%H+0%T@bRxW0T|cH=N{0=B(hLx2{?9u=M#cLo@NP6$6MfWDP6O#+mDjgDDV8A`B} zlH2*{WM}dx?XxpuZwhzPTffQ zbs_Rl-)@(1n1G7#<{RcFIJ+bu55XK1n1<8CV%jW8J<8vp%v1zz<+@w9qD(mhxRvOH zTZWnwO8H5kb0MjaDsuvig)Etb?e-|>=4L3P7R}A41yy)Px14>TRiG^{p+f0G#Htmb zIL!`%50QU*%yqU3M8ngV)q`SEQS?6wdsZf%roI!U5v68jAP@)y0!I7;rz>7T&pkF~ P00000NkvXXu0mjfimc9Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00008.png b/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..428ea2c11222fff001fff3052bdd0d051b1eab92 GIT binary patch literal 454 zcmV;%0XhDOP)>#~(vb8=B|^Ij zyi~PI89sP)tGP090G4%dLLg>5r?@iLnc#N@Faak-H?)$n$#!Q<696KEgJTx#40>8Y z&Ozn0SJr9jVRrzRyKle3hs}PPF94Lz=gt1KAX6Q)Z%o9%lgL7zoF{ofnp>A*5FSEa zN{CubtJ^J$tv6fr2H8>$>Ps9UP+r!NfE$F9*KjH=#J-^)r)xD#i=g0K%lQ^>{p9#S z82#Z|iWvTmLzFJ&sQlDu2B6LfSIfc36J}E%(jH?#_?r`%`y;BYH0|L<2a6E$oaW^2Ac+R-~`B#!LzmH zp)+lNuZ=HAl6?Z+)&^LzZ}AA{C&c47p1uQtJc6%ch0RmSwl)Mf#x1n6XgrZ8HE47S zG6uX%wLhh=^YOSW@N(PDW8nmVc$tz*Tv_XeFz+6q1l%F)tYpUSjAaraRB&*c1v^6s zR+&5?uZ;49GPT(mV9MFIUEyZY59=jB(z##smxTzmM}IJ$gPC|0n#ncDk+=*FUZ7DE z0_@wA8o`+_P`#Qw4s78gBc}oU3kwT}PR<3~jJll(o`&EQ`BMvM>f%989$)2t>RURp z@U5im!fme(Y!WlICH3suqY)Yt2@1F-q$ z-FXhqTe2?et&eFsA)yR&dCO;1H09&NL{*tGNa$XTs68QXR)}9LI6~j4uN3WRFukUCaOg002ov JPDHLkV1l@x+-3j( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00010.png b/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0366cfb94c71e3892f83c2a34fe6e49004f5ef9d GIT binary patch literal 396 zcmV;70dxL|P)q-^u>cR#=v~eY(R^F#aLxQRK^yg`w?E0<5O7+=B^3sofF&+fPj zP$mk6=FFg)%m~BMXQ?q*!?_D!bmr(5btwq@Q)u-akcoK{xZu(OlKfuq;cK(`S0V=G~_G+Xz2^Uc&I`UF|2M$H1`fgODruxn>2a&J}MY0#!Y(wo%F&uSE zV%n{wT0o;s1VhT(r+YNijU1SWFJV%UJOLTjc$+c)54cBJ_wyCjjpR=N5=+05KLN?{ qJq^80`|uKZwxNU&LI@!Q0PqE~1FID9x+tLl0000!joJxUZdbzbb|(B}HK^sZ|veZLgi|DH&C@7#;!Qy{~{0H@u8x zyekq#&kSNBpbYjhLUU-^QcT82`fHUK!ls}dmNmukudjHJ#SEh`2k`kinz&GljNkwV zG=`{WA<-H7_^KCJ#SqPsb9}57d#Xf9#$39?)Ugk}6@He&!Pozf=?>78!1^N1o_Ur| zg9tVsTGGU@oT`1cxZKB`RueTO^Sf#lSH%DXOLpL)S_gxCqsJlv(HB2?jZmG d0000W`U1WzDyKaZhO7Vp002ovPDHLkV1i1w$_4-c literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00013.png b/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00015.png b/tests_zemu/snapshots/s-op-allow-trust-deauthorize/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00002.png b/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00003.png b/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00005.png b/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00006.png b/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..0efb43f6789de316c373c40345a1ff2772127099 GIT binary patch literal 505 zcmVz5?E_@KdA$!hq#AU5%WB zl{iPCWQy}kZmOYE`>?wDDC}jn^5c$sR^qI1rs!eS|EI*9gnOmXqw#PAMRk*u7uHP~ zF|viX^JjM?U22ktQawpcR9M|?lSpITG)S9arJ7d&dHdrPI-vJOTyJeaObBX6XnBd; z>2Y3Fah(IRbNs3rx|7p!^)-bm8?IN9mEQF*+7{w8 vuKQRdiA4OrAPbHM+O2Y!)^8B; z+!{`iM^teEEzJu72AMbN?*iz=Y}D22Voa&Ja?t=0`N#AOXrT=3o+7*eg^@Wbt_Lt- z0nkN|ytD`dIj!riL|6dUVNd$=nce&87c>B5;VRbJCGN>;T6wcJHl56XYgYCJV*aT; zjD(~&Ev%MCM38kA?>^I!wcP0K<#u5I3!Y2fjKz8J8Ss3BpCShk1bki7)yNop6Xz_H zbn*F+Sv7QW9X_mR%7;6}_91+mgP-Qzhdbx=jXw$V%86e76f5t&Co;2p%b>6`ri-5A z084|dHy1C3B4%cRbGWAKH`@YcKtx_fYO7*(q;Am-dIdOT^MC+E%u2igP)ZBF2Q^4WASAG|Z9xzOLD0bd{QNBlw<@=kmW#%h zjiQX*(!L-+tqL!052xbkl$P&Lbt0*YEGU=n-hy5S5K2493`wIXX^3ep_M7`bc9`g- z8SvN?!_e30Q?&B{GLWqZ8YaHP#1#SM9vqd6jBKFEPo~vEjE)pEF#57b@fn_b2&IXa zLEyD#&>1j<sEA!3_I#Hxy101rp)zOb1)09@q(8_1Vc*8CuF z&^eK+Iup3l?n`8V>taP}kMsXb1k6ELu2{jzgb&W-kSr8{d@u4%=oX7PFY$-kxG6V0 z{=rxdiKfY9tG*ZbO{9*MGKxOA%o06RbTDcnu&wYUP2Z zfreL^z{VKgGS9g~6_mT{Go2SzP4ViF0IDb-ms0t};# znxdOL9GUj0g&24m+x6h>y?a`N{-1(-W#QY@HK|=uJd!~W1VI4u3u_XBQHfd=tN;K2 M07*qoM6N<$g7e$xJpcdz literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00009.png b/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d489cde12ab122efff77100e60a3f0237e447716 GIT binary patch literal 496 zcmV z4mu}NZB8m&aq%V*;9t=^wa55>;{h=+%atn_Oxj>2Q=(8}YGK&Ep0h)sVjIw*sFxGH7S z8GhweE_u7&uxA>8#)R5-2-3t@|Np@*>H-HbFK$vSt>%miO9Lc80u9TOBuSDa4%Wx}cR;vSwWQTtRGv%X zjf-!4+`JWDT<*b&(`hwdAF3g>yp`edo0nj80tl@h#6nUiN*ZEXiQV!(l=+wt2DopE zZWt?!RkY&((vkS+RZQ&NB;*0@8XOgijA)?Af17G1`7@LaA!wlY1uUGq2^GUzCy44Z zXb%`dnbA{h@8C`j5Sjq{09UnXUBp(Ah;=J+0o)z6^TP7E0{EVfjPig56pJdy{2&Oh z(U5L+CUB*%PZ0smi{+_XCjVzVU>}6x$`Ra|oP(KsB?=`VpM!i6Uh{kt$+wW?6hGM6 z37=X{`r=1GtpzdNBr3oUk(vow_RY|Qt6>-=KBAB$EicsM`CIJ~Y^^KYm9$O3b4o_y z2v=|ZmvD8UBOHH6ox(jvUAq!*ihklrc0KU@Op9%TYxLVj=I4TV_h1qtfM%^2mtEPt z8Q-BE4{%WyS{GwU8uD6?prnR3zgy(BV++4_ZzO!SCZaK y6+R+-2#h;UW4yvK5Y$8?wo;QMNs=T<{){J-l!&Dm0IN0t0000TpkuH>R6hH_t!i>Y4Zc34i_{pZ*Run~16jEN#&rd?IRlB6OoHSl2 zyB&Rr@WuhP=|Zd^FUQgQ!Y0T7p_h-Qk)g5V z{2(yka**j;(>Hhc=Oj(ws&K_>j{jvUAPmA|<-}kr24~{mg$g+nCohTtIf>MM{WEf~ zIXRHPb5NC4E}WC%qo-nbkosEraS5}tH}|>9QldwRGMZH(FXd@Q5r9SGgjnB&&b|X0Id6gxLMlMwUxSWt$hr+CtoVsI p>r)NMugtI3UnVLBMNt$*F#o0gPx1))y`lgB002ovPDHLkV1m=k#_|9F literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00012.png b/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00014.png b/tests_zemu/snapshots/s-op-begin-sponsoring-future-reserves/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-bump-sequence/00002.png b/tests_zemu/snapshots/s-op-bump-sequence/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-bump-sequence/00003.png b/tests_zemu/snapshots/s-op-bump-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-bump-sequence/00005.png b/tests_zemu/snapshots/s-op-bump-sequence/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-bump-sequence/00006.png b/tests_zemu/snapshots/s-op-bump-sequence/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JRZh=WQ!${k4-k#H)h zCz*esl1?G9E*Y=V+@E5FO*|n=7Cb%0+j3su?Zk|B_9J6@RY~HZ9{HRj<1x6C$+FPH zIBzoPhH}*y>L4~838d|Vng@A38RZ#U5ZWJ2dX*WW7Ly~Ppv=ki0y~Uotd}i^!piTJ zGK*4DdH0v_0A;t?m$229|DbBRmmD5;kL%gB%o@z3QMl3H-dF$(yXGV&B zI3wMF_^t^vgwcc zCb|5Y{88ub=bdjhc&p8vtZKTtHu_%kkCJ5>um3ijTO*ZdR(iTNi%sgxksG=t#$2vu zOB&1fALnWdvTb}CYx~1r;>*FJ-@<+j8HX!?)PWKOpof59#sRL+WxW+Yg|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-bump-sequence/00011.png b/tests_zemu/snapshots/s-op-bump-sequence/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00002.png b/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00003.png b/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00005.png b/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00006.png b/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..775e278ca83edcc80e561b5bcd0047603b77a8df GIT binary patch literal 481 zcmV<70UrK|P)Ns|04o4bVP14-N8cgjVi=qmlc zcs{5WfaxV*3>UuMc^_n!Oca{tw(S7huB|gMv zmJ59hE$OX(mX81D)0*!+ed8>Q>&?8Id7`+w*tX_m$wlttK?R?itNV>I8 z+_GCK>UK`r=v5{~mOheJ$>^v!3ICI@0`~>%hGD6W=#>^%opD-rFu=Ih%H+pG)ndiK zx|_&s0~EytI4>4al}O4G7AuNgOss-G43G|ogTQAAiYb<1MwTq1#Mqd)bPv!sRlct( z82w#&{j?*G1;M~ac`?r$Ohdcg$9q%KL_RhmMNB1?Sq7NsKhmK^id zQqRbCcE(H&j#QtYuxu6`Evppr7W`QmV!^QE)Kd$neu*{B z%6)m_9{^BH4+V-K_1Y(+!kHcDNH#dcYuX(_8W5jNxOCo$+n-N2g8%~Qhb#6VMPEW-KTkfA%v^L z`!^FYSV^oxE6JUF5U;s(kjoc=$_q8ZLS{)?ZjMJY0Ks6bE(;H|bmXr><*%zaY^6Rq z9>LC-@YqAeHYeey;&~EQ{^e&*mCZE--(sm_UFDfX3;=hDq4Z#VYVSSAHzfswMO`|r zRBL*lTW=c{8ds6wzdjWJ`U~$Qgvn z(d3m@S6bYabaFYO`G~`?Oz+7a7NE8CMyizv0000`U|SDAUC*Z@m4@uB6tf@6 zXLWa{%+26f^ZOgFbX(4HESM5sEk`0DR=3c$l3RY`{(rI{jD(ev+r&Kf5X}9udbh*r zF922SIV?y-y6T@*MRMD4p|Zm!KKETHFv*e1-k|KP9uo-Qmc!9uMLEBHvQJY8;IY-f zDEl<12E-H|E#ljsvdWPZ+vZD4^+tMFV1w)^iTP15lIG3!GJI9`$wGjV?c1_%2$O1L ze=yL%5}ZPoJfRNfolEupYbX99$P@CGWQQi@Fs6AEek%~bnBlDm6`DVg0Zkqu1CAhL qoOJ-#k-Dce-RDLC00000Ah83`d%oaOJR-mV0000|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00011.png b/tests_zemu/snapshots/s-op-change-trust-add-trust-line/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00002.png b/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00003.png b/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00005.png b/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00006.png b/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..52da1706ef8599215f436b1c53299a2443e68945 GIT binary patch literal 451 zcmV;!0X+VRP)SaMJ$YA+sA@L=abTTLS<9@L&1L68!ifjeKXdvZO{k zs!27p=gbQAY$}kc|27bP?XlM`|l?OkQf2R#ZIYM zUsFaCYsmT32oOhQQfI=&vQSGS(*ffo)6$|iR;)PP<#5Yx;B96P6j)%LaLpxZU&7*R zcEA3rSjK2&Z7onSDIH%j{%t1ah4l+ijSTCTA($H0F9tq131*>_yc>DQhW=uGJGIdl*NpAC??8J#B4k-UdniIwuHFaS$cMx2nR4#Y@-;|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00009.png b/tests_zemu/snapshots/s-op-change-trust-remove-trust-line/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00006.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..91fd723bc29b9ff130892aee3df881e666ade3fd GIT binary patch literal 475 zcmV<10VMv3P)n18HIbJBdRj^%kw_$d6%TU_pLeD0^&L4LJXM4C z-@@mOqfkg(9BepodJli5(o1RVJMaqLvWY^4u$!7n6HtF#=OR3#4`3u@0*9+tAY9k`q1ylvwd|dyL$=)P)wHaFvGzEeLyq<$F?inrqm;Js&TR&_Dw)hH(ZQ zZYZ0i(qSa6j?~1$2u%oeey5`3d`29CZ+kRB$L5Q>bb|#bg4rSbISLwkzY7G$_|X1D zM6SV^h+T!EW4;e>q19w^VpQN_OHi^G8?hwW)2z`ufqqI?OHIJdVPx*wMGUct0D7CR zxyBZ?32#vd>Kl-fA!yB|gBqZT0+nk^piVQF?BL2<)}$3sXZ5D4d?+| zwj0PnTu^rnW=qzU*w8s_r)X#>QSqd;bisxQ832r)4;^-}tyCAviA{9rU#Uj-?0002M5a;o{k>7*Ys70yNz3n3p z;Jey^0)k}QE;LC`ta30g%o76On3QqzJT8IpF?fRXp3iCrt_1DES`Pihj5M=}B{lMD z>^%Woov^@zf^pLory5JTTSZy*yeGA(ibCrn1Lx9G`V14Ul4hYnb}lQ}_3Ra7_9cxtA>i`)#=-#8OV4OzX#}>YSs6`ZU6t~Ffupx+XHm` zq7yfal#XI{COJpXLL}GUL-D)^>>Mze!uNLo0001h&inuvt^~H?I_sGL0000Wi=KrYh5!=0#7oOJ-DnLl@T-IX1VIo4zsfOt0vhiZ9MAqXDc$XV z56M%^UlkUN&KBdn`I|if2k5UPTh?SfG=4kCe1`yla3yWxeuYlY?O-x;3-Fjdfivhk z)H3$7VXW!dRgUN97h8~p^bQIfV*}@ddL>1dve*g$qEp#VW3!l$t63=xm3w#UDLRDJ z0kBaT`W3QTmkalX_Xm)5a(I6jimSu>gNYc-BzB>hoSiJvP-i8Q4P*6yk8RNd`P9&v zGTMK6j8o_(xkoUPW8>~Qx)pkJwE?+?jFFdR%S+>IOlir}wyge}n}6-*G4)MYYJtko zS>b6%Ri#I&J>JG|2td2n(!;keRZkS}`1n&o?*L%A@ow?bTc|bETuq6gs+dKEerAw` z@wO+uXA2sjDS0qfM_rb_2d;^!XMlaE7JZv^>fN}!TF7mSprIP7=6Q{2=%xCkHD?VK y&L_NjJ9eR*t-tAJrE+v)o4Roj1VIo4Tk{XcXB9syz_>~P0000K+igY>gYnzL3^p+M(N zd)9*vnE9@?xmbz7o}0Zi@*UaPpD;qY43k2cwkB09Ec~s%`sQN8=964;GGSFx_))e; zY)mJVBcS{8iSu|||`HmKUP&3Km6Tk@b xv4ZP8&zb9qg=002ovPDHLkV1k1=o;?5n literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..a881cc416aa15ec946b5c4d0c8e7d1e368eda498 GIT binary patch literal 462 zcmV;<0WtoGP)Sq7NsKhmK^id zQqRbCcE(H&j#QtYuxu6`Evppr7W`QmV!^QE)Kd$neu*{B z%6)m_9{^BH4+V-K_1Y(+!kHcDNH#dcYuX(_8W5jNxOCo$+n-N2g8%~Qhb#6VMPEW-KTkfA%v^L z`!^FYSV^oxE6JUF5U;s(kjoc=$_q8ZLS{)?ZjMJY0Ks6bE(;H|bmXr><*%zaY^6Rq z9>LC-@YqAeHYeey;&~EQ{^e&*mCZE--(sm_UFDfX3;=hDq4Z#VYVSSAHzfswMO`|r zRBL*lTW=c{8ds6wzdjWJ`U~$Qgvn z(d3m@S6bYabaFYO`G~`?Oz+7a7NE8CMyizv0000`U|SDAUC*Z@m4@uB6tf@6 zXLWa{%+26f^ZOgFbX(4HESM5sEk`0DR=3c$l3RY`{(rI{jD(ev+r&Kf5X}9udbh*r zF922SIV?y-y6T@*MRMD4p|Zm!KKETHFv*e1-k|KP9uo-Qmc!9uMLEBHvQJY8;IY-f zDEl<12E-H|E#ljsvdWPZ+vZD4^+tMFV1w)^iTP15lIG3!GJI9`$wGjV?c1_%2$O1L ze=yL%5}ZPoJfRNfolEupYbX99$P@CGWQQi@Fs6AEek%~bnBlDm6`DVg0Zkqu1CAhL qoOJ-#k-Dce-RDLC00000Ah83`d%oaOJR-mV0000|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00014.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-add-trust-line/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00006.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5824e9916cc11c491cc92073977d1aed348b2972 GIT binary patch literal 454 zcmV;%0XhDOP)*GW>p3ojkpIIpoH+ z)RSoHk&`IIqjbR2|A(JxOc~5R8A+m$v#@{Qn+1#?&)+{V{KHR-K_^RxN1_PpF?l~fM5r)gG zzWq_N1Rmwqvp_^qTK>p*Z93u2=m*dYaz;N45bBJ6FnJGFl2vFW^XstixTfsBt0f55 z$~M8EbYY0fa->^>eJM3pVK!(6d*oW(ix`m-3;b2S78>Ctbu$tID1UYxgV*vuM`$Uy zP_lJYPlb8f)f8=YQ0S7z8E#X^t=8dGA@$dSyeVsd$#g4rh!E7h2eTzB{DX`+=K2f| zB`Kb~mMVNWLk5J&pQXEfgKo4AXE~Swe5IAW5nSvJV0s;c;^>HCO73y_U@0%c!k5%F wpD;b1R#Uj-?0002M5a;o{k>7*Ys70yNz3n3p z;Jey^0)k}QE;LC`ta30g%o76On3QqzJT8IpF?fRXp3iCrt_1DES`Pihj5M=}B{lMD z>^%Woov^@zf^pLory5JTTSZy*yeGA(ibCrn1Lx9G`V14Ul4hYnb}lQ}_3Ra7_9cxtA>i`)#=-#8OV4OzX#}>YSs6`ZU6t~Ffupx+XHm` zq7yfal#XI{COJpXLL}GUL-D)^>>Mze!uNLo0001h&inuvt^~H?I_sGL0000Wi=KrYh5!=0#7oOJ-DnLl@T-IX1VIo4zsfOt0vhiZ9MAqXDc$XV z56M%^UlkUN&KBdn`I|if2k5UPTh?SfG=4kCe1`yla3yWxeuYlY?O-x;3-Fjdfivhk z)H3$7VXW!dRgUN97h8~p^bQIfV*}@ddL>1dve*g$qEp#VW3!l$t63=xm3w#UDLRDJ z0kBaT`W3QTmkalX_Xm)5a(I6jimSu>gNYc-BzB>hoSiJvP-i8Q4P*6yk8RNd`P9&v zGTMK6j8o_(xkoUPW8>~Qx)pkJwE?+?jFFdR%S+>IOlir}wyge}n}6-*G4)MYYJtko zS>b6%Ri#I&J>JG|2td2n(!;keRZkS}`1n&o?*L%A@ow?bTc|bETuq6gs+dKEerAw` z@wO+uXA2sjDS0qfM_rb_2d;^!XMlaE7JZv^>fN}!TF7mSprIP7=6Q{2=%xCkHD?VK y&L_NjJ9eR*t-tAJrE+v)o4Roj1VIo4Tk{XcXB9syz_>~P0000K+igY>gYnzL3^p+M(N zd)9*vnE9@?xmbz7o}0Zi@*UaPpD;qY43k2cwkB09Ec~s%`sQN8=964;GGSFx_))e; zY)mJVBcS{8iSu|||`HmKUP&3Km6Tk@b xv4ZP8&zb9qg=002ovPDHLkV1k1=o;?5n literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png b/tests_zemu/snapshots/s-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-claim-claimable-balance/00002.png b/tests_zemu/snapshots/s-op-claim-claimable-balance/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-claim-claimable-balance/00003.png b/tests_zemu/snapshots/s-op-claim-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-claim-claimable-balance/00005.png b/tests_zemu/snapshots/s-op-claim-claimable-balance/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-claim-claimable-balance/00006.png b/tests_zemu/snapshots/s-op-claim-claimable-balance/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..59e3a0f31d9e2651840951b10f949ce19ec0b57b GIT binary patch literal 458 zcmV;*0X6=KP)yw5Fu>s~+^?|6YLGLr#7a$|8 z{y+;OA?cNcXfi?~md&o=GXtBJH~#y!oz^pGwPa^3&cRo}y11Vr2Ou1{-KVFKF}M?B z6-v4gKJrWqs^CJ|wLK4e+h+z^rKV$wdzZV*%BgDr8ca{Z%oeu2fZVpc3`8rV|Np@};6uk!(=-XaNRU0_I72V#O6USH1ONa4cjaLnxUJvwUc;sA3pEFy zBr-`#@k!)3pzQ7WEp!33Wo&#u(b#}_i_mLO@@$t?u90V(Tn_mmnGz4=Dh1RuJHnXcvQfSkj6u{!S*_XrW z%1J&q2hp#P6(0002Mz#Fy^7;znm8+-r& N002ovPDHLkV1kZaxt0I` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-claim-claimable-balance/00008.png b/tests_zemu/snapshots/s-op-claim-claimable-balance/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..13ff37ad09dd03b85fd0ef170b65be3a0fa7e173 GIT binary patch literal 437 zcmV;m0ZRUfP)Ij2u9(pl?KyrShG4b+jb{J*Kk^4N1aiCen#n&D7~^ zkN_GQw9+B$5MAtO)k}4z$jR!s$GX%hZ3YQo!za-aK|5%C&FcP;5)`=dk~5SvI0nmI z_i1GJe=t7tSndJIhsmJ}bR1+)hq`4Xrqpq^{y-zPDKV|Bw_?inlhEBK`eEMwFRE`9 z{kbrq_UI4Bb1)OHLNh7YhtGp)QB8cpI?0aKDN153z9GqiDNdVzbAPbD<+z=x2xZui z>D|*zUBakVL>H76amfB6OTGer<+13O9ED|kodlfZ{v@bm-0>%&Ecf z(|7d*gxY2*1y%NIMrSUvTHW;%&Q*RAfKQi2LsUPeTw!CC0> z_1tyuPIj+ET=a|Y9$*fdqA%oikbOJUEfY0T$6IS`{b`N(ro`_BF&iPxA6b~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-claim-claimable-balance/00010.png b/tests_zemu/snapshots/s-op-claim-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-claim-claimable-balance/00012.png b/tests_zemu/snapshots/s-op-claim-claimable-balance/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00002.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00003.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00005.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00006.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7b915ee0e235c69357ed34a0c4c9a00e7545d6 GIT binary patch literal 504 zcmVXr&Do0Rkmqi2M2E&X9MHhnmR$e)c!Li659D8%90QZTIclFVV7Ae6fPYaJII8{^Ew|Q~ zmS$VvXbqyJDs!e-x9=4glS~`swP19jHp*;eGAdPd_sa&_CYasgQsR|`-DHG?dThG7&vYa$cl`OZo7Oczwd9Rho;TkC&&TptWB?3-(>YxYm4h>p ztU?7Blu4F9cS(i9`puIgkz3-$#^sGzl6Qb`3;ND;CI&CJvqnMUI$y$SdJZ#G)TF zVo$|f#ZT>$T8x{oajG7K%FLwatd34@cijZSH2^qS;fWi$o#eI+JUgI|TsUN0Q!qMR uX~a>ub=>5RLX@Qy+(MyHC=?2XAHoYaesl?Eptddm00003`8rV|Np@};6uk!(=-XaNRU0_I72V#O6USH1ONa4cjaLnxUJvwUc;sA3pEFy zBr-`#@k!)3pzQ7WEp!33Wo&#u(b#}_i_mLO@@$t?u90V(Tn_mmnGz4=Dh1RuJHnXcvQfSkj6u{!S*_XrW z%1J&q2hp#P6(0002Mz#Fy^7;znm8+-r& N002ovPDHLkV1kZaxt0I` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00008.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffea1361960f05f56aff2658beceaf339ccc50a GIT binary patch literal 418 zcmV;T0bTxyP)rX7lX)jtQ8>uH^{I8HC`oUQr~6Ih!R{M+7w_>j*?t7uajNgy?f*&hp{m~& zrqrnZ#h?c*!79{}vVC}6`Wi{)Nu{Ep*9kT0h%%zyuxyHlnf34oo0}$Wz4Tbb6NXnE zMbv^mOy<{C-ms5|w`u^rLUFpoGS-lFLY4IqMMI8THGt*t)INO7S@l!p5r=X9bf^l- za~>M;=mF6q8gOT%OZk=DR`)RS%{_gES!9^MI@U)N4FLcE006*`4{6#;R(OPomjD0& M07*qoM6N<$f+Cc^mH+?% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00009.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..6b07718cabfd376b23ba517253b1724331103dbe GIT binary patch literal 492 zcmVGt=`u={u)xS+KYiQhn zQ*&sElw>le0M%3F7a2bRYA$nuCAP=_Hiewgzhmi9?+oyosLModB4@}FX8Y9Iw*QR< z0g$e#7jo~YL-eNltGDt@laYAj*ow})G%4^40-(CjV#I@Up+2S8&hDAPB`K(A=>-`I z70zPcx%#tZ)_bw_t!CvJ5Z(-jD)e>mc=NA_W+uk+IMpW48>V4xz}CGW-i zykGX6|K{V5^8Q{FSEu(cCS$OZ%tAZqKZj*|i*>K+$C6QXwmv0C9eLVQ3ylF)g%%du zjs06(`pCL)WPJUI@Hq;$Eq$w6Z9tZc%<>IZh{?`)H+}&{{i{|Ws$>qa8jT%gr&{7l5E)RFx-P78?rlZLMlskm+}Z~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00010.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..5f38d1ab1036f2d13267424f389e8a6c69b699ab GIT binary patch literal 491 zcmV-shU*GPZs+ra`A3*c$ zM#3$LO*6oLy8WWy6Tsn;6li9P0wAy8Z?s!9KVr)Sk3?T8d=eR5nlYKD+O+*Q77PGS zP5;8@j@X48#Z|BEGebf0(KR+q99Y|zk_LXk0Ep?+n8{!wWSDV&joFjIDO(Uo+e@U& zb@>0>cL#8FR@MNw(e3KsiPqbRa6g0S zZKwDex!H9;a*$;{bR&nd$VmKIbkG85%Yf)t*-xzMNL&k^>T7Zj7zB` z+({F8Mx6kfYoo~(>-J%9hd4`)UWE8B&5wAC5f}hhddwsc1cb z>e-Bhje#1grT5nSJKe&ciR2_eP+{5B+My*~q zQNNr^fY$at>K})ZI@RAy=HMhb3!P+U9e%&Q?DcPNl$@Fkk**botOaZf#%x+}HS{98 zjnaXl-L%$4mTb5H2aR;W#-MaTlOZ_)@Y{$f$8canYBx_P^-m6_5Xgp(J;ANN$TrXt zVKxE!si)p+Utzdr>rBK3ww>77vb*R7HLwH>L+RjGmyjLMS{G|-015Dw8yRcT2_+KA zN?W{|A3u2-x^hB!`gHRuKmypaz`-IJO)h;1oa;hq3*MTG=OjszBuSE_;~zNkXj29d REQbI9002ovPDHLkV1kr|)ldKc literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00012.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..c21375e3d13229d55a6412c8d68ed984e3fe95bd GIT binary patch literal 323 zcmV-J0lfZ+P)VS6y?XhCtQ$kcn@S|}wK3&s)w003B(t#Q2f>l}X1y5&sw6G)NG zOjJ+qmK>zDY4XojfxaBcT_os_RI|oY`a7)^B62B!B)7y=Q(---Zl3CNz@Y$An!-1s zn)pritIzeBpOP$8S2}ZR>Pw9Z@7#h+neHgq3b_c>{^Qe8yR;zE+Dnbe3^+cI=mb{B za|W0|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-claimable-balance/00015.png b/tests_zemu/snapshots/s-op-clawback-claimable-balance/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00002.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00003.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00005.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00006.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..642231c218370f5c843b530fe55a9c03dee56822 GIT binary patch literal 409 zcmV;K0cQS*P)ZR*%{`ixYz(Z+xMQ;tB%Tf^wtY-kje7}q+SbzI#zltHtHrqR01#WAqf%O2KYCOyY zC@aihItJGN2fzg=?afpD(#o#XV#{0*1VIo4L7>GKhtKNP;tn(?00000NkvXXu0mjf DDf+WN literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00007.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc37987ce8c4000127f6e0d5086cc5209451d75 GIT binary patch literal 440 zcmV;p0Z0CcP)-SSEeSVJZRSUz- zCQ*AfHEfnpp@@ilqZp58ug1v~Ve_(_;r)`wQ)}3a@+s2Kq%!~lvtNhY6qv!vb!l%V zt~J)7p?X&mzU4Jm0!%$M6DO!Sv%Ff9s_4|WGzE)2D7z;ER5w^Ku_RLfuzQxU!6$wN z0LBYH;{nWlP-K0vj_TNIjw-lo0K}^0!#$|QZNy=p+VK@8q5lhY&Qm9AZ{k9?Hzk(@ zrvkQL4tAkkdGU7FHli0U6Mb+MQUW|ZV0xMBPwOGzzB6taBPj~{GW!_@v*dPX_LpI# zn%Q4WFa{itsl=-g2VfqleR%xtDp%ABOmV@J@H`tZq5$3>?5HSphrS8~~N z@A>qe1>J@6LJN+aPvx%QJ6 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00008.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..3418ed2ec146a1a14cba18748e2cb308ab087ca8 GIT binary patch literal 543 zcmV+)0^t3LP)kX44(l(m>C5DMWSRHp&o_6Pa9xub(kF(zzk`~W4LvakYR+!{>F0DyRQdpLmD z2T8UkD?(^(0M^JATMlSiE~j%~n_Gn8p0>`d5AW48CZCAd4{EGc!%f*f7Gdi*GXwgY zgHve9F4pNPC0gP<(u2DYQ^3+k79Hxiob}?#5%&;8Of;b_>w6Hil1X0HKL*9rW&OjL z_@Ml8E9SdUIp98AZF?<4S4()dSiP63mmsSi#dWH4%EO!j_ph2=V#@KU^%l(Q>=vkh zPWvHrYc3P9tVu8{N2GzMX+WR)nqS8(H#7!F8@hyyVt55{e;Gb5hLi3gkk_)wMS zDu6TI0r_^y?$Yjl4^XA5UmOS2m7whkzQ#DW3$>$3Pk1SUR+f?$m+4zRu>ULKZviU( hLZMJ76bgj|`~sbrqEK_V9;yHU002ovPDHLkV1kr3^;G}> literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00009.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..281637f198493f0d2f86d0ec4078eaf2dbf6d2e6 GIT binary patch literal 454 zcmV;%0XhDOP)cJU@1x3~ynw;sOOfD;m$^tl!<2a}Curd4nT)lYr)Eu=1D@1wd zfE@@Ou;Bkg0x&{z_(BYkf9JR)@-nfSAU=PbkN775owK|H;h^bUfjj||-;0e!wL~y} z1o83MtpJ{dCs>Szk_*cMy8w8K004lewF9TK%qEP{?6HDiQiQZ8H~A$NrFBkhrP}{F z4_>gc`{={+0gw#+!RYToVyJ!eC*v`&#Iukk+I^T@(@6`y%9GoCu2E1W_;Y(D^$r-Y=vdioZN=(0TrHck&p*^4YbB3vQWCO8%9G48u3OYjuCn6UIWo_H_jb8 wv8{?le<=E>ta_T-7V(Hu+0$_x$8j|L0DYf6gJiJ}MF0Q*07*qoM6N<$g7coqHUIzs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00010.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96ec41685b3b3fbd3201e984c23ebaa4df899d9b GIT binary patch literal 442 zcmV;r0Y(0aP)dt4J?m5+!((d zfTOUHlzI=9&*aAPz|Q~^LdOny_3EvF89S_gS||zEH0Rhn5Qi7go|q)Rgu%RHVlU15 z&w23^DZ8(JTHXMXpdVQMT_Bb^R(~>K15Y9fd2(E2R1L+)HSW?Vw3D~o)ACN6MD83( z9xJ)YK>m`2mRilF-^n>e7c=*K!Y`&UR z?pY8^1K^l&<_?oIQU26M?F5R+2bCf;rA;!V_DclfaMi(xBB)Q?AOpzh&H}wTb05+x zjg%y_F@tLk=-&-w(8tHH@}%YdK~wJl{HhIg%6e385vra&5`}Es02g3qguD4UGcJQ~ k=AT%+&PYKJ1VP}!3v(SN&QSc{IRF3v07*qoM6N<$f|yCh+5i9m literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00011.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..b56365aa4689a48a27e42dad86d5ae9eea87a9e5 GIT binary patch literal 447 zcmV;w0YLtVP)y`YpuA!N8H*rq z1;{Eq9ah}iDz7fA4Du!brGtow?%4)honB?Xx3e9k5hYE5yd`MbLuOZ6bs_JFmUT0`?g`y3XtlL>(^V}s&zT8U6$`tIIJ00 z60M7ql8(HkF(_#fH=~uejxDj#ViUl!Bc3dKUGj;?R7wV2m}_u=NhN5k;HVLiA#l2w pPP~R|V9*kau}lR30002E7$0HnISN798DUhm7W`()0hqm_r7TQbQ3jNMFoB&L@{JX+-dOD&6ZKx9Ov|2->oE*<&) zarV}kNl$>xzr)s*`Df}Q@~1UmvuPUa3#5CMHEKX}QgbhCeOl20y6gXI~SA7tlConBi5oa|rT zrd~v7Q~3mR$~kJV%ihj{b+xJjYqUr~{VDHtfFIwpz`00000 a00=&MRH9!eBqQno0000f%Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00013.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..72f4a9a98e0408c7c73ba93722d1524ff37d88b8 GIT binary patch literal 359 zcmV-t0hs=YP)gVY)Q6%i<#J-l?}ijFc-um>i@1#wkbcgW8 zGQ0It_yuSwTEP0VpqLugHwJ6q3A~UeXCsShs7*GeRzqc`SStk8gmUs-MY(}lG8!@2 z?G|=e#ilK6OQbG3j)w!7I#&%i3R5LFWfA}Y0002s%>j-I#V<0h|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00016.png b/tests_zemu/snapshots/s-op-clawback-with-muxed-from/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback/00002.png b/tests_zemu/snapshots/s-op-clawback/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback/00003.png b/tests_zemu/snapshots/s-op-clawback/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback/00005.png b/tests_zemu/snapshots/s-op-clawback/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback/00006.png b/tests_zemu/snapshots/s-op-clawback/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..642231c218370f5c843b530fe55a9c03dee56822 GIT binary patch literal 409 zcmV;K0cQS*P)ZR*%{`ixYz(Z+xMQ;tB%Tf^wtY-kje7}q+SbzI#zltHtHrqR01#WAqf%O2KYCOyY zC@aihItJGN2fzg=?afpD(#o#XV#{0*1VIo4L7>GKhtKNP;tn(?00000NkvXXu0mjf DDf+WN literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback/00007.png b/tests_zemu/snapshots/s-op-clawback/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc37987ce8c4000127f6e0d5086cc5209451d75 GIT binary patch literal 440 zcmV;p0Z0CcP)-SSEeSVJZRSUz- zCQ*AfHEfnpp@@ilqZp58ug1v~Ve_(_;r)`wQ)}3a@+s2Kq%!~lvtNhY6qv!vb!l%V zt~J)7p?X&mzU4Jm0!%$M6DO!Sv%Ff9s_4|WGzE)2D7z;ER5w^Ku_RLfuzQxU!6$wN z0LBYH;{nWlP-K0vj_TNIjw-lo0K}^0!#$|QZNy=p+VK@8q5lhY&Qm9AZ{k9?Hzk(@ zrvkQL4tAkkdGU7FHli0U6Mb+MQUW|ZV0xMBPwOGzzB6taBPj~{GW!_@v*dPX_LpI# zn%Q4WFa{itsl=-g2VfqleR%xtDp%ABOmV@J@H`tZq5$3>?5HSphrS8~~N z@A>qe1>J@6LJN+aPvx%QJ6 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback/00008.png b/tests_zemu/snapshots/s-op-clawback/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..3418ed2ec146a1a14cba18748e2cb308ab087ca8 GIT binary patch literal 543 zcmV+)0^t3LP)kX44(l(m>C5DMWSRHp&o_6Pa9xub(kF(zzk`~W4LvakYR+!{>F0DyRQdpLmD z2T8UkD?(^(0M^JATMlSiE~j%~n_Gn8p0>`d5AW48CZCAd4{EGc!%f*f7Gdi*GXwgY zgHve9F4pNPC0gP<(u2DYQ^3+k79Hxiob}?#5%&;8Of;b_>w6Hil1X0HKL*9rW&OjL z_@Ml8E9SdUIp98AZF?<4S4()dSiP63mmsSi#dWH4%EO!j_ph2=V#@KU^%l(Q>=vkh zPWvHrYc3P9tVu8{N2GzMX+WR)nqS8(H#7!F8@hyyVt55{e;Gb5hLi3gkk_)wMS zDu6TI0r_^y?$Yjl4^XA5UmOS2m7whkzQ#DW3$>$3Pk1SUR+f?$m+4zRu>ULKZviU( hLZMJ76bgj|`~sbrqEK_V9;yHU002ovPDHLkV1kr3^;G}> literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback/00009.png b/tests_zemu/snapshots/s-op-clawback/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d408ca97124e9c066d750c4fdc3916286cb51f11 GIT binary patch literal 460 zcmV;-0WHIQn_bW#(D|RoUy_}a*0yq*~$0@u`f4+H~8!o z7h9_jJ0w8zvb*{lK}hZD8{;{ciSI%)$wfYhx6w5@n|`u`zbTfWw}hPcOu<`RlfUalXZcxWb# zWpqn&?UtuW0#XT<__iq$BCMuOlT^izPU==fxs}Ud-RvU7N3Owe$&t{dXd^ud1heFk znWIjCvXD8Kak*Xv+1(0d)MIlSvjsIoRxSzqKrf*+A)!L)UN;nC1qeZp_(dhULm#`B z5FJlr(hkz3q3Hh}a0000W`3rr}>n^7ouisEmKBD;xq!l7d=iT zA4B7WI&cbrfiD=3AK}jjfnRLqSOe7IeVSK!kBs>O(7eVTFP7^zC};2v#;+0U(%E=} zzTZeJ?ftYu063M^y}uBMtHb-oL<~HMS;&*ClQ*QA+9reWFy-h$_cp`RrbwN2(LE() z9OR%Rg}`{8Spv;q8hH<{9SjYSK_8Y62n9u~onz5aE zF7y0sjW0=3L;`-+n-sV_KTe^T?x8tOL7>lQsp^aHkJEBVu`9)*A>dRppP(5)M)VA> z$wdA#v-S`oCIJ{Il~5e6N_; zI{Imc1XxyfkN!pop+@uv$%xe||Bo#=zuHG$$! zK;sT#El#}}^ydDFSGY62uFSx8q2u7)*S28L4B+O6T-l3g-iqt8-#TBum(Vf;n#cpK ziZLV&dCj6zQls_zOqSQSEk13&1d!3;A1q@(Ir(GCC7muT|3)@w3F=#L#E9?^h?~w_ qX~e604RrQIqi>`F00000d>J1j?n=F>n;BtYt88tpGOmGL7Q%ZTJtj5QM$qJyqW7&bi5T(lT$JDw%2~1`_ z`s;V%ud6;SQUEE%((11TBQ?}_1~rHTr%)s@_b}T8z1lwz>{W2K;nB8WFU`t?m?eIe zwUvYQziR*9B1E?4F*-qqIh&DbRxS@^lRXJ%MpWhAGxlKI3y@SOC1ASe4AjY3U(RV;%&YQpmmmQ$d_l8gRFG+S_9@S=SSADn13T*h-{WlY+ d0RR91XFe`)3O)sx|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-clawback/00015.png b/tests_zemu/snapshots/s-op-clawback/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00002.png b/tests_zemu/snapshots/s-op-create-account/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00003.png b/tests_zemu/snapshots/s-op-create-account/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00005.png b/tests_zemu/snapshots/s-op-create-account/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00006.png b/tests_zemu/snapshots/s-op-create-account/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..3a81ed8db248ff897e91fcbef94ccc54503cd632 GIT binary patch literal 429 zcmV;e0aE^nP)6m>mFb(aLDE zyF#*+ytTYBg{D?9WCx^Rx}nBJV5AM3IsyDHMt(^N(w=AP1n40+{o$TnZURu?a=F+A z+ef>d3M#O1R!9pKHcM(%E>oOTSnjIDxgFnD_jdIxsGs=JZ=EXN0q?W>DKaly`4~M9 zn}eB5@Ipo)Gsx|8;9Y9evG!oCMbq6{k#R4V0F!hB=%A>>NtnLKGFeY|?G;UY()L*j z)xqp3y{6evYM4g&j3&IU&YsdonDi%8Y|OI?F(Vgr_sq$pl>JIXUkH|B#stuj;uD|D z$gUNEW9<1RcNsY-+wuJ^i|9vrPc(d$e2JtrOc16%hsMwHAPk{4rz9JOVHk#C7`1!= XTcH|;rr+Fu00000NkvXXu0mjfFG<77 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00007.png b/tests_zemu/snapshots/s-op-create-account/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00009.png b/tests_zemu/snapshots/s-op-create-account/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00010.png b/tests_zemu/snapshots/s-op-create-account/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00011.png b/tests_zemu/snapshots/s-op-create-account/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..8a21652b9ee4720dd2737db77bbecf4bf429e7b5 GIT binary patch literal 395 zcmV;60d)R}P)je8PbCW@M8E+)D9;$4E0YLi?F9@dxU z*f6QoZ=Xr7mFKcG;5x7>?a{V-2*c|EWt6nbXUf{`Cj!Dea4vMIM}r z&EPKmzyt)t>?!=QpEYMeF@9=)W`uL_By(4x*#TXL)su{BODL?&rGtv9wyOaR@qE;b z!=IMJ9M}oSz}N{7?r7rXXu?hM>uCdSL~deXUd#N`1VDmOf(DU?&vsnn6)R@I!=PqB p9;&6_l~G@Pqe%!Mgb+e7_y9ao`e5bTZRr32002ovPDHLkV1o2XtzZBE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00012.png b/tests_zemu/snapshots/s-op-create-account/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-account/00014.png b/tests_zemu/snapshots/s-op-create-account/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-claimable-balance/00002.png b/tests_zemu/snapshots/s-op-create-claimable-balance/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-claimable-balance/00003.png b/tests_zemu/snapshots/s-op-create-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-claimable-balance/00005.png b/tests_zemu/snapshots/s-op-create-claimable-balance/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-claimable-balance/00006.png b/tests_zemu/snapshots/s-op-create-claimable-balance/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a359283b741824f9002ccfe9e96bceaa9d8937 GIT binary patch literal 482 zcmV<80UiE{P)n-(e{-gtbwF>Ug6pyfLDw;_l}=NSk1K2lQYRyN3ub42IDt zKN$DJ9Kaia;?gF}N0{-f8|Hw0ID&q31UH>|bPhm?t4O)4c_xGO;wJ1Y3YkG~GddR_ zAvFF#2^N=(hK1e2NE0z_4h^3fNLrrw^<^imdq88!7n`3q-vRGe_$|^v!+^_ex*O?( zD{+oO$q>RvHfMt47Y)@FaqH%5CuTyvkIQ#gN?4XugB(C`x(U<6D^m?E=b6xgDDBVd zqDl+73N}gJ+r|bHIySP}GSfQ_dDs}ZF_}Zh1emYjwf=2J6i!UX%I;aP$9MFp- zy=j>DwYknZI?yTdJmoGLR-Rvf>#Xdt18Pp=(3`8rV|Np@};6uk!(=-XaNRU0_I72V#O6USH1ONa4cjaLnxUJvwUc;sA3pEFy zBr-`#@k!)3pzQ7WEp!33Wo&#u(b#}_i_mLO@@$t?u90V(Tn_mmnGz4=Dh1RuJHnXcvQfSkj6u{!S*_XrW z%1J&q2hp#P6(0002Mz#Fy^7;znm8+-r& N002ovPDHLkV1kZaxt0I` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-claimable-balance/00008.png b/tests_zemu/snapshots/s-op-create-claimable-balance/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..79d0957bae7176103b9bea42a7410a3892cb574d GIT binary patch literal 318 zcmV-E0m1%>P)R&YK9Q70g6 zz0am>YQgO_-*_?kV@Nz{SAw9Gmor0EgHMQ!K7d!`WW5s}eZ-vryZT=mN-XQ)))kLJ zO^vKtfA$s{q-2sW-y@Ni$|HkQMjt&Tz_K}O^gBceHKQL4bI=l2p_UAM59iH{Gm@_8 z*|!RLBQtOQ1a>ih#W??jCv9YolYmKK0vf{vG=>Qvml*vsln_D)A%p+`zSGpiVHfsY QNdN!<07*qoM6N<$f*CA=K>z>% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-claimable-balance/00009.png b/tests_zemu/snapshots/s-op-create-claimable-balance/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..ac20af078dcabf325760a64a0654602cb6d86843 GIT binary patch literal 471 zcmV;|0Vw{7P)4{OXFJaMX1j5s{srtK z=aqno_6}HTw&a;yMGLJh zM4_1+m5i#PRf!kqOx|+ID-~JK5!$Onn!!uRi!peRyD)Pa;250ODyuPaPvsRsQ=!~N zwUr!s(hWHa4Ttnijl-4~zvozKPqtfS40DX!Ga(Nf*=S6@C99tPLi|eQ6T^T N002ovPDHLkV1mJ?*_HqR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-claimable-balance/00010.png b/tests_zemu/snapshots/s-op-create-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..e394938cf23b37406b9fdbfbae690d826da5a0c7 GIT binary patch literal 459 zcmV;+0W|)JP)Gcl8Q5^M=nO6ba*MAq50op`@em>D#CpDH8;RQTGd)Ihh7l4s5V(&!^-$&9*3be_~ z5&kPYtxw;?-_lhG-;Bs8;42kl0HaXso>{8}?_}DpDf+i|XR7lfN=oy$LuU&X#kh$1 z9!=(N`4`LKu5l%gw-U1|5FWPyI6m-rM@&$0 ztY5g6cL?Y58F0pff;kH=%Fg5@U`u?>Kw7;23EVlW4Hf>r2FmhQv)8FeMsH(uWz*okHRO;kYpb%(?TaX5(a^GiB= zPfk7L6F(erMe&VTRue~!AK9|5;-?;96qHL6@&F)O^Ibz?4MaHNEYn=gn7tMIDLVOc$7PreXXX;M1(3>y- e0002Mckltv(oyJ;@NB^V0000|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-claimable-balance/00015.png b/tests_zemu/snapshots/s-op-create-claimable-balance/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-passive-sell-offer/00002.png b/tests_zemu/snapshots/s-op-create-passive-sell-offer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-passive-sell-offer/00003.png b/tests_zemu/snapshots/s-op-create-passive-sell-offer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-passive-sell-offer/00005.png b/tests_zemu/snapshots/s-op-create-passive-sell-offer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-passive-sell-offer/00006.png b/tests_zemu/snapshots/s-op-create-passive-sell-offer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..dc3bde0b7b561cd4a3352d7ecbeee5763e1ce74c GIT binary patch literal 516 zcmV+f0{i`mP)RFI7oA0!t-@AI_qmUBN?V9$Ns|#?`dFt9vG+jOr#8R+Y?P_nDmw zm=alksD?;Lyk%jxGSWreHeJ(aCW?_4zkSlw&e@+B7M%~!zZo&FUWpyR;pK0S?! z!JRCwLWPU#OBUTw`#$V#%Y<2CD0aTEm_9XIOswpW&Mz0E22X2cF&1;4-lt^ZOISt{ zbU>TPCe{R%@)(($s&)BEMUyvR`pzRe?rt`i7xsQ95K|}Gd!pEMK#zyaUXb_u)6zig z{xLwsx(Ti_GELV9HXS810P^8+6BN9x?k!MixRQ4~c{JcfUjY;aUec_`Tc0000shB-hN zLGqFlDstMXR*7K_@WYn$+cSIb)elw&kb^6f&MxszmXgbxY3HJm7VMgpdx4mLQVTUM zIhz)|r4bR!xoRKYGLY50X|uZ<*uCJnWT(#0&Ld!5hJQs?APBfz)6;+tuB3Ao0;f1G zGJ6g6b`BS>zvP1GN<7Eg@)oc^G)^14bAAc)2h@-Wh`^pbX4-(4Qyl@u=U4~K837i& zt~lYo4wxj>yvtp{NPI_t{t9axI7uh~00000Jc=LHk^Hx7(^^sh00000P{z+WAEeRwczHgvyU_5JNlMUXti82y?9@Dggb<_`RMUmSawa#lscgEc_-s mcJt{EF9Fi-iHL}ZNIU^gAZuU(-;~4DfJm_(@33hx_rpRdXaeiGA6D4`G~496L3S;+WZSU$C)ZqYO1y7M z7R+Ow|7RN!cXU5&H33r4P2JxS#%j1f8O(tv$U>f6b|0qi9W^ETh=Wq>yU&^kTcz(# zN2?j(5cGwj=7QA`91+5GNi|Dqf%Jk_XI)Ri`U8|%%8XuZEcA6J;dFLQqoE}^UGCeY z*p@XBTX(m!H2sFvn}TY!Y`IOU*}hrc>^}T$$GQUsUm6z~Hm##txj{(Bpq|HU5Z*+ZA&hD3dWhy0Ne)v b00446{vmfJut8`~00000NkvXXu0mjfLaM)& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-passive-sell-offer/00010.png b/tests_zemu/snapshots/s-op-create-passive-sell-offer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fe6a31deb5e0caef7d123b97d2297826477db3 GIT binary patch literal 429 zcmV;e0aE^nP)O)X-L8 zy8l8WgvJ4EjqEUMp4JBBiRv7usU2f^SR3#GEymXsj#DK)^sM7J%{RdsI{*{}Euxy$ z(xfh-?rCw@0M>8-fYxK3OtQX!L0#BQ{jkaopwTAX4YF#`lLjtSPg}#9F0nq8 zYG^qvCR3PkNA<&24v;3@RQ(-cq;~Zu<36y&qmU)PA|FiituHg=v-D1jDp7qpORj&h zN!gPcOkccfIh}oU;v_pFTV@~G9afjEj2Y(QXtYDoFpcH%D{AIm#HjP*ida1NIn1ga z4rteox?w2kB^e5J^Y*Z|hXaJvV@FV=h60;!n1*lysaYczqyeqd#?==`vyOOkv!U{# znmbon;P0Ag@(qiPUC#g+Saj@xk<*cl&M4-{Q3%EQIt0s`A@_j!D8Jtw$8j9TaeDFw X!YBaj-NklnP|l3J~KAYtBCqK$vcav7#k*!!Q|($n=s(N*OIbJ{swaEss87c7jzVz$*y zO7ysd?u3u*kDQ^DhHc1yg8Ck3*a`0?hlB9cWM&&7U^!(+J!Alcf4PqW1)QT{yZ~fh zQmh=#I-GqJjrzF5qQL@CGQ_&)qK?$-sR@7{FVvr|DzTUx{H@4cAhJAvk-{ekNj|jr hR|y6H0002EB_Guv+j~MTIsX6v002ovPDHLkV1h7es@ebm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-passive-sell-offer/00012.png b/tests_zemu/snapshots/s-op-create-passive-sell-offer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-create-passive-sell-offer/00014.png b/tests_zemu/snapshots/s-op-create-passive-sell-offer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00002.png b/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00003.png b/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00005.png b/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00006.png b/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..90bf1ca0904fce4c2c8c4a56910556b282396dbe GIT binary patch literal 478 zcmV<40U`d0P)I!2AYIiPUDboTv&wgw}AkutrbO46uWYhR(w6b+dbT+d^%Da z4-yF_^)8U*Ug78+R`$_=ZfsiOYd?=QXs~}l_KAlhQ1WM!_T2~cHX07_5;cK$)i2R- zYi&}}WCI+HK{Qlp%_DL1o)^8B; z+!{`iM^teEEzJu72AMbN?*iz=Y}D22Voa&Ja?t=0`N#AOXrT=3o+7*eg^@Wbt_Lt- z0nkN|ytD`dIj!riL|6dUVNd$=nce&87c>B5;VRbJCGN>;T6wcJHl56XYgYCJV*aT; zjD(~&Ev%MCM38kA?>^I!wcP0K<#u5I3!Y2fjKz8J8Ss3BpCShk1bki7)yNop6Xz_H zbn*F+Sv7QW9X_mR%7;6}_91+mgP-Qzhdbx=jXw$V%86e76f5t&Co;2p%b>6`ri-5A z084|dHy1C3B4%cRbGWAKH`@YcKtx_fYO7*(q;Am-dIdOT^MC+E%u2|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00010.png b/tests_zemu/snapshots/s-op-end-sponsoring-future-reserves/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-inflation/00002.png b/tests_zemu/snapshots/s-op-inflation/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-inflation/00003.png b/tests_zemu/snapshots/s-op-inflation/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-inflation/00005.png b/tests_zemu/snapshots/s-op-inflation/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-inflation/00006.png b/tests_zemu/snapshots/s-op-inflation/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e7594f616bf1be0a724fd3c24f1bc1129590c55c GIT binary patch literal 366 zcmV-!0g?WRP)Y?{W-m$`N;@xy z)fy2yd9}QlLa9v**#SA2X_!e76m4Ns1HkWMl9!C2oq47Pzz!kl56|p+0U!sLlg_Sq z{N=QBhe|wHG;)Uq&6-|~+f*laEO+(d+>72e_jR=vX`cAf?>#lX1J0xSU!-i@_!_MT zVla~lSqKD#MIIjm(PNyW3+0)8lPn73HI;uITAZ7Vr9a`c07;6V%;2u&(#0t+ZKlnt z$E(Vvqp-9Cs+hfSTD;^TX4&=y63CMSumq1yLC!$A6aWAK006Y|0j-|csDhKia{vGU M07*qoM6N<$f>WEJng9R* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-inflation/00007.png b/tests_zemu/snapshots/s-op-inflation/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-inflation/00009.png b/tests_zemu/snapshots/s-op-inflation/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00002.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00003.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00005.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00006.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6d5321f857f5405d071846608c5090abaa509b GIT binary patch literal 470 zcmV;{0V)28P)!08n2#{yyKa~R)}aRd=m>5)^XMFaHm)M=UF4Yz(uhCGY3)H9OWxT0y!Z-uJ;T2u4G;n@*R&hy zgDY{4Ldg)qAba`1CGzSM7)opPXTW7-&YR+KJ(*oQlA=-d>%oa%!epAWP~R-|y4M6& zLn-1m_o)#^wrvaVggJpq7S22+B~2z`{n#KE1X*uhZ{~ny#=Y`&4md6M=|rRhdjI_O z@*zx+s=z5fIEqPuWw9U@ZDN+(~ICG`ORisE4*IF92uv-03J+}7WIujWz?M`Gih zMDCJy`@nK+kk@K{3v^H|X=~q(HPm2QLew&pJms=-A8E9~a7Z6Pm-raJ<6}C4faQ`q zLLN|+3n*ze1T)BaAw3qDMyiFhT3Sq1Dy{5RxpKuIf||aY`O)2 z76I~-5d=ByR4qog0N7zq`ufb?`t1j90Kmc(YHJs|Crc^i&9rgVhz7o9VqbvfpVWdR zBxlotwKRglSy%bpH662(1y-Bef&CYGE;*3J+4v0D*6ycB0f>O%nr6deFp|bu$T>yj zC6A3kOxgRVlZ$~^AL7dWqQ=)C?sF0@U9X1PsSrIJfh$<&1OFmZc7aNi4`Qh|F@k1Q zu<@=@?vsMVi9&uYa|QRA0ZOPlfRV8Ol)nc4ovU&YMq4^3FgctBOp}7F;sJ0R$C;Nm Xz&svsI-N)f00000NkvXXu0mjfF_OIz literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00008.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2ad3892865788907d4b15e24c3c7b4b77d0442 GIT binary patch literal 509 zcmVgTz#8ycNXc=4u<3xAS8*%W8U7Z7Yec$&}P*3R23$+f6JbQ7e>`hj}?dQ z4*7$Kwboku%Q!(Bz;k4&YT}J7OH?B zN64RLbC5xo?4!?(%UyBcUkGm|n034y;fS64f+#WmLfA`DH8_*WvrrM@JIR~!nr&wP z1tW{IvuVRkskawWSBiBnA*3~`DEFi44%Lsv+SKN^IibNZA*E&MuGb%R<{Pq}I; z{n-OFA^-}&V(t#%5TLHrbPnHIbS#b;NnOSvi&epna|<=00000NkvXXu0mjf#5?DU literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00009.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3798500c2156bda53dbb24afa8bb4fbfbacafa GIT binary patch literal 511 zcmV9_3D{R_x<{-_cuez4+RC5_$T#a;>xdEQU(Sp_E!;uRm5<@DkyCRv zp{EpV=i;hsj@o=Wmy|A?!70^WeIB;oJs1AJf$apdUN1+us&fBjfRCTx_N|B5J zDCpv6kQZ>7oCK7$9c+P5a#Lt3QspQPEG3(EVIQ%$tVz}8JgpwpPZpb36)DGYsczS8 zPO;KLdlBocO;0_sG2$oLa@^frQg3Ji;F47K1aU2wQcZCqSn4Y=^0|=zXu6P+9aW+K zEC}lQ-r!0pc$nNPm{5$kT@gj9OcG_rVcdD|&%QLwRe);q==qNrBu+2JD9X?SQqsYe zgjOFf^>lH*$sT_WY7(cKrfX8QZb1+PK@bF=%?o_|pe7jOE6V@?002ovPDHLkV1grJ B@bCZt literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00010.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..af8959400fa4bca329b0cc19d85c5bccb7ac42db GIT binary patch literal 516 zcmV+f0{i`mP)AxYA`eP|y9h($6N#QsDTBG&%%nH5irsGD9Z zgB&|-&ly&#j>1Tw`o2$-|v=y3*#OE zZ>kW=&3Xygp05Ec9%~Wob8Kap3BcPHw$)-}$aBx^^DrHBY`Lk6jW*g~o3*y#V42|l z)3Hq@?&j0EWcI`L7u#H}@_9S4H%{`6$eDI_|=!9BIOE@|N^DZH1k;RmmH7_%?;Vho0oXld)+@BzPd zg9KH)4E5K7;zfw@XC2S$;@1T3o>#HZ6JQkfcwENM?TCta_Rg=yWD(u-&=b&K*vrd* zFsX7h$*@>@BrQZHQgh}q@gu<%`-`Ht8-$`LilQir;>|ZQx4%zB!n8{O0000<3`Gm0|Np@};EUGSEZnw0Bjk+ZjBRr1nueNE5ClOG{ID+DB@H69uvTzgzMlq+ z9#Lhx&7h!IqBQ#H}B0=G(kikS8KD)U`zH4O?5-Q!6&9r!kvV;7`L0R8A>Xgdh*(4(uC$`srBje>DNa z$DM}Fq>MXaLvS_$)AQZ*;bSd=oYj@*xjq3jU{RGkMut6alYJgG4?0!O?qZ>h*4eCP z=z#GD4O3N_!x3r5L8(g*yELf?O&{jc$mia_3|27M>s_~*<1%+|2;IC%&;1Z{Fp@o^ zP*BV7AWuT|$>(s9gBlrO;gVR=&2_k};c^1*(j4&er`8?60vf&PoxKTb*e_OeDDm~> zYb6du%s#>UZP8wn-F(m;0dIG;`~98}q#2xx%Mip*s_TXe_#d(07)I{^3<^(|y1VIqok{5ygUvubXNQnRd002ovPDHLkV1nEn%((yn literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00012.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..121c9d68b4f3edd95601e3ec884ee198ff7b34ed GIT binary patch literal 330 zcmV-Q0k!^#P)UJObPQgh=y++v0F9gg$U^Jp|#h_`Vr*^{?PPvTYL$)cpMk>5UskqyRLsZAQ` z?Bv}Tgy{;niCLT{UCh>dj8#@@x}g>TM%H`>VA%Qub_OdThd%@Io!taAH!K1m&;2wW z!sSmM%kqcDk>mj`cjJ2&S@OG5kr(PupeQobp9Uc{)SnDuUA6007`$+5AO5A4EjkZjF2^@aJb; zNb6@@7jtuzbqY!Qg$ho6oyxYqFK_Pd5*y?@O#5L6@AULS0(bdYbwsw+mC)hyI-h(S zvRh138-}!6TNQF}Fu%)}H&ahQg1uNe9eZnZe^Ez^LPNdK{s5{}wHU{_{px0>aqkmoymIogH5P8XmQahxFGWgVI! z$S7PJa}a`j=*eT($aO^5Gr(Hfr=U4N{!1wSDe^SgRp$Tz0001hV7vg#!^s(MGf;{E O0000 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00014.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..bf80e283f78924d346297db119ca31ef4b33af4a GIT binary patch literal 389 zcmV;00eb$4P)cyDG({e937{&)fN>e zBjy^swiBl2StSJQ;^=j3cfwWSB!@yB>JOeZ4VurS?*y2#k~^VFU$u|iTnWR&xVS1X z%R|vB4LykyNs2Ii{;0muDho59b(!T&x>H9om|h&5hUT9h^NP)2>-3nN&@@@M2G+Y0PKol>)B``B6Z~6RE4rc-Hm<{ zb_!qa0d&IY8`WB>`Xo02VNp9}3(MI>P{*Ik^?mrb5q9Qo{@$Z!7Hxz!DYKMsCgv>O zumUW$kSV>(JF~`)=E9wTjI7=kaU19H09g6(c3*+r$6dl!fqMmH7$NjEe_lGdm%@*= z>Ps9q@|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00018.png b/tests_zemu/snapshots/s-op-liquidity-pool-deposit/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00002.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00003.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00005.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00006.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6d5321f857f5405d071846608c5090abaa509b GIT binary patch literal 470 zcmV;{0V)28P)!08n2#{yyKa~R)}aRd=m>5)^XMFaHm)M=UF4Yz(uhCGY3)H9OWxT0y!Z-uJ;T2u4G;n@*R&hy zgDY{4Ldg)qAba`1CGzSM7)opPXTW7-&YR+KJ(*oQlA=-d>%oa%!epAWP~R-|y4M6& zLn-1m_o)#^wrvaVggJpq7S22+B~2z`{n#KE1X*uhZ{~ny#=Y`&4md6M=|rRhdjI_O z@*zx+CLIgY&TYMMIc*4I(R6=kZ$8p}ur0uw^=W$DSDaSG<7SWJcjL%qve-N^qn~sr( zRHXuPnhl|Ja$3p%3rZtmC9jqjBTD6!lN~f7e>AUv9L&VsLqso>!q6He_X9P<9Kee} zamff3F|DYTVweN$um}D2$lm+w2dx9p#ucQ!i#(G-a&Z%O7LBx^*UX#?$oK;-)VQQH zELaO8B$|CyKfGmNQZwUbb0@H8k;amPIzJm<0oywK7Fhuy;C4-K!+mfkouiObgz%BC z^Z~lEr#E;p4IrAehB<981H&YaO0p~VUXsK1O&BIG;Z2RaF)?l>NMAyKCi|03h0Q{xHQXM9>cU43@>*(0EJ^R!*#*bSI&Fpe?kzSQs#0jXA6$w eIF92ujsd<-CoWO$jV?L>0000gTz#8ycNXc=4u<3xAS8*%W8U7Z7Yec$&}P*3R23$+f6JbQ7e>`hj}?dQ z4*7$Kwboku%Q!(Bz;k4&YT}J7OH?B zN64RLbC5xo?4!?(%UyBcUkGm|n034y;fS64f+#WmLfA`DH8_*WvrrM@JIR~!nr&wP z1tW{IvuVRkskawWSBiBnA*3~`DEFi44%Lsv+SKN^IibNZA*E&MuGb%R<{Pq}I; z{n-OFA^-}&V(t#%5TLHrbPnHIbS#b;NnOSvi&epna|<=00000NkvXXu0mjf#5?DU literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00009.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3798500c2156bda53dbb24afa8bb4fbfbacafa GIT binary patch literal 511 zcmV9_3D{R_x<{-_cuez4+RC5_$T#a;>xdEQU(Sp_E!;uRm5<@DkyCRv zp{EpV=i;hsj@o=Wmy|A?!70^WeIB;oJs1AJf$apdUN1+us&fBjfRCTx_N|B5J zDCpv6kQZ>7oCK7$9c+P5a#Lt3QspQPEG3(EVIQ%$tVz}8JgpwpPZpb36)DGYsczS8 zPO;KLdlBocO;0_sG2$oLa@^frQg3Ji;F47K1aU2wQcZCqSn4Y=^0|=zXu6P+9aW+K zEC}lQ-r!0pc$nNPm{5$kT@gj9OcG_rVcdD|&%QLwRe);q==qNrBu+2JD9X?SQqsYe zgjOFf^>lH*$sT_WY7(cKrfX8QZb1+PK@bF=%?o_|pe7jOE6V@?002ovPDHLkV1grJ B@bCZt literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00010.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..af8959400fa4bca329b0cc19d85c5bccb7ac42db GIT binary patch literal 516 zcmV+f0{i`mP)AxYA`eP|y9h($6N#QsDTBG&%%nH5irsGD9Z zgB&|-&ly&#j>1Tw`o2$-|v=y3*#OE zZ>kW=&3Xygp05Ec9%~Wob8Kap3BcPHw$)-}$aBx^^DrHBY`Lk6jW*g~o3*y#V42|l z)3Hq@?&j0EWcI`L7u#H}@_9S4H%{`6$eDI_|=!9BIOE@|N^DZH1k;RmmH7_%?;Vho0oXld)+@BzPd zg9KH)4E5K7;zfw@XC2S$;@1T3o>#HZ6JQkfcwENM?TCta_Rg=yWD(u-&=b&K*vrd* zFsX7h$*@>@BrQZHQgh}q@gu<%`-`Ht8-$`LilQir;>|ZQx4%zB!n8{O0000<3`Gm0|Np@};EUGSEZnw0Bjk+ZjBRr1nueNE5ClOG{ID+DB@H69uvTzgzMlq+ z9#Lhx&7h!IqBQ#H}B0=G(kikS8KD)U`zH4O?5-Q!6&9r!kvV;7`L0R8A>Xgdh*(4(uC$`srBje>DNa z$DM}Fq>MXaLvS_$)AQZ*;bSd=oYj@*xjq3jU{RGkMut6alYJgG4?0!O?qZ>h*4eCP z=z#GD4O3N_!x3r5L8(g*yELf?O&{jc$mia_3|27M>s_~*<1%+|2;IC%&;1Z{Fp@o^ zP*BV7AWuT|$>(s9gBlrO;gVR=&2_k};c^1*(j4&er`8?60vf&PoxKTb*e_OeDDm~> zYb6du%s#>UZP8wn-F(m;0dIG;`~98}q#2xx%Mip*s_TXe_#d(07)I{^3<^(|y1VIqok{5ygUvubXNQnRd002ovPDHLkV1nEn%((yn literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00012.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..be1cb70e260259da19e9b0c3f64828da7d97e67f GIT binary patch literal 280 zcmV+z0q6dSP)+7y&X z*SkHoTn(nLG2F)KQ2XG>86RgsfjM{+ZY#d-K8WuE1UMjK2{J|j(2zfaChh4SL#IcY emPj7}@FWLibeg&T8PFgA0000Hd5#h&OVee-a%?Q%XSeQ2Z^?-7$$@av)Lf*ZXO4GFhlc(x~Pr=Rvc{@T7pjB;K~>6Wf4 zWcODzu+-)!?Ca#scn*ya)JWK^l2J(9jFBNISloT0SI@wtlLOjGBl~h@SarZTbJF)P zRZmhjEz=$0q9fa9#!nbI^{Y~m7wQX86dCG^k&zne3j-f$f+(cP9C?_pr*^!|441@$ z4Rx3jP`Uu7BE%PqY+$k$G<`Ah1|}WwPrw1nzyZp@0iXo`9~rf0`3+qMsHq9m2LJ%D Z03QJ1&|R5g9Wej^002ovPDHLkV1kTthi(7> literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00014.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..7f639d2fbb0d52c6db51401b739d44954e89e208 GIT binary patch literal 355 zcmV-p0i6DcP)@23`FD9c>e>ta28Ib6v9spiPEoJC;~!<1On&$tZz*nQv0z9bq9j@$NP=qhJxR?^3$B*7pV&8ov z`_7~;>8OG@`htR~^L&Np68CrcP{1MtRl=jSXA~0Q5Twuy%@D*bKJC%Ax_7~14yY%N z?61SC0fM*B&6$dxBu>lJVn5MkyPE&KW6cExd7*v>k|IO>ZU|CC{m#G!mLLjQ@_>0* z{PfQ(2GnF$TT5ueLmL{%ul5x4)D*YI@mkOrzyQWLHh}qFSQoq+U<~!isR4#jpR_jR zFCuPL2J4i;MkA&F0Z65QOZa=C90{lo007_x`~YVq!qKA7LK*-7002ovPDHLkV1l)b BoiYFb literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00015.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00017.png b/tests_zemu/snapshots/s-op-liquidity-pool-withdraw/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00002.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00003.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00005.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00006.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1527226a78a35b9b29991152d8491e551d8a299b GIT binary patch literal 408 zcmV;J0cZY+P)t~CYgG)F= zhJVYtP^X+za!w3q$ffH`n!(4(4v#Xtf4C$KVFrfVfF<%nhz723xTG7?jkWEh6r|Fn zJ@P|gX{abS!0QAIIhr3Vyc3a>(rf@f<~$ea@)m2b=j~)CN5xBs%L#y@r_?m8img`? z5v-YAd9F$_r!4Z&PfVy#HD%!5^1cJ2lgs;VbX;BDcc%6rlFCAngwJn`*6_f=*rrba0000FhT>D2Qe@VG+A+0002M>YT^#r(DAhmghY?fD+t3 zJA(F@N`S;yy4l>kW(QCLGnVt%+-_HT!p;mJp(zJmbUR+3!cGDRw_ijzUjCag3;IXw z%mC>&;cT!!6~5Sa)up+S7wQinDKgX_Mnr0;KN#d-CUBvdTt#+~?)+CemauTM${JaF z_=wc?w_TZ6%7Ep-(#Yl0Ges+sH|uuM=Ub? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00008.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef3c5aa37585372bddd55b2bd7d3cb9ab94a117 GIT binary patch literal 421 zcmV;W0b2fvP)G9dIR{vJYPF03lf}x-;l3`{1PjtP0DeITeP@EUQ2HEOvk~ z*4wfMrRnMSuh&4rJ@8>)%V9cdn=b!r-}wyXFc&h-wcUlNfhBiUp*d(I`DhKOG)pY< zxN=vTndDxG($Zw`5~n>y$rsj7B`=k5=uo|d$2Rp?KYEK82dxPCGgJjSQetty=qF*? zEvWYo4rO28ikOWog545SI?CFcYNnKn%k>AecK~_|coZbcdDWNfry}WEpU~MhZN`;e zs*HNsBF8BEpe+FEEQ0JmpnKi}UD4C&we(qTz`(t5JUJdFvL6IN5Cn-grIShVI`tdW P00000NkvXXu0mjfJkG*+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00009.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c23620d82fffc33567dac3664d25d24f7db10a GIT binary patch literal 341 zcmV-b0jmCqP)T{{IJi&;uQs5=4gLWWjyoMZo|GtQbTHA%r}Y#k&I{`}T9Yyc>;#7o)Yr zPN-l@t9N zF3!5wasPTNrnxmO#+nY(QQCCj&wcP7){_~?G-DeD#=w(NRcH<_oQxTRY$7O|VzV`& zMs%?YlGbeS-4qf*V_|xZ@gr74&2R94OqUB9ZLLff0CE@h46A(31#{+AhAY6CK|aD- n&2^4b&u)0RCxj3}2qBRJwGE*>=t!I-00000NkvXXu0mjfDG!gY literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00010.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..d81d6a61464c4ca60ddb02e3e799a4daf5ee5255 GIT binary patch literal 365 zcmV-z0h0cSP)3~hMX_SkoI(OW7a6t1xp4;>R4-RNfAQNXE;x&2$ zPsc+97zuyKRF0}{@Q^nhQ!p>A-+`o&Vf}6>riS%910Re8S!g6@BMUXOC@zNIr-aF< zt7i*uCsZ{;YDbpkBHgKWV|<==XvZ>EWS705N}k0rYP@FDQ(4W=kSSy)Nllwz^hL~a z9ORg*E>`(@=qh*TJ#IxQBAmf)4>kPCUBBq)2)F~D;u{3izPiPV4!8>bqHtTXS}_IL znc%a#G6JNl>2%00ON(WRT8w553uRt6qixGCT2CS?00000z+C(QaNNan(%xJI00000 LNkvXXu0mjfx6_*H literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00011.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-create/00013.png b/tests_zemu/snapshots/s-op-manage-buy-offer-create/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00002.png b/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00003.png b/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00005.png b/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00006.png b/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..744f99c21a6e316c5e662fb011d3a856c538d2e6 GIT binary patch literal 387 zcmV-}0et?6P)NklKXMo1|B+N2^4H=_pSeW$^C9?%+MJAc$uZ3AJskz&lua$kGLGm)#8ON6} z``))9)4s^8XCDa~YD+m+sSjAf6GMWAXp~)}Mezu*07`-W`HZmbS&E&T hED`_!006-M@d3vX;^CrOKj#1d002ovPDHLkV1m9}ryl?S literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00007.png b/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00009.png b/tests_zemu/snapshots/s-op-manage-buy-offer-delete/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00002.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00003.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00005.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00006.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..484860e8e2c3488db204804cb361a09bdd5cc352 GIT binary patch literal 406 zcmV;H0crk;P)n0UR|v5U1DEeqR)|8sg((F=5Cs3qqHBKNimuk9B_9l+>>V5^ zFF{LnItlw$PeDSHqT2geOLb|OOB8Qi^JGrJfU5*78*xiI$!KhiC*Kb#U!9U3_I6rKdw!qd(xyNE28xqt+ zqU;havWI~H2nG7`HX*(f>YYx46a+yK1VJz#A4qZRv7M;U?*IS*07*qoM6N<$f^mAQ AuK)l5 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00007.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..27b91d161064a6fc4e133b07757d9c752090ebd0 GIT binary patch literal 385 zcmV-{0e=38P)FhT>D2Qe@VG+A+0002M>YT^#r(DAhmghY?fD+t3 zJA(F@N`S;yy4l>kW(QCLGnVt%+-_HT!p;mJp(zJmbUR+3!cGDRw_ijzUjCag3;IXw z%mC>&;cT!!6~5Sa)up+S7wQinDKgX_Mnr0;KN#d-CUBvdTt#+~?)+CemauTM${JaF z_=wc?w_TZ6%7Ep-(#Yl0Ges+sH|uuM=Ub? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00008.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef3c5aa37585372bddd55b2bd7d3cb9ab94a117 GIT binary patch literal 421 zcmV;W0b2fvP)G9dIR{vJYPF03lf}x-;l3`{1PjtP0DeITeP@EUQ2HEOvk~ z*4wfMrRnMSuh&4rJ@8>)%V9cdn=b!r-}wyXFc&h-wcUlNfhBiUp*d(I`DhKOG)pY< zxN=vTndDxG($Zw`5~n>y$rsj7B`=k5=uo|d$2Rp?KYEK82dxPCGgJjSQetty=qF*? zEvWYo4rO28ikOWog545SI?CFcYNnKn%k>AecK~_|coZbcdDWNfry}WEpU~MhZN`;e zs*HNsBF8BEpe+FEEQ0JmpnKi}UD4C&we(qTz`(t5JUJdFvL6IN5Cn-grIShVI`tdW P00000NkvXXu0mjfJkG*+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00009.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c23620d82fffc33567dac3664d25d24f7db10a GIT binary patch literal 341 zcmV-b0jmCqP)T{{IJi&;uQs5=4gLWWjyoMZo|GtQbTHA%r}Y#k&I{`}T9Yyc>;#7o)Yr zPN-l@t9N zF3!5wasPTNrnxmO#+nY(QQCCj&wcP7){_~?G-DeD#=w(NRcH<_oQxTRY$7O|VzV`& zMs%?YlGbeS-4qf*V_|xZ@gr74&2R94OqUB9ZLLff0CE@h46A(31#{+AhAY6CK|aD- n&2^4b&u)0RCxj3}2qBRJwGE*>=t!I-00000NkvXXu0mjfDG!gY literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00010.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..d81d6a61464c4ca60ddb02e3e799a4daf5ee5255 GIT binary patch literal 365 zcmV-z0h0cSP)3~hMX_SkoI(OW7a6t1xp4;>R4-RNfAQNXE;x&2$ zPsc+97zuyKRF0}{@Q^nhQ!p>A-+`o&Vf}6>riS%910Re8S!g6@BMUXOC@zNIr-aF< zt7i*uCsZ{;YDbpkBHgKWV|<==XvZ>EWS705N}k0rYP@FDQ(4W=kSSy)Nllwz^hL~a z9ORg*E>`(@=qh*TJ#IxQBAmf)4>kPCUBBq)2)F~D;u{3izPiPV4!8>bqHtTXS}_IL znc%a#G6JNl>2%00ON(WRT8w553uRt6qixGCT2CS?00000z+C(QaNNan(%xJI00000 LNkvXXu0mjfx6_*H literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00011.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-buy-offer-update/00013.png b/tests_zemu/snapshots/s-op-manage-buy-offer-update/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00002.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00003.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00005.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00006.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..194d5daf093aa1f745d9ea9ce1930416c61008cf GIT binary patch literal 481 zcmV<70UrK|P)Uh{_xCz9Bw4QH7k*2=a_fz@BUj5xH;f#scmcd-!4dn zSmK-IHQ;2F=3bQ}RE{H9;#c-KOqP{VOOJWoVNQ)h(@` zPI7?6c30~k2*%W5{ly3$>_qHBJ7H6YM_r|NZEkGT?TxO+=@YUC%xJebV2D%W0JdrB z1Ji?8>yX9HDQ6PFny00UJ%zQT>cbtPs3qGPTm+;;DR&u>2f{zp#T3}O$x&xOw_`e+ zEP}}XT7_xds>=?t+Hn#xfu!a&!t&!~{0OYN=d*_#NecYvDFPa-tpT>zlYu}W5YXWR X1%^%qzJmP300000NkvXXu0mjfEcMu` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00007.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..224f5560c1f3a99432b7eaaa54eaae0ed962ce18 GIT binary patch literal 390 zcmV;10eSw3P)KSX%vqc2(F9>006*K**a=}KWv}9aAEG+m|ze& zm4)VMV2zq`$^mIGZ>!3XUY*1DJ7N{C!F3zsLhHv zN5nj+A562DP33ZmXFyE3TReJZ057||o)+V;O;^5CeeYj_8Wsm4d6#C*1{{y`n&w-! zWB46#Exu3r)Tqqp8326}c{Yfmq<;nSRgNZKZl3+Hsjh)y++k>$TH*FrRDP+3KKUcH zr1$Ag0r1pT_5KYpTn+CJ1~Ir2RG}+rc@O6XtiG)_uT;d~B`v1xyUv4hZ_bOD`Eq1- z*u|jV4StSPGt8D@N*^(?ueqdDgwhPC1X2g;4)EFbW(fr;BFYW`Xia7})Twc2v_;D^ k_V?Zcr2qf`006+j4>B7(OBS~O+5i9m07*qoM6N<$f+}CC6aWAK literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00008.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..98e8e18ee3b3415921373cb34b523ccc5a962edd GIT binary patch literal 387 zcmV-}0et?6P)NklK22z6aBF`YhRE;z$Yi(+5t^BGg7j z>?2|k)EB1Nk7^{(0UQp)TlEr#s7j)Mws?nTUOpzGI} zBQLVLKr2htQQIagY+EiXWf9Yg==bV4yp*Z|t=K-z%E{DHVG97taQ~Fgwj_0pDj!)> h3IG5A000mX(I3gQLN+4at&{)&002ovPDHLkV1keMvGD)^ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00009.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..7716d11d5d4f30d806e994119ba3f8b2bb3d6d15 GIT binary patch literal 388 zcmV-~0ek+5P)@BhHN*e+b0fwmUu54!VZS&WtgmQq5UCIA2cz?k>z_dDINwJj&8xhdZ< z8A&Lb5o=r{=qQ~+diJoF!p3a^o=&)Gmxi`v^Wv$jQ`n!g866?Y>I>40 zv*~HhwIzdHzZN@iTLEhr76IP#4u>(@qpVqiJ~*eKrsSYen|NQ#Pq#<=0I$cRu`wlf z56ETjO3t$y8&ljSppL}-YABLY@t)kG;r0U|_Sa4YKPtT(m!_`0^;7sAChT?Y=lyB0 z36P|2>HRSwTn+CBgE`0qStyhIeYn5A7A$2*)yt!_$UBt(1(kaPPr`D+y{;FLM=sP=$h=EZE8k12IT_5}PrQ7MS~!Y5?jEe4A+ iYKjy900000Fy#XUNf;&`f&Vc80000usI&a_gq*NcZ35Pid$ig+|x> zQ0A1V@5Cs##fmt+<{;cydP%6n99NqaK}!&#fQ;E0;F>+6rd|kR9MYeW>@Rl5w&l> zmXB1~6tz1V%DIjpnK77`r@zV<;=;8Io@wr6{j#M4w5gj}e`heJPU|m5`rt}r6}l4N zMt(5U!{?epc5(CTsn}R)5}%&<00000NkvXXu0mjfNH*au literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00011.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00013.png b/tests_zemu/snapshots/s-op-manage-data-add-with-unprintable-data/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add/00002.png b/tests_zemu/snapshots/s-op-manage-data-add/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add/00003.png b/tests_zemu/snapshots/s-op-manage-data-add/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add/00005.png b/tests_zemu/snapshots/s-op-manage-data-add/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add/00006.png b/tests_zemu/snapshots/s-op-manage-data-add/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..194d5daf093aa1f745d9ea9ce1930416c61008cf GIT binary patch literal 481 zcmV<70UrK|P)Uh{_xCz9Bw4QH7k*2=a_fz@BUj5xH;f#scmcd-!4dn zSmK-IHQ;2F=3bQ}RE{H9;#c-KOqP{VOOJWoVNQ)h(@` zPI7?6c30~k2*%W5{ly3$>_qHBJ7H6YM_r|NZEkGT?TxO+=@YUC%xJebV2D%W0JdrB z1Ji?8>yX9HDQ6PFny00UJ%zQT>cbtPs3qGPTm+;;DR&u>2f{zp#T3}O$x&xOw_`e+ zEP}}XT7_xds>=?t+Hn#xfu!a&!t&!~{0OYN=d*_#NecYvDFPa-tpT>zlYu}W5YXWR X1%^%qzJmP300000NkvXXu0mjfEcMu` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add/00007.png b/tests_zemu/snapshots/s-op-manage-data-add/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..224f5560c1f3a99432b7eaaa54eaae0ed962ce18 GIT binary patch literal 390 zcmV;10eSw3P)KSX%vqc2(F9>006*K**a=}KWv}9aAEG+m|ze& zm4)VMV2zq`$^mIGZ>!3XUY*1DJ7N{C!F3zsLhHv zN5nj+A562DP33ZmXFyE3TReJZ057||o)+V;O;^5CeeYj_8Wsm4d6#C*1{{y`n&w-! zWB46#Exu3r)Tqqp8326}c{Yfmq<;nSRgNZKZl3+Hsjh)y++k>$TH*FrRDP+3KKUcH zr1$Ag0r1pT_5KYpTn+CJ1~Ir2RG}+rc@O6XtiG)_uT;d~B`v1xyUv4hZ_bOD`Eq1- z*u|jV4StSPGt8D@N*^(?ueqdDgwhPC1X2g;4)EFbW(fr;BFYW`Xia7})Twc2v_;D^ k_V?Zcr2qf`006+j4>B7(OBS~O+5i9m07*qoM6N<$f+}CC6aWAK literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add/00008.png b/tests_zemu/snapshots/s-op-manage-data-add/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..98e8e18ee3b3415921373cb34b523ccc5a962edd GIT binary patch literal 387 zcmV-}0et?6P)NklK22z6aBF`YhRE;z$Yi(+5t^BGg7j z>?2|k)EB1Nk7^{(0UQp)TlEr#s7j)Mws?nTUOpzGI} zBQLVLKr2htQQIagY+EiXWf9Yg==bV4yp*Z|t=K-z%E{DHVG97taQ~Fgwj_0pDj!)> h3IG5A000mX(I3gQLN+4at&{)&002ovPDHLkV1keMvGD)^ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add/00009.png b/tests_zemu/snapshots/s-op-manage-data-add/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..7716d11d5d4f30d806e994119ba3f8b2bb3d6d15 GIT binary patch literal 388 zcmV-~0ek+5P)@BhHN*e+b0fwmUu54!VZS&WtgmQq5UCIA2cz?k>z_dDINwJj&8xhdZ< z8A&Lb5o=r{=qQ~+diJoF!p3a^o=&)Gmxi`v^Wv$jQ`n!g866?Y>I>40 zv*~HhwIzdHzZN@iTLEhr76IP#4u>(@qpVqiJ~*eKrsSYen|NQ#Pq#<=0I$cRu`wlf z56ETjO3t$y8&ljSppL}-YABLY@t)kG;r0U|_Sa4YKPtT(m!_`0^;7sAChT?Y=lyB0 z36P|2>HRSwTn+CBgE`0qStyhIeYn5A7A$2*)yt!_$UBt(1(kaPPr`D+y{;FLM=sP=$h=EZE8k12IT_5}PrQ7MS~!Y5?jEe4A+ iYKjy900000Fy#XUNf;&`f&Vc80000S03HAb6XicuRm$)&m?5|!00000qkKQ7&$ybH!lySiQMH** z8SkSpnL&(wO4F6S9e2R-Aljcf$;bh36BUls&}~2UHvWvct!i0TOv#>kePz3uwacNI zK~xrBUa3|sPco9<-qFELeTHzA5q&8e}E@%4>rN(5XCugctRgNP1W7(di4|-Dud)ilBsP&xD z4^9r?Dn4rTeW?sJMt?H!fhX97JaIUOJK}WufL&AkwL{;QLa?|8%({Y`!Gz=%q_EBV zCMh7cp0XG%+&&AxJHx#y36J zz0hkO?}v*5fI3d){cFj%n%*A_V{j#$g|5VN9j*m-p-E*RNJA(aY^a{Q)qJD1zh^fTxR!1~+uuzpuwLyoTCZHBl8x#DBZKGOn=pauinp zU-HH7WcVHxS-m#-sx&Z)G%aSOKbM57;r+=V24{j@=u9f|aBVysugvZ$6*YUv7PF4vixRoFbP!9PV&aoa zt{3kJscLF(1dTVK%Sxpfa~I^8%WaAcPP?s(8QtKJ{w5Ep~gsEx`Mx zE%i_8h8T)5GH}q~b2vj7l`>J+5?OJ}6ZIB~>o i<>*p`5JCtc1m**%nn&bTF~ipY0000|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-add/00016.png b/tests_zemu/snapshots/s-op-manage-data-add/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-remove/00002.png b/tests_zemu/snapshots/s-op-manage-data-remove/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-remove/00003.png b/tests_zemu/snapshots/s-op-manage-data-remove/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-remove/00005.png b/tests_zemu/snapshots/s-op-manage-data-remove/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-remove/00006.png b/tests_zemu/snapshots/s-op-manage-data-remove/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..31160dbc832484603d4ea021edafe987a169c692 GIT binary patch literal 503 zcmVyI~of9vdgiI}10vg%G>YJ(l`?9;@M=@qdv!EsdSt#TxE8k~O z`}iCPn$geOG8$RF$VAn=nEYeIF1)c^W#!p#1Oe7f_;AEvVImRj3ShHxQ#!1wmF0Ct zZrk6r0eEgQWm`d3sAbIquTCKq!WJ7_4XB%-qu<-E8u;UC3R|eO_!VKc%-ZE;u~9`G zZRkSo3&{j}*(VnRe^!QLymw^yMCQ%jFGm6(iM`zWCt+Nj-akynAd=jLBJruizNb@A zLwhaFs6P7cz)fvP0G4!G0>E}d_pq}YS^%%H{Z8b7MtYpcsOPB-KRL1|zR2eyNb6DE z?;JHRm)es^8+DZ9&lNCjg=&|}o)xfTV4t(2hJk&S(sdNvJ6#;E0a$uq(hK7^DLexK z8&JhBR35kn0OUV+Ix9jA^TrSWQi7gs%TcxpV$-V2e#y>`D@ tVaSlIbl=)T@vXQ=g(VJKD0y1t_Gt#)=Hsm! z>A1&d>V{uX8-=O$L!5TwOUqT!Ui`%{5X0nIKw5%p%H{J>y8^_ld?+1CWo>)ET9^7> zI{|r-p~o6>g{S@wBGdmJZr_z)=JP<9=1ufiG8d7gMoO)e_f)#Wve+Z<}cy zRqF>v?z3b{2X#g{CKm_3Rt~4}**&-4*vuS#>M{YA+2qmhi4bZ;zcZMFk)R5VB(e_& z?onSar5Jp;#n>It>&e1fvJn$^J@%oHw(*%$Dh%g|reQOoltS$aXarIxSr4#T*02Qy zDIzMK01!>#X{b@-uGwbim)ie!6G{O90001hlOOC_S~()9P)Gm(002ovPDHLkV1no< Bv^@X- literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-remove/00008.png b/tests_zemu/snapshots/s-op-manage-data-remove/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9d174432889e436a321914f5e9a572d083b1f257 GIT binary patch literal 405 zcmV;G0c!qSmLl3B~Po|KFuIAA5AyX zey`uu4ZmQi7p682aoCkVEq6tG@rq&~hDmSEvfFf6=}4va4G^=kQ#w4A)$N^X?4|5B zzt;{xKFLtGf?Odhy63!WlFn(=IyP-J;F<&j<9^So6Bkz|Vxg)ft_X`|w%uMgD^=7| zJy3E#O(uPHP$DK5CoU_e)A;P3=7!D6(WfB;pqVWm{gDWvM)U`RF_;Nvp_x3W!+~2+ zNEOUp+~SvaKz~3MUTY(!pZS#bHRApVQjd9h{^vZ8TvkdV^m{<=0i-Ol8W6>{hn17R zmg+VDz=!%#-aKm*KRr6HtSJQm00000h=}L|(gI*449jhB00000NkvXXu0mjf7qqX1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-remove/00009.png b/tests_zemu/snapshots/s-op-manage-data-remove/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..07162185af0d0a700ad92e09eec53d71af15bc94 GIT binary patch literal 404 zcmV;F0c-w=P)N-Uzy}9d~`-y3sVaI$#GB z(fFfIxbb16SJkU6h5)H8wM#>WXaEka05vO5N`zjs&72+a1YCtZ9GU=GWG1*o92@Jv zEwxzNy`^iL;L-;~gE6oNtmV%!?xmidG?%y=h1wTHG#E~su)58T>up(WN3HD#M(#J0 z35>EsM&|yyPvpFZi4MVSqd!GWfTg)}^n+1C&FBZiImm=nD3knsc>Lfj*pwq;l*e9? z`w;Z^i17NIhBmPe)M}@sYGb^qpT|Bl2Tw_}Or1&K3XnK{!)uxX5PLu{^WwJ5uW719 y_5|FXs1j8B>&~dWB?otBqA8{bA%qY@h$|nQXEqemQwGog0000|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-data-remove/00012.png b/tests_zemu/snapshots/s-op-manage-data-remove/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-create/00002.png b/tests_zemu/snapshots/s-op-manage-sell-offer-create/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-create/00003.png b/tests_zemu/snapshots/s-op-manage-sell-offer-create/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-create/00005.png b/tests_zemu/snapshots/s-op-manage-sell-offer-create/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-create/00006.png b/tests_zemu/snapshots/s-op-manage-sell-offer-create/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1527226a78a35b9b29991152d8491e551d8a299b GIT binary patch literal 408 zcmV;J0cZY+P)t~CYgG)F= zhJVYtP^X+za!w3q$ffH`n!(4(4v#Xtf4C$KVFrfVfF<%nhz723xTG7?jkWEh6r|Fn zJ@P|gX{abS!0QAIIhr3Vyc3a>(rf@f<~$ea@)m2b=j~)CN5xBs%L#y@r_?m8img`? z5v-YAd9F$_r!4Z&PfVy#HD%!5^1cJ2lgs;VbX;BDcc%6rlFCAngwJn`*6_f=*rrba00000P{z+WAEeRwczHgvyU_5JNlMUXti82y?9@Dggb<_`RMUmSawa#lscgEc_-s mcJt{EF9Fi-iHL}ZNIU^gAZuU(-;~4DfJm_(@33hx_rpRdXaeiGA6D4`G~496L3S;+WZSU$C)ZqYO1y7M z7R+Ow|7RN!cXU5&H33r4P2JxS#%j1f8O(tv$U>f6b|0qi9W^ETh=Wq>yU&^kTcz(# zN2?j(5cGwj=7QA`91+5GNi|Dqf%Jk_XI)Ri`U8|%%8XuZEcA6J;dFLQqoE}^UGCeY z*p@XBTX(m!H2sFvn}TY!Y`IOU*}hrc>^}T$$GQUsUm6z~Hm##txj{(Bpq|HU5Z*+ZA&hD3dWhy0Ne)v b00446{vmfJut8`~00000NkvXXu0mjfLaM)& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-create/00009.png b/tests_zemu/snapshots/s-op-manage-sell-offer-create/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fe6a31deb5e0caef7d123b97d2297826477db3 GIT binary patch literal 429 zcmV;e0aE^nP)O)X-L8 zy8l8WgvJ4EjqEUMp4JBBiRv7usU2f^SR3#GEymXsj#DK)^sM7J%{RdsI{*{}Euxy$ z(xfh-?rCw@0M>8-fYxK3OtQX!L0#BQ{jkaopwTAX4YF#`lLjtSPg}#9F0nq8 zYG^qvCR3PkNA<&24v;3@RQ(-cq;~Zu<36y&qmU)PA|FiituHg=v-D1jDp7qpORj&h zN!gPcOkccfIh}oU;v_pFTV@~G9afjEj2Y(QXtYDoFpcH%D{AIm#HjP*ida1NIn1ga z4rteox?w2kB^e5J^Y*Z|hXaJvV@FV=h60;!n1*lysaYczqyeqd#?==`vyOOkv!U{# znmbon;P0Ag@(qiPUC#g+Saj@xk<*cl&M4-{Q3%EQIt0s`A@_j!D8Jtw$8j9TaeDFw X!YBaj-NklnP|l3J~KAYtBCqK$vcav7#k*!!Q|($n=s(N*OIbJ{swaEss87c7jzVz$*y zO7ysd?u3u*kDQ^DhHc1yg8Ck3*a`0?hlB9cWM&&7U^!(+J!Alcf4PqW1)QT{yZ~fh zQmh=#I-GqJjrzF5qQL@CGQ_&)qK?$-sR@7{FVvr|DzTUx{H@4cAhJAvk-{ekNj|jr hR|y6H0002EB_Guv+j~MTIsX6v002ovPDHLkV1h7es@ebm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-create/00011.png b/tests_zemu/snapshots/s-op-manage-sell-offer-create/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-create/00013.png b/tests_zemu/snapshots/s-op-manage-sell-offer-create/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00002.png b/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00003.png b/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00005.png b/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00006.png b/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..48a456806f26bdbf4a5763524399854c463649ee GIT binary patch literal 382 zcmV-^0fGLBP)O&G9f7e006iv4->85Pqo6^WCnzzZ9>uTjbbD)t#A+xMJ31Ol~8NXS+ggm*Fx4K4(uo)oy z7@6$_wLBtcfJXU6m}LMPGDf#yq1LM?nK_^>GRZ7|E!29Iny0P$y0TxWkQ@dp<9G9(U=y^@Jfjdx(jys*9lT_eN#ZZM{X^__taW`Zg-ldX}PZm9nwHrqOt zJ2UJE(b-Ds|87Uu^#3M`zlF@ibQ;XuUhy&8VH^Nr3G&>h@5&!@I c0Kot81J_63;nN*i{Qv*}07*qoM6N<$g49#1IRF3v literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00007.png b/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00009.png b/tests_zemu/snapshots/s-op-manage-sell-offer-delete/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-update/00002.png b/tests_zemu/snapshots/s-op-manage-sell-offer-update/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-update/00003.png b/tests_zemu/snapshots/s-op-manage-sell-offer-update/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-update/00005.png b/tests_zemu/snapshots/s-op-manage-sell-offer-update/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-update/00006.png b/tests_zemu/snapshots/s-op-manage-sell-offer-update/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..17481563a4f21fae704034ad4940ecd264f413ed GIT binary patch literal 408 zcmV;J0cZY+P)yMDf*iPu3JnI4i)^h%KQ|(byYLydO$FJ0&A*9l{D^ zWu-=8kzylr(CVByWt`uK@)IEB$_zDDr(;vHk$^yT9umA;YP5xpt>&Za{`OK@*3lYq z10P{z+WAEeRwczHgvyU_5JNlMUXti82y?9@Dggb<_`RMUmSawa#lscgEc_-s mcJt{EF9Fi-iHL}ZNIU^gAZuU(-;~4DfJm_(@33hx_rpRdXaeiGA6D4`G~496L3S;+WZSU$C)ZqYO1y7M z7R+Ow|7RN!cXU5&H33r4P2JxS#%j1f8O(tv$U>f6b|0qi9W^ETh=Wq>yU&^kTcz(# zN2?j(5cGwj=7QA`91+5GNi|Dqf%Jk_XI)Ri`U8|%%8XuZEcA6J;dFLQqoE}^UGCeY z*p@XBTX(m!H2sFvn}TY!Y`IOU*}hrc>^}T$$GQUsUm6z~Hm##txj{(Bpq|HU5Z*+ZA&hD3dWhy0Ne)v b00446{vmfJut8`~00000NkvXXu0mjfLaM)& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-update/00009.png b/tests_zemu/snapshots/s-op-manage-sell-offer-update/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fe6a31deb5e0caef7d123b97d2297826477db3 GIT binary patch literal 429 zcmV;e0aE^nP)O)X-L8 zy8l8WgvJ4EjqEUMp4JBBiRv7usU2f^SR3#GEymXsj#DK)^sM7J%{RdsI{*{}Euxy$ z(xfh-?rCw@0M>8-fYxK3OtQX!L0#BQ{jkaopwTAX4YF#`lLjtSPg}#9F0nq8 zYG^qvCR3PkNA<&24v;3@RQ(-cq;~Zu<36y&qmU)PA|FiituHg=v-D1jDp7qpORj&h zN!gPcOkccfIh}oU;v_pFTV@~G9afjEj2Y(QXtYDoFpcH%D{AIm#HjP*ida1NIn1ga z4rteox?w2kB^e5J^Y*Z|hXaJvV@FV=h60;!n1*lysaYczqyeqd#?==`vyOOkv!U{# znmbon;P0Ag@(qiPUC#g+Saj@xk<*cl&M4-{Q3%EQIt0s`A@_j!D8Jtw$8j9TaeDFw X!YBaj-NklnP|l3J~KAYtBCqK$vcav7#k*!!Q|($n=s(N*OIbJ{swaEss87c7jzVz$*y zO7ysd?u3u*kDQ^DhHc1yg8Ck3*a`0?hlB9cWM&&7U^!(+J!Alcf4PqW1)QT{yZ~fh zQmh=#I-GqJjrzF5qQL@CGQ_&)qK?$-sR@7{FVvr|DzTUx{H@4cAhJAvk-{ekNj|jr hR|y6H0002EB_Guv+j~MTIsX6v002ovPDHLkV1h7es@ebm literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-update/00011.png b/tests_zemu/snapshots/s-op-manage-sell-offer-update/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-manage-sell-offer-update/00013.png b/tests_zemu/snapshots/s-op-manage-sell-offer-update/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00002.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00003.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00005.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00006.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5287d1e6e29896460784392a5a1cd0a04d469280 GIT binary patch literal 425 zcmV;a0apHrP)TpkuIEZClUdp+ zd+x+La`3x~vXamVkmO~N=0;m3w7<_j9fCEU!gX>T^QCN5J6R9AS-VX$yO6jQKw~_I z-fR`5{r!mDB%)JL{{H#W*Q_)slUpdSXa}N6sh`EcLgH3{kqtI;DGZ8ro7h*lyMKR9 zMP8`C099nDzl?&^P=7I)gGi8tBKa0sR70yJ5$%A(Ca-wjDV}(ZB2W8Ajdx0iwYq7$ z=W=vIz|o46R$5`5T9GGTRxPj|V`)~aJ;sAo$67qMAF1)m4gdfE0N}s}4S4Y! Tgk`;M00000NkvXXu0mjf{Gr0o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00007.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00009.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00010.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00011.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..bd28fd41f852043673f0d9a66f085b294af589b4 GIT binary patch literal 446 zcmV;v0YUzWP)H9zMET#+RScaQuOysoxw@Pe40)oMo0ssKuQ#p1UK=}Q6T_2BAdd`S{ zE;Io2`mOoiZ9sq)jJB@Xh`c=>JP+Ef)CT@gGr+lsKiO5Xk7OC3F3+yBhP;`^^_64+ zU{!(+cBO`v0dBrB2cM#sJI{tcK;hWBqn zaW%YuGl;=XP=$8#-^t=MRDLyA0qYz_9kC{sA`v~#!?IzPHjEmqdO#j4bsc4mjD7xA z6>4V4K_`J~Lo_EVpP4)4iA>7uj7;swTG|M`PIyVTlDiju;n;auQ@yAYw$i`YZ*`_J zw1zh5j!TMz1}#mkQn}0qfSF6D3>w<>NG0*vt$jtEj)ic@;LDf_K-_M&g-pM2S1=L= zUw?7!R6}lAGLoI+0T^=P@*Ka2eRj@fK*jo#ulo*CL@u1}mRQ{VgRWWm6C3f7+mEc4 oxz^T_h7MifB=9}}000o-39(^b07*qoM6N<$g22ejUjP6A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00012.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00014.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-empty-path/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00002.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00003.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00005.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00006.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5287d1e6e29896460784392a5a1cd0a04d469280 GIT binary patch literal 425 zcmV;a0apHrP)TpkuIEZClUdp+ zd+x+La`3x~vXamVkmO~N=0;m3w7<_j9fCEU!gX>T^QCN5J6R9AS-VX$yO6jQKw~_I z-fR`5{r!mDB%)JL{{H#W*Q_)slUpdSXa}N6sh`EcLgH3{kqtI;DGZ8ro7h*lyMKR9 zMP8`C099nDzl?&^P=7I)gGi8tBKa0sR70yJ5$%A(Ca-wjDV}(ZB2W8Ajdx0iwYq7$ z=W=vIz|o46R$5`5T9GGTRxPj|V`)~aJ;sAo$67qMAF1)m4gdfE0N}s}4S4Y! Tgk`;M00000NkvXXu0mjf{Gr0o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00007.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bf84b39ea452d6497bdd882239ef7fa1671274fa GIT binary patch literal 488 zcmVP)9!F6WMNx$K|9krkD~ULeA}jiT zj^GcB7)^$`;`eOTq>FmmL>o`D9r%f>=+M0U`sH8g4?e%LcbXIqYO-iiQ-~Oko=$hy zX#0qTzcJ{1?W)4=zNShr$A*JoVg%5UfxWgQ;Zj${cnWj>0a4)9-W z*&SId*`3<#o4EEA4QXYz(-X~B*8vR_1d&CRFyrpR_`!v@xd7DfVAYqXY67Q+-DUGE zD(1;|ZfM3`>I5_}{Aps*GK1fck;=xPot5r?4C4#XcEQ!N0Zk65vbWe1!YG{FZaV`8 zJVTK)4`fZW$0Zgh>2U)DQjpmG3_|~F#2#ndO5$m(T{@|)fuP?M|EfIoHubTXSCqjw ei=rrs!ov&PK##~$gu5pI0000zvfQGi z@Lxe%0ieLE%|0OR^s+!ZMc4&Gj^l`3@j+J#u{U z4ayzM&()um#y%iP#YwOutMOX_&4aF6W^1}*ifE(NjE^yj>#NM(HylXC56o# zQBvN#;^9WXnDXS+p1EqcK(KDGIObstEKrw3>M}q2s^%Sl(Kj~TgfrZ4G2nu|2zPj)GL4w_0ULoP~;ZCT#i`urMsmKcExtL{>+Ta;0x*7>EBo^ir;w?CtzhohwZ!lZbK$>kYZ$$mag<@ z8T=|(CjflNp(+FF&aVp$${~oQ|A6HUV&Ms(Gl4S9YB(6IxznYp=V=sjloVM(x3ss4jFRo|7!tQ2DfyGz)u&sWc&*5so>5LmgS%s`|cEg~5Z; z3PF8b;+4o{fS}Z&7mN>)la{>vtDiNpRIu==Bo4t(Lje-Wzq}Px1V%qV??6&!{bMx} z)Cd*P)~B)vk|uml;1GtgPmN6MT+#`U?uYn*Az0C>ecA6_w(li)85!3K?G&ISfxP9> zDQRJpB5d;3v&Co4w*jm={Kb;XdirxJC7mHGr)iT~P^{so8IdUflqASkxCc5{Vj)(k hg+ifFC=?2t;Q@Ooda&l-srvu`002ovPDHLkV1h2t;b#B< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00010.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..beb98eb9d411efd2678866146926a3688718d76d GIT binary patch literal 416 zcmV;R0bl-!P)o&WdGuh~e%fxfy@_?5`Z zjGVd~%!zWJRt4R+Bg@DMci4?*P(MTR@A2Y?six8)Ta&b;(9)G>veBMUZ(`8gN{x!IfSWV$<@S} z{oSH}O;3QQa>MAaLJ2jZKN;j;CFnvcX_>?7erLmbyd`JG%Qp|s5;}4Z$5wXlr9qxm zIaFxySF*@t=*HoOZ_5K1vlS7~$~~fA2J17{CUf^0;BPW$z!3XRqg19NAGl)yo4j@&raslq$i6Vv4iaF*FQ@FwV1JC_390v zCOuh`q_VT2lX1EU|BLE1r*NfS=I4TPsQ1;yK1lDtPSfc(0qVBvI2le{WDB}47nuP2 z&%y@SpJ=SOkQ2m!BGEc5W~h}Rb2eo)000000Kl6cuon=jCDw5~00000NkvXXu0mjf DGIza< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00012.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..bd28fd41f852043673f0d9a66f085b294af589b4 GIT binary patch literal 446 zcmV;v0YUzWP)H9zMET#+RScaQuOysoxw@Pe40)oMo0ssKuQ#p1UK=}Q6T_2BAdd`S{ zE;Io2`mOoiZ9sq)jJB@Xh`c=>JP+Ef)CT@gGr+lsKiO5Xk7OC3F3+yBhP;`^^_64+ zU{!(+cBO`v0dBrB2cM#sJI{tcK;hWBqn zaW%YuGl;=XP=$8#-^t=MRDLyA0qYz_9kC{sA`v~#!?IzPHjEmqdO#j4bsc4mjD7xA z6>4V4K_`J~Lo_EVpP4)4iA>7uj7;swTG|M`PIyVTlDiju;n;auQ@yAYw$i`YZ*`_J zw1zh5j!TMz1}#mkQn}0qfSF6D3>w<>NG0*vt$jtEj)ic@;LDf_K-_M&g-pM2S1=L= zUw?7!R6}lAGLoI+0T^=P@*Ka2eRj@fK*jo#ulo*CL@u1}mRQ{VgRWWm6C3f7+mEc4 oxz^T_h7MifB=9}}000o-39(^b07*qoM6N<$g22ejUjP6A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00013.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00015.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive-with-muxed-destination/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00002.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00003.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00005.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00006.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5287d1e6e29896460784392a5a1cd0a04d469280 GIT binary patch literal 425 zcmV;a0apHrP)TpkuIEZClUdp+ zd+x+La`3x~vXamVkmO~N=0;m3w7<_j9fCEU!gX>T^QCN5J6R9AS-VX$yO6jQKw~_I z-fR`5{r!mDB%)JL{{H#W*Q_)slUpdSXa}N6sh`EcLgH3{kqtI;DGZ8ro7h*lyMKR9 zMP8`C099nDzl?&^P=7I)gGi8tBKa0sR70yJ5$%A(Ca-wjDV}(ZB2W8Ajdx0iwYq7$ z=W=vIz|o46R$5`5T9GGTRxPj|V`)~aJ;sAo$67qMAF1)m4gdfE0N}s}4S4Y! Tgk`;M00000NkvXXu0mjf{Gr0o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00007.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00009.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00010.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00011.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..bd28fd41f852043673f0d9a66f085b294af589b4 GIT binary patch literal 446 zcmV;v0YUzWP)H9zMET#+RScaQuOysoxw@Pe40)oMo0ssKuQ#p1UK=}Q6T_2BAdd`S{ zE;Io2`mOoiZ9sq)jJB@Xh`c=>JP+Ef)CT@gGr+lsKiO5Xk7OC3F3+yBhP;`^^_64+ zU{!(+cBO`v0dBrB2cM#sJI{tcK;hWBqn zaW%YuGl;=XP=$8#-^t=MRDLyA0qYz_9kC{sA`v~#!?IzPHjEmqdO#j4bsc4mjD7xA z6>4V4K_`J~Lo_EVpP4)4iA>7uj7;swTG|M`PIyVTlDiju;n;auQ@yAYw$i`YZ*`_J zw1zh5j!TMz1}#mkQn}0qfSF6D3>w<>NG0*vt$jtEj)ic@;LDf_K-_M&g-pM2S1=L= zUw?7!R6}lAGLoI+0T^=P@*Ka2eRj@fK*jo#ulo*CL@u1}mRQ{VgRWWm6C3f7+mEc4 oxz^T_h7MifB=9}}000o-39(^b07*qoM6N<$g22ejUjP6A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00012.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-receive/00014.png b/tests_zemu/snapshots/s-op-path-payment-strict-receive/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00002.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00003.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00005.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00006.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..de8581505c2e8fd1f46d7d49feee35d4c6a38141 GIT binary patch literal 345 zcmV-f0jBZVZk2Lil4@Wm*W2&Hc56{*?5A_?p=pj_j5 zwO%U0w$^FETc%@Og3_{EXRgM9`b6}wo`4ZP)F;af;MJzg21T7JY4}g#f5rM!j^!mJ z(I1C@p8uR1Z;TRMeR3ZFZJ<9;KMI1>P=7LrfhDLymIT{}6}wb4Gq@YtX}FHX&rA-X zSe1%#WNmPs;;tuQH&}Z?1IZ_3(YSVT$`yzl0KNfKrotSPwU4j?h#>9}um>2EtS8Wd rzp<&_R`QC^lf&x<000000B~DgT_nPi!Kh-%00000NkvXXu0mjfdXkh~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00007.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe3ad62813e9f98675968701c387af5b195f53e GIT binary patch literal 433 zcmV;i0Z#sjP)ikVxnM#tRn|VopG|6aWAKAe#5v!HNOc7TsVOe5cGRQnj${m!Gwzc?|SJ^8Q$E$a{ ztKj{*41NwHwk4eG6twMPo*75i?*p`7O8LqbU>YlEzhp)L%{J#~P_)wo4eg={t!byd zwW4b@ujWsr-HJl`}_|+pU zN3cYuN#$XHaotffOyztqK5qKv^^n%X07|*hktS0gH*Ad|43EDkva6wX8b2NMzB*cV z#*3|n>WiwhuCi?V?-j$e+~~Rn=p0VRE*O#?+3eip96bv)xxNoY@?pq1ARgoX9RL6T b0Kk(Ut6&tOz{M}_00000NkvXXu0mjf!*|Oh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00008.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00010.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00011.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00012.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..941dc3bfd5af44db19493cb94677268c9ffcfdfe GIT binary patch literal 454 zcmV;%0XhDOP)Y zILh2o#bZYimUVS;4W@9d5mf9uNiR7U(^I&x&WSvwkI++kv&FOjBE6tiVUIeMQ99mr z9F_2pqGsum^~$PyTqUe;ewY1RFaw_29P(+S&FsT>=4MYo!x=P?E1R7s(m* z1Zb+ypf>>ib<5^^-vyhBN*Fv5Ql{`nt9@T~1)#}^${Pg;?SO;Yw?Na^QbpcAijksl wZ4I8elyx$#HNIaCsp(J{b^`AM0000cZ-t{o?Ni|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00015.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-empty-path/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00002.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00003.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00005.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00006.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..de8581505c2e8fd1f46d7d49feee35d4c6a38141 GIT binary patch literal 345 zcmV-f0jBZVZk2Lil4@Wm*W2&Hc56{*?5A_?p=pj_j5 zwO%U0w$^FETc%@Og3_{EXRgM9`b6}wo`4ZP)F;af;MJzg21T7JY4}g#f5rM!j^!mJ z(I1C@p8uR1Z;TRMeR3ZFZJ<9;KMI1>P=7LrfhDLymIT{}6}wb4Gq@YtX}FHX&rA-X zSe1%#WNmPs;;tuQH&}Z?1IZ_3(YSVT$`yzl0KNfKrotSPwU4j?h#>9}um>2EtS8Wd rzp<&_R`QC^lf&x<000000B~DgT_nPi!Kh-%00000NkvXXu0mjfdXkh~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00007.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe3ad62813e9f98675968701c387af5b195f53e GIT binary patch literal 433 zcmV;i0Z#sjP)ikVxnM#tRn|VopG|6aWAKAe#5v!HNOc7TsVOe5cGRQnj${m!Gwzc?|SJ^8Q$E$a{ ztKj{*41NwHwk4eG6twMPo*75i?*p`7O8LqbU>YlEzhp)L%{J#~P_)wo4eg={t!byd zwW4b@ujWsr-HJl`}_|+pU zN3cYuN#$XHaotffOyztqK5qKv^^n%X07|*hktS0gH*Ad|43EDkva6wX8b2NMzB*cV z#*3|n>WiwhuCi?V?-j$e+~~Rn=p0VRE*O#?+3eip96bv)xxNoY@?pq1ARgoX9RL6T b0Kk(Ut6&tOz{M}_00000NkvXXu0mjf!*|Oh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00008.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..bf84b39ea452d6497bdd882239ef7fa1671274fa GIT binary patch literal 488 zcmVP)9!F6WMNx$K|9krkD~ULeA}jiT zj^GcB7)^$`;`eOTq>FmmL>o`D9r%f>=+M0U`sH8g4?e%LcbXIqYO-iiQ-~Oko=$hy zX#0qTzcJ{1?W)4=zNShr$A*JoVg%5UfxWgQ;Zj${cnWj>0a4)9-W z*&SId*`3<#o4EEA4QXYz(-X~B*8vR_1d&CRFyrpR_`!v@xd7DfVAYqXY67Q+-DUGE zD(1;|ZfM3`>I5_}{Aps*GK1fck;=xPot5r?4C4#XcEQ!N0Zk65vbWe1!YG{FZaV`8 zJVTK)4`fZW$0Zgh>2U)DQjpmG3_|~F#2#ndO5$m(T{@|)fuP?M|EfIoHubTXSCqjw ei=rrs!ov&PK##~$gu5pI0000zvfQGi z@Lxe%0ieLE%|0OR^s+!ZMc4&Gj^l`3@j+J#u{U z4ayzM&()um#y%iP#YwOutMOX_&4aF6W^1}*ifE(NjE^yj>#NM(HylXC56o# zQBvN#;^9WXnDXS+p1EqcK(KDGIObstEKrw3>M}q2s^%Sl(Kj~TgfrZ4G2nu|2zPj)GL4w_0ULoP~;ZCT#i`urMsmKcExtL{>+Ta;0x*7>EBo^ir;w?CtzhohwZ!lZbK$>kYZ$$mag<@ z8T=|(CjflNp(+FF&aVp$${~oQ|A6HUV&Ms(Gl4S9YB(6IxznYp=V=sjloVM(x3ss4jFRo|7!tQ2DfyGz)u&sWc&*5so>5LmgS%s`|cEg~5Z; z3PF8b;+4o{fS}Z&7mN>)la{>vtDiNpRIu==Bo4t(Lje-Wzq}Px1V%qV??6&!{bMx} z)Cd*P)~B)vk|uml;1GtgPmN6MT+#`U?uYn*Az0C>ecA6_w(li)85!3K?G&ISfxP9> zDQRJpB5d;3v&Co4w*jm={Kb;XdirxJC7mHGr)iT~P^{so8IdUflqASkxCc5{Vj)(k hg+ifFC=?2t;Q@Ooda&l-srvu`002ovPDHLkV1h2t;b#B< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00011.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..beb98eb9d411efd2678866146926a3688718d76d GIT binary patch literal 416 zcmV;R0bl-!P)o&WdGuh~e%fxfy@_?5`Z zjGVd~%!zWJRt4R+Bg@DMci4?*P(MTR@A2Y?six8)Ta&b;(9)G>veBMUZ(`8gN{x!IfSWV$<@S} z{oSH}O;3QQa>MAaLJ2jZKN;j;CFnvcX_>?7erLmbyd`JG%Qp|s5;}4Z$5wXlr9qxm zIaFxySF*@t=*HoOZ_5K1vlS7~$~~fA2J17{CUf^0;BPW$z!3XRqg19NAGl)yo4j@&raslq$i6Vv4iaF*FQ@FwV1JC_390v zCOuh`q_VT2lX1EU|BLE1r*NfS=I4TPsQ1;yK1lDtPSfc(0qVBvI2le{WDB}47nuP2 z&%y@SpJ=SOkQ2m!BGEc5W~h}Rb2eo)000000Kl6cuon=jCDw5~00000NkvXXu0mjf DGIza< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00013.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..941dc3bfd5af44db19493cb94677268c9ffcfdfe GIT binary patch literal 454 zcmV;%0XhDOP)Y zILh2o#bZYimUVS;4W@9d5mf9uNiR7U(^I&x&WSvwkI++kv&FOjBE6tiVUIeMQ99mr z9F_2pqGsum^~$PyTqUe;ewY1RFaw_29P(+S&FsT>=4MYo!x=P?E1R7s(m* z1Zb+ypf>>ib<5^^-vyhBN*Fv5Ql{`nt9@T~1)#}^${Pg;?SO;Yw?Na^QbpcAijksl wZ4I8elyx$#HNIaCsp(J{b^`AM0000cZ-t{o?Ni|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00016.png b/tests_zemu/snapshots/s-op-path-payment-strict-send-with-muxed-destination/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00002.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00003.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00005.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00006.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..de8581505c2e8fd1f46d7d49feee35d4c6a38141 GIT binary patch literal 345 zcmV-f0jBZVZk2Lil4@Wm*W2&Hc56{*?5A_?p=pj_j5 zwO%U0w$^FETc%@Og3_{EXRgM9`b6}wo`4ZP)F;af;MJzg21T7JY4}g#f5rM!j^!mJ z(I1C@p8uR1Z;TRMeR3ZFZJ<9;KMI1>P=7LrfhDLymIT{}6}wb4Gq@YtX}FHX&rA-X zSe1%#WNmPs;;tuQH&}Z?1IZ_3(YSVT$`yzl0KNfKrotSPwU4j?h#>9}um>2EtS8Wd rzp<&_R`QC^lf&x<000000B~DgT_nPi!Kh-%00000NkvXXu0mjfdXkh~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00007.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe3ad62813e9f98675968701c387af5b195f53e GIT binary patch literal 433 zcmV;i0Z#sjP)ikVxnM#tRn|VopG|6aWAKAe#5v!HNOc7TsVOe5cGRQnj${m!Gwzc?|SJ^8Q$E$a{ ztKj{*41NwHwk4eG6twMPo*75i?*p`7O8LqbU>YlEzhp)L%{J#~P_)wo4eg={t!byd zwW4b@ujWsr-HJl`}_|+pU zN3cYuN#$XHaotffOyztqK5qKv^^n%X07|*hktS0gH*Ad|43EDkva6wX8b2NMzB*cV z#*3|n>WiwhuCi?V?-j$e+~~Rn=p0VRE*O#?+3eip96bv)xxNoY@?pq1ARgoX9RL6T b0Kk(Ut6&tOz{M}_00000NkvXXu0mjf!*|Oh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00008.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00010.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00011.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00012.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..941dc3bfd5af44db19493cb94677268c9ffcfdfe GIT binary patch literal 454 zcmV;%0XhDOP)Y zILh2o#bZYimUVS;4W@9d5mf9uNiR7U(^I&x&WSvwkI++kv&FOjBE6tiVUIeMQ99mr z9F_2pqGsum^~$PyTqUe;ewY1RFaw_29P(+S&FsT>=4MYo!x=P?E1R7s(m* z1Zb+ypf>>ib<5^^-vyhBN*Fv5Ql{`nt9@T~1)#}^${Pg;?SO;Yw?Na^QbpcAijksl wZ4I8elyx$#HNIaCsp(J{b^`AM0000cZ-t{o?Ni|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-path-payment-strict-send/00015.png b/tests_zemu/snapshots/s-op-path-payment-strict-send/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00002.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00003.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00005.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00006.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..2079606ab80e4dccb4cccf821ee74617d0dec7e9 GIT binary patch literal 444 zcmV;t0Yms!-v5ESsEd`E`~uDidEz@=6jN|N6Q`vV1VIo4rabPS&xjMo0-cLp%(>c! ze6igoI)B{LcB=*5jg`e4zXVXS9J@@VI;C(L)il|KN%|LPeaJuQ7tsiR@(rLv=wvcZ zGoXCN^V2%@=4t);4O~l5RRPQd+Jlypz%Mtyv<8?_tthTD!zlr@+LW__QG{7G_e-#^ zQf2RCya%x^gM&A?cOk^m>ZcVFz(rYI{e=Khhx*1u4m^n}21JeR)FtAP9mW(C`FJJye2!x}f@BhF()I*%g5JIZ?0qTC!Lz+5-E@smqB>(^bU@80dxq5=sW@^FpnVw{R z<*|OrH@D}C;QJ$K{(CWCEyzra zb^!g4Q;Qgj?ms>-wIJpIV+B$a&x_JcU{@PYXTU&oP1%WJx-*OlP`VA>4Z3zUr^=5? zLu2!LR`xa(`m3Nb`33LZSR%CgDMA6XRidjO2tjJ7zZlfO61b2hfzM&Ffx#LK{Y}=X zxJ|5$(kwdDcJ|8MIsp)f(s0;7y!B0-9gzD3m+RoiDZoiw^mD%8as>brX?}*LU_q=359I~0001n@;ttuocJXCW3H<>BnOn;^Kn`M z^cklm;*1ciaWPy=5UT*g1PVdvBJj)2mG*#PupPy9WjG~3RvWq+6h)M6GknE1a8v#9 zPR3^v^U^u_0sp-aVruob84{pHnO*&fNJtI!2ZJ1Vf-2-m<33F9FN=2oYj>kj5u{Qp z1G!5WcB+iw7j~9iYB5TDGkMoyx@DZsnI8A#Gj7Ck60SL^{txoheR@3E){XMcYbEE( zpOn(meHUcP|MJd^in7+70OdAchF{FNb>nS9zFOrblzd@W*jXaA%Ci^70!ebK1ONa4 b0MqaSTB6U-nNbYH00000NkvXXu0mjfP?x6l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00009.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..40eeb64d7d2d3322b765c2c3b666d8b407681686 GIT binary patch literal 377 zcmV-<0fzpGP)xQj%_PHTZ3AMYAYvFV0v>K$iLsjvM+0d;@Sk;+G;$$MPK6Aie|k-WKS! zjb=p_L3{`7VUcx$w=ol}0cZ)Zpl3jeL76U^+r)Ac*_k)~+v_-}JB-eM!4N_SA;Z}K Xs>aUJuf^(=00000NkvXXu0mjfN@}Db literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00010.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00012.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00013.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00014.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00016.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum12/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00002.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00003.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00005.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00006.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..00d009fa585bd51f12b502896b11a3ce07d49bcc GIT binary patch literal 444 zcmV;t0Ymz*){ zWXJ<60}v8jr9Yjgi`Oh63)_DB8zhOELaYx2czxiLQ7jQk-OwviQNd#o_^p6=j)&QL zX$p>4x-7V4I^HE{+p~4%YHpByB6@fS;KV($Po67)SDSb>DA`FC4Q~?riuEV&|Fl-t3Au9zD(}BRaF78=o`ydTM25bV9oA|!idre5Z^q*?{%vt z+BA;yH?`zFJSYS8C1~cYy6**9*Y3qiX#kXsAm#UhA>67xYivKK&x^R|BBxx{y@xR` mfPVKYc3&Q39{>OVuh7cC%(c_}GCk|arzjOM-le>|H=Bhu#k2%Yt) zF(sGWu;KuAM0Z#OuMnvs#R|)M_*q8KvZNncA80VL!K*|x>lkAONSEJCTn5xJUZVSQ z6TG*>=5-peBg2URAK36?V3~R%4u9fY0fy?ko0G>jnh;Bt+8lG7c>>KXm06H{Sn=YDA2el z!D2a`1>)06bwD|DHf2be<+mMm!>!b3=KV{bT=P|`1CS~mbk@F;ph~@eVcQSGF#mgT zMF|S;qM$f+=88So#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00010.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00011.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00012.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00014.png b/tests_zemu/snapshots/s-op-payment-asset-alphanum4/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00002.png b/tests_zemu/snapshots/s-op-payment-asset-native/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00003.png b/tests_zemu/snapshots/s-op-payment-asset-native/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00005.png b/tests_zemu/snapshots/s-op-payment-asset-native/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00006.png b/tests_zemu/snapshots/s-op-payment-asset-native/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..00d009fa585bd51f12b502896b11a3ce07d49bcc GIT binary patch literal 444 zcmV;t0Ymz*){ zWXJ<60}v8jr9Yjgi`Oh63)_DB8zhOELaYx2czxiLQ7jQk-OwviQNd#o_^p6=j)&QL zX$p>4x-7V4I^HE{+p~4%YHpByB6@fS;KV($Po67)SDSb>DA`FC4Q~?riuEV&|Fl-t3Au9zD(}BRaF78=o`ydTM25bV9oA|!idre5Z^q*?{%vt z+BA;yH?`zFJSYS8C1~cYy6**9*Y3qiX#kXsAm#UhA>67xYivKK&x^R|BBxx{y@xR` mfPVKYc3&Q39{>OVu6{h)c87#@yz;k$g;K3*cuM*LsV=iVu?)JvmWk4L`A-bze zur7zm<1`X2-LWn~)10j{<>>l4P@jlC)*EQX2_nk~DmX7qrCAN6C*% zM*o5Fc>jGK{A88U)hG83&=z`u`lBF74fQ(%A6SAaWQo)Fu-KVM`UGNwQ@j*g4*L9k za2n!D7wA^MQ@_iD0~pq=h$@7mnTwOuJ$$qxb_K7TMN7`B@e$g~xz~vUb~%(D!+RO3 z1m(gu*iYlyU$OF$0e_5-4B&xzJyheUkGr1j{$>CG00000#cUBQ=x;CWq{RRL002ov JPDHLkV1nB2p~wIL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00008.png b/tests_zemu/snapshots/s-op-payment-asset-native/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00010.png b/tests_zemu/snapshots/s-op-payment-asset-native/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00011.png b/tests_zemu/snapshots/s-op-payment-asset-native/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00012.png b/tests_zemu/snapshots/s-op-payment-asset-native/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-asset-native/00014.png b/tests_zemu/snapshots/s-op-payment-asset-native/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00002.png b/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00003.png b/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00005.png b/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00006.png b/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..00d009fa585bd51f12b502896b11a3ce07d49bcc GIT binary patch literal 444 zcmV;t0Ymz*){ zWXJ<60}v8jr9Yjgi`Oh63)_DB8zhOELaYx2czxiLQ7jQk-OwviQNd#o_^p6=j)&QL zX$p>4x-7V4I^HE{+p~4%YHpByB6@fS;KV($Po67)SDSb>DA`FC4Q~?riuEV&|Fl-t3Au9zD(}BRaF78=o`ydTM25bV9oA|!idre5Z^q*?{%vt z+BA;yH?`zFJSYS8C1~cYy6**9*Y3qiX#kXsAm#UhA>67xYivKK&x^R|BBxx{y@xR` mfPVKYc3&Q39{>OVu6{h)c87#@yz;k$g;K3*cuM*LsV=iVu?)JvmWk4L`A-bze zur7zm<1`X2-LWn~)10j{<>>l4P@jlC)*EQX2_nk~DmX7qrCAN6C*% zM*o5Fc>jGK{A88U)hG83&=z`u`lBF74fQ(%A6SAaWQo)Fu-KVM`UGNwQ@j*g4*L9k za2n!D7wA^MQ@_iD0~pq=h$@7mnTwOuJ$$qxb_K7TMN7`B@e$g~xz~vUb~%(D!+RO3 z1m(gu*iYlyU$OF$0e_5-4B&xzJyheUkGr1j{$>CG00000#cUBQ=x;CWq{RRL002ov JPDHLkV1nB2p~wIL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00008.png b/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..bf84b39ea452d6497bdd882239ef7fa1671274fa GIT binary patch literal 488 zcmVP)9!F6WMNx$K|9krkD~ULeA}jiT zj^GcB7)^$`;`eOTq>FmmL>o`D9r%f>=+M0U`sH8g4?e%LcbXIqYO-iiQ-~Oko=$hy zX#0qTzcJ{1?W)4=zNShr$A*JoVg%5UfxWgQ;Zj${cnWj>0a4)9-W z*&SId*`3<#o4EEA4QXYz(-X~B*8vR_1d&CRFyrpR_`!v@xd7DfVAYqXY67Q+-DUGE zD(1;|ZfM3`>I5_}{Aps*GK1fck;=xPot5r?4C4#XcEQ!N0Zk65vbWe1!YG{FZaV`8 zJVTK)4`fZW$0Zgh>2U)DQjpmG3_|~F#2#ndO5$m(T{@|)fuP?M|EfIoHubTXSCqjw ei=rrs!ov&PK##~$gu5pI0000zvfQGi z@Lxe%0ieLE%|0OR^s+!ZMc4&Gj^l`3@j+J#u{U z4ayzM&()um#y%iP#YwOutMOX_&4aF6W^1}*ifE(NjE^yj>#NM(HylXC56o# zQBvN#;^9WXnDXS+p1EqcK(KDGIObstEKrw3>M}q2s^%Sl(Kj~TgfrZ4G2nu|2zPj)GL4w_0ULoP~;ZCT#i`urMsmKcExtL{>+Ta;0x*7>EBo^ir;w?CtzhohwZ!lZbK$>kYZ$$mag<@ z8T=|(CjflNp(+FF&aVp$${~oQ|A6HUV&Ms(Gl4S9YB(6IxznYp=V=sjloVM(x3ss4jFRo|7!tQ2DfyGz)u&sWc&*5so>5LmgS%s`|cEg~5Z; z3PF8b;+4o{fS}Z&7mN>)la{>vtDiNpRIu==Bo4t(Lje-Wzq}Px1V%qV??6&!{bMx} z)Cd*P)~B)vk|uml;1GtgPmN6MT+#`U?uYn*Az0C>ecA6_w(li)85!3K?G&ISfxP9> zDQRJpB5d;3v&Co4w*jm={Kb;XdirxJC7mHGr)iT~P^{so8IdUflqASkxCc5{Vj)(k hg+ifFC=?2t;Q@Ooda&l-srvu`002ovPDHLkV1h2t;b#B< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00011.png b/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..beb98eb9d411efd2678866146926a3688718d76d GIT binary patch literal 416 zcmV;R0bl-!P)o&WdGuh~e%fxfy@_?5`Z zjGVd~%!zWJRt4R+Bg@DMci4?*P(MTR@A2Y?six8)Ta&b;(9)G>veBMUZ(`8gN{x!IfSWV$<@S} z{oSH}O;3QQa>MAaLJ2jZKN;j;CFnvcX_>?7erLmbyd`JG%Qp|s5;}4Z$5wXlr9qxm zIaFxySF*@t=*HoOZ_5K1vlS7~$~~fA2J17{CUf^0;BPW$z!3XRqg19NAGl)yo4j@&raslq$i6Vv4iaF*FQ@FwV1JC_390v zCOuh`q_VT2lX1EU|BLE1r*NfS=I4TPsQ1;yK1lDtPSfc(0qVBvI2le{WDB}47nuP2 z&%y@SpJ=SOkQ2m!BGEc5W~h}Rb2eo)000000Kl6cuon=jCDw5~00000NkvXXu0mjf DGIza< literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00013.png b/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00015.png b/tests_zemu/snapshots/s-op-payment-with-muxed-destination/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*$ksY9RN12P1?K2oUEo5H|xftkrDKonY@6EKedG( zmmCcX(ZUFcW?$8JAL)onuCO{>2KHazSn{RM&%sx~^D+HjWCw%*cTHy_ec*|46iN>9 z`;yUV=H5l!IWb=liq`WnuE_tKnb~LYBo~wFbCM-bJJD9;3_v+ z3^_rpW(}7G`mojk{tHmeDp&cffZ~kBvohEsa6OER^dh`)-2*Q7_oqg@05KUijPKQ# z@>Y~f!PY&-cpA#IXEIyy*WgUD3Z2OqUDa!GmG;*8G6gX&WmtZ39s%C*GPNbzs@)Xvl z_^A{tU30XA&?FH}KjHngyZpCZ8qzKu;u7%?54X2S#A!ipR%=Js)}{_wfIb8V>Re9v ze|W8%#S||9BW5YWsJx5P!W1qH5N*{`Uf;66lm1Nr%!;qf5%U5V6Iq+G4Yx-DPj`hh ziYRVtN|3`dKBU%xs6bm>B8d{7Hxe)dfYU%|bknBOwACp4`w{Jsm^hODro5|uCt=Kv hD4w24k|arDVSBJMR4$^T&Ww|0S=9=HqNO1?j^j9v4e!^lDDZyWE=^0W0a>zq zqy$l?X_^(yDmSjRZ{{SUVLnZIkw}UjXZbdk;Qw&6uq6Jb_Tz|}{Nk*K;1wWGL$YOC zVX?NjAUG-dKAU*-cX5$s>jpE0f?RpyF%3aG+C3szJX_Y*zA<$GoIx8Q+Z0v}SQ$nR z$TW*l=s0iTsCWx|)5{I~CXBaktYOwNE0;wN2~&Gb-X1zf+V*(issFKlSmXfd!N0Qp zS_o6S^(W&#ScylWmE4Vd5Y^ntH*=3rPM-hBv=7;=N+S3AN*)ur&T+=6SeSJVlSTMQ z-Tsa(Bwpm4jOOvGWDZxAWtDNcUSid)Mh8LY7rR_g1LiL>LKecBu%c0SOsW`z6XbhH)f8ed3H9Aa8dg(7RJeXAV-5+>IHQ?g9O)feiZi z7?!RuJ@;8S~U_pDPjp1NjfFkeiY&Y?2K?Xf6w%n!HfAPmQ`mY$8j9TS;7ak W(QqY|)H0j^0000xnVKI%rGFuq!1=k|arDcsKj(K3D6ON{CUgPd-u*W~cMr&npanph z)pSOAZ8qU({&|c15T=iAsv#6>O^=sHZBzdgygFZ6dhB-NuIqTeELs5V#!GpBEsU$v z`;*BvSV`_eE7?1FV=kl96)MgYQn!%`HL!OUCril$sTiebLe)@= zVw+x2<(76z^7N|IbdF{Uo07T-WIcs~)3zigEPMExbg7 z;)LiXba_9hco&obbb5Bb4neY(-Ix8d)9rf-aph=44Kx!aBo%pSMyI4iZy~+POUD-9 zXubtN(cur4*mnbdpHfMu3DaL@#8pEpT|visgt~w|beb=J4)1|ZO(c#*YLX;Lk|fE+ Zcmw#wf?>0Hdh`GQ002ovPDHLkV1iGi*<%0z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..89842ad48d9b82b9fa10c1cc25d3c8e6cbcb73ca GIT binary patch literal 418 zcmV;T0bTxyP)|0`HDWjwd@ExB5;|g)x+n3P-Kc~-`TH^cVKN#n>Hxf$mu>`IFyrGJo zJY(});$?4ywJ>`4437VEb?eeS(nGoyXCk)+Jv8sx!Y$^V;=@I*0O{WSAktLUGE4E{ zB2j=Wrnn1j`)xaFUZ%6r?;GleFg&_pgviX4EKk{{p4Go>L>`kdNn^-MvLEaUfQ@=j z_RT4z+Ow~W*T53rg)Ff-hl}!LuOxujv&m~Z8dTHhQHfyF;|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00014.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-account/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c3c68ef1fdefe42159df43db0348d7cec4d69e GIT binary patch literal 515 zcmV+e0{s1nP)+XIjls^ewL+m#C_EKETEqAM+3(Mt$}!P$ z@F0>ir9K6S+zrO;v#}2c@WaRv-}rf=%>nxx5T98b1(V-BYUerTY=iAEe*`Y`uj(Jc zc596oX}S##_8{1*JZFr!x)-2KG9Kjjf-;CW$g}0ih*ZVu2hl|LGqx+>3e3drEy4>6 z#6X3Oa#z<%SORzkpf4rC9UUet0eLW*{%swcgDwH!;A+y@Mc&C~Ts2lu&f=-K3_WLX zF91RKby&HETH8XlHbTO9FbeKFj%efszfM`F-viuB4y@%lc?IBmVN1Z7AaFaUr=fCi zC!D)b!31HEuQY@43TF^G^*(q_WzF5@w!aY81f+sDpS>qxpmAc|5!hgNM)(vbZPN1~ zX~~$8BT9QLu6SPPt&*okcNE3WF~X~lJA)=ijlI29s4IZnp*xR=_)jGg^UjL+hbzL~ z0(AmN{c@QWZdsyw>eYO$im_c`HsK|k05;4*^lz119oKXL*4e|@ZXCiIwNj~QGG_d> zPp`jT`RavRWd+13xLJ_xVmial&Deqp-lzl=3WdUR@c~f{eh<@xx5EGc002ovPDHLk FV1oPY?41Ar literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00007.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..e88054f91f28415e348b91eeb240cd40ebfd5181 GIT binary patch literal 480 zcmV<60U!Q}P)}Ep&6c_T{dg-n>z#U$g z_XO-}TJV-eid@_n8|EX1(DIbG-Bn=!3(O@S`r_<-1z=rB4m1}89M^O=A_ga!oP~l* zG#>KO7~oqw&(R%63wTQ}c=({oxY%bF;1J#e_EbUkH=}%f)*-BDTRhi87Ci@W`z&_b zLDaiMwDl-r#Y+aC;CR$rlaX!5yA9*}EGR$Rjx1EOHJ%gfTA;oIK!&0~Icxh1Mcugo z7-zI`&zx?%i;V%`sUUsV|8XSsR8j{kpEvxmF8Yf>ckKataXb@Gajpyvf*=TjoAU#@ WGCr#$kaH9O0000_5b3!z zoFI>=LIEYshEO^gE9G}V*-5ohRx69CO2wjJAh&WHUI8V9frp2PQD}sv1xy>sO??snJlNYsgUJ7Z&%c7&d&vSvXJMY=NQ@= z7OaI4md1^-^7xSlq2@`OO|H}HfU#t!&(FqJ0G2`<_raMAjzUfol}TRg zgBYXJM^Mt5c)%hK#MVs3+$&zn?c^CcY?aMQsUFR4ynKS5b(6oNbks9>!ZwhKI5!DQ zMko33>(iHr)|ip#Bv%VXNw5F}hGIF92u&fWL|?5t7Z@*@*r00000NkvXXu0mjf D%}mrn literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00009.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffea1361960f05f56aff2658beceaf339ccc50a GIT binary patch literal 418 zcmV;T0bTxyP)rX7lX)jtQ8>uH^{I8HC`oUQr~6Ih!R{M+7w_>j*?t7uajNgy?f*&hp{m~& zrqrnZ#h?c*!79{}vVC}6`Wi{)Nu{Ep*9kT0h%%zyuxyHlnf34oo0}$Wz4Tbb6NXnE zMbv^mOy<{C-ms5|w`u^rLUFpoGS-lFLY4IqMMI8THGt*t)INO7S@l!p5r=X9bf^l- za~>M;=mF6q8gOT%OZk=DR`)RS%{_gES!9^MI@U)N4FLcE006*`4{6#;R(OPomjD0& M07*qoM6N<$f+Cc^mH+?% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00010.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..6b07718cabfd376b23ba517253b1724331103dbe GIT binary patch literal 492 zcmVGt=`u={u)xS+KYiQhn zQ*&sElw>le0M%3F7a2bRYA$nuCAP=_Hiewgzhmi9?+oyosLModB4@}FX8Y9Iw*QR< z0g$e#7jo~YL-eNltGDt@laYAj*ow})G%4^40-(CjV#I@Up+2S8&hDAPB`K(A=>-`I z70zPcx%#tZ)_bw_t!CvJ5Z(-jD)e>mc=NA_W+uk+IMpW48>V4xz}CGW-i zykGX6|K{V5^8Q{FSEu(cCS$OZ%tAZqKZj*|i*>K+$C6QXwmv0C9eLVQ3ylF)g%%du zjs06(`pCL)WPJUI@Hq;$Eq$w6Z9tZc%<>IZh{?`)H+}&{{i{|Ws$>qa8jT%gr&{7l5E)RFx-P78?rlZLMlskm+}Z~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..5f38d1ab1036f2d13267424f389e8a6c69b699ab GIT binary patch literal 491 zcmV-shU*GPZs+ra`A3*c$ zM#3$LO*6oLy8WWy6Tsn;6li9P0wAy8Z?s!9KVr)Sk3?T8d=eR5nlYKD+O+*Q77PGS zP5;8@j@X48#Z|BEGebf0(KR+q99Y|zk_LXk0Ep?+n8{!wWSDV&joFjIDO(Uo+e@U& zb@>0>cL#8FR@MNw(e3KsiPqbRa6g0S zZKwDex!H9;a*$;{bR&nd$VmKIbkG85%Yf)t*-xzMNL&k^>T7Zj7zB` z+({F8Mx6kfYoo~(>-J%9hd4`)UWE8B&5wAC5f}hhddwsc1cb z>e-Bhje#1grT5nSJKe&ciR2_eP+{5B+My*~q zQNNr^fY$at>K})ZI@RAy=HMhb3!P+U9e%&Q?DcPNl$@Fkk**botOaZf#%x+}HS{98 zjnaXl-L%$4mTb5H2aR;W#-MaTlOZ_)@Y{$f$8canYBx_P^-m6_5Xgp(J;ANN$TrXt zVKxE!si)p+Utzdr>rBK3ww>77vb*R7HLwH>L+RjGmyjLMS{G|-015Dw8yRcT2_+KA zN?W{|A3u2-x^hB!`gHRuKmypaz`-IJO)h;1oa;hq3*MTG=OjszBuSE_;~zNkXj29d REQbI9002ovPDHLkV1kr|)ldKc literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00013.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..c21375e3d13229d55a6412c8d68ed984e3fe95bd GIT binary patch literal 323 zcmV-J0lfZ+P)VS6y?XhCtQ$kcn@S|}wK3&s)w003B(t#Q2f>l}X1y5&sw6G)NG zOjJ+qmK>zDY4XojfxaBcT_os_RI|oY`a7)^B62B!B)7y=Q(---Zl3CNz@Y$An!-1s zn)pritIzeBpOP$8S2}ZR>Pw9Z@7#h+neHgq3b_c>{^Qe8yR;zE+Dnbe3^+cI=mb{B za|W0|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00016.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-claimable-balance/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*@UL7@!}ak!?mk?~XQF23 zlSF1o*+27~49eb~-@+#_TgLkL<4tr(Ta;cv$*o;hIS0))yB+8y8%y-9RVh}Y}D@s(23cotJTGrQg!8`0V48E_Y+Vnc9HXJFBC<=yUfV82CKOFp#a+4&Q&KBm7#HXsN%T+_c1IXIHRRVdhm z5o8ZJpr-=#Q!_J-J9j|?@ep1cUxa(=vFWZ$t5appYF=ATT>Xo)U1*MK}n8AP9bdCr`#K U4->9>cmMzZ07*qoM6N<$f`qfaxc~qF literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00008.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..372ad5fa5cc0d79a61b9c0e2b04fcc766d8deed4 GIT binary patch literal 491 zcmVyy*WgUD3Z2OqUDa!GmG;*8G6gX&WmtZ39s%C*GPNbzs@)Xvl z_^A{tU30XA&?FH}KjHngyZpCZ8qzKu;u7%?54X2S#A!ipR%=Js)}{_wfIb8V>Re9v ze|W8%#S||9BW5YWsJx5P!W1qH5N*{`Uf;66lm1Nr%!;qf5%U5V6Iq+G4Yx-DPj`hh ziYRVtN|3`dKBU%xs6bm>B8d{7Hxe)dfYU%|bknBOwACp4`w{Jsm^hODro5|uCt=Kv hD4w24k|arDVSBJMR4$^T&Ww|0S=9=HqNO1?j^j9v4e!^lDDZyWE=^0W0a>zq zqy$l?X_^(yDmSjRZ{{SUVLnZIkw}UjXZbdk;Qw&6uq6Jb_Tz|}{Nk*K;1wWGL$YOC zVX?NjAUG-dKAU*-cX5$s>jpE0f?RpyF%3aG+C3szJX_Y*zA<$GoIx8Q+Z0v}SQ$nR z$TW*l=s0iTsCWx|)5{I~CXBaktYOwNE0;wN2~&Gb-X1zf+V*(issFKlSmXfd!N0Qp zS_o6S^(W&#ScylWmE4Vd5Y^ntH*=3rPM-hBv=7;=N+S3AN*)ur&T+=6SeSJVlSTMQ z-Tsa(Bwpm4jOOvGWDZxAWtDNcUSid)Mh8LY7rR_g1LiL>LKecBu%c0SOsW`z6XbhH)f8ed3H9Aa8dg(7RJeXAV-5+>IHQ?g9O)feiZi z7?!RuJ@;8S~U_pDPjp1NjfFkeiY&Y?2K?Xf6w%n!HfAPmQ`mY$8j9TS;7ak W(QqY|)H0j^0000xnVKI%rGFuq!1=k|arDcsKj(K3D6ON{CUgPd-u*W~cMr&npanph z)pSOAZ8qU({&|c15T=iAsv#6>O^=sHZBzdgygFZ6dhB-NuIqTeELs5V#!GpBEsU$v z`;*BvSV`_eE7?1FV=kl96)MgYQn!%`HL!OUCril$sTiebLe)@= zVw+x2<(76z^7N|IbdF{Uo07T-WIcs~)3zigEPMExbg7 z;)LiXba_9hco&obbb5Bb4neY(-Ix8d)9rf-aph=44Kx!aBo%pSMyI4iZy~+POUD-9 zXubtN(cur4*mnbdpHfMu3DaL@#8pEpT|visgt~w|beb=J4)1|ZO(c#*YLX;Lk|fE+ Zcmw#wf?>0Hdh`GQ002ovPDHLkV1iGi*<%0z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..89842ad48d9b82b9fa10c1cc25d3c8e6cbcb73ca GIT binary patch literal 418 zcmV;T0bTxyP)|0`HDWjwd@ExB5;|g)x+n3P-Kc~-`TH^cVKN#n>Hxf$mu>`IFyrGJo zJY(});$?4ywJ>`4437VEb?eeS(nGoyXCk)+Jv8sx!Y$^V;=@I*0O{WSAktLUGE4E{ zB2j=Wrnn1j`)xaFUZ%6r?;GleFg&_pgviX4EKk{{p4Go>L>`kdNn^-MvLEaUfQ@=j z_RT4z+Ow~W*T53rg)Ff-hl}!LuOxujv&m~Z8dTHhQHfyF;P)n)%u{Xx7C5#1i|k1{#`yfcC>4Rm|hjXCqVXE=S+PWnvD@w3a*7=ojN5{2UtJ4EYn zY#9eKIcBo#od{!|7-tK+2C2Vd#XcGvB@gC-qq~)y#96olqECt21Q*tP&BU`U5F{sn zxP!v~6k;+N%5g73bCaKdNw%N7-Tp)G3|s=FiYlG9{ujB+L3F#YMVPJdr+} z9?j%RubCTGzY~4hlmN}}r=q_XCe#)E#Z(SPFm*VZs`=DL)mB~n@S9_Sx!sb0 zkk6R}bhqD3pf_Pfi5&a1Jv&2FzogF?Ijs~W)x1)%*Gyf_&BY^6Ms-S4F%1cpQ6+Wk zAYH%p1qR940U3tvJ1a>D^P^CsF(`5c4rl_La~*@|U!d)?Mx!MqYaW0000VSDIm93p~Z?czOImWVQkx} zkk)%uJxT;Eb}AQ^EL7c)%?d`0Tv!3t*}xS+!#nGnURpFg@5=B?Kxs!UwQv20Ombi?7j_dS%`IJ{jPj^9b>EHNo6a|F zQ?F>P6a6qL0g~cU(Vq(wYDE8Hkb{|^3(drHAGRi}|B~*1O%)bA=!&b3;ER%l*K!bJ zk6P?8hY011-*rs6p}dI{)+}hMKx+kb0#hg19w4*rZUqHXAp~;*fH%h5P@%`gY?BMf k(tYxRrT_o{006+r2f#vG-gR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00014.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..6d13313f1aa6714fd545f48d7dd68f7ebcd7d3dd GIT binary patch literal 388 zcmV-~0ek+5P)jSO*P2K3I7mIMR8*`kt?iG7GCH~^#_6!uvcl}T61 zTy%|1d;lg{e)6*X^Ue&v0F)|f>G-xk$SelE>7o|l{BUCnj9!j9roOk(do%e<$J85I z`*@!g1)!$5mG{@8xEkKS8N^^EIE7ZyQHOiuG2erGyeYBl#aG;Q1>Y3m-quA-y~W6z zOG%4bUCG@{_0iiA9PU|eVoD>X7vxyXpKeOj056Wyt(-jCR9FCjjiWZ%Y;dZ73K}JQ ingRd-0000)MDziH>S4((j?yv!0000opt$oTm&kgE{HODpqd%lgpI|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00018.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-data/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*eu8l)vkEuiFQTvj~>^)_1$^pSNbkL7=Pq$`M7 zZVji%W2$NaEzN-dom>~{YXLN37V2tsF{V^qx!3>^`OEYUXrT=39wNK|g|R&t++`Wn?`29H7oZ5G5$~s zBQEI;3(>-e2y(9C-Df&hC0AY@?gsW*)Uo8nn4g31fX99LSL6VKfbE*Tjr74zoTE_E zg)zx1d_ceQ&%b&&T5Bc-#Fnf?QKFa6SwVP~5 zySfb#>9)N-6(J^sy(|~H42lAnsXBWhe)oFt-dqsP!RbkrL(K4kd|S5us#IQEw8-uz^qN?N=0EUQ<2W?eqyY(DVDv$ lNB-(~W+$Y2TEqYV002ovPDHLkV1iLZ;O+nb literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00008.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..372ad5fa5cc0d79a61b9c0e2b04fcc766d8deed4 GIT binary patch literal 491 zcmVyy*WgUD3Z2OqUDa!GmG;*8G6gX&WmtZ39s%C*GPNbzs@)Xvl z_^A{tU30XA&?FH}KjHngyZpCZ8qzKu;u7%?54X2S#A!ipR%=Js)}{_wfIb8V>Re9v ze|W8%#S||9BW5YWsJx5P!W1qH5N*{`Uf;66lm1Nr%!;qf5%U5V6Iq+G4Yx-DPj`hh ziYRVtN|3`dKBU%xs6bm>B8d{7Hxe)dfYU%|bknBOwACp4`w{Jsm^hODro5|uCt=Kv hD4w24k|arDVSBJMR4$^T&Ww|0S=9=HqNO1?j^j9v4e!^lDDZyWE=^0W0a>zq zqy$l?X_^(yDmSjRZ{{SUVLnZIkw}UjXZbdk;Qw&6uq6Jb_Tz|}{Nk*K;1wWGL$YOC zVX?NjAUG-dKAU*-cX5$s>jpE0f?RpyF%3aG+C3szJX_Y*zA<$GoIx8Q+Z0v}SQ$nR z$TW*l=s0iTsCWx|)5{I~CXBaktYOwNE0;wN2~&Gb-X1zf+V*(issFKlSmXfd!N0Qp zS_o6S^(W&#ScylWmE4Vd5Y^ntH*=3rPM-hBv=7;=N+S3AN*)ur&T+=6SeSJVlSTMQ z-Tsa(Bwpm4jOOvGWDZxAWtDNcUSid)Mh8LY7rR_g1LiL>LKecBu%c0SOsW`z6XbhH)f8ed3H9Aa8dg(7RJeXAV-5+>IHQ?g9O)feiZi z7?!RuJ@;8S~U_pDPjp1NjfFkeiY&Y?2K?Xf6w%n!HfAPmQ`mY$8j9TS;7ak W(QqY|)H0j^0000xnVKI%rGFuq!1=k|arDcsKj(K3D6ON{CUgPd-u*W~cMr&npanph z)pSOAZ8qU({&|c15T=iAsv#6>O^=sHZBzdgygFZ6dhB-NuIqTeELs5V#!GpBEsU$v z`;*BvSV`_eE7?1FV=kl96)MgYQn!%`HL!OUCril$sTiebLe)@= zVw+x2<(76z^7N|IbdF{Uo07T-WIcs~)3zigEPMExbg7 z;)LiXba_9hco&obbb5Bb4neY(-Ix8d)9rf-aph=44Kx!aBo%pSMyI4iZy~+POUD-9 zXubtN(cur4*mnbdpHfMu3DaL@#8pEpT|visgt~w|beb=J4)1|ZO(c#*YLX;Lk|fE+ Zcmw#wf?>0Hdh`GQ002ovPDHLkV1iGi*<%0z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..89842ad48d9b82b9fa10c1cc25d3c8e6cbcb73ca GIT binary patch literal 418 zcmV;T0bTxyP)|0`HDWjwd@ExB5;|g)x+n3P-Kc~-`TH^cVKN#n>Hxf$mu>`IFyrGJo zJY(});$?4ywJ>`4437VEb?eeS(nGoyXCk)+Jv8sx!Y$^V;=@I*0O{WSAktLUGE4E{ zB2j=Wrnn1j`)xaFUZ%6r?;GleFg&_pgviX4EKk{{p4Go>L>`kdNn^-MvLEaUfQ@=j z_RT4z+Ow~W*T53rg)Ff-hl}!LuOxujv&m~Z8dTHhQHfyF;O551|WreeIyWZ14VaJ1uT!rV}Z!~pP z)_K8Uf}#N-w0(GybLd4t>$AhI0e%(raeVGPs*1Fape}MNpkZ*!Q5(1&2&#%Kb3lv5 z?yzyt_2R0pj#om@0CHd=iK~sCOS^X4M&=?=nMR5jl|}+RFMn5cIV_dPy!YK}U9EnO zqa0a^rEk73j_mc(RO94$(+%-cmawD^A_+K!lFG>@JJEs)GZcDPhP}M!XTJcdFD)E%B-ab-0z(W9y~>K?d-A zZwJ;*0hY-Drbq>VZ*Nc;CMW_}UXdhL5!oWzK;XGMh&Fn^<38N=SPlpJ4p6ENhKGGf7QWNUC~;0t_@q8 z#iUW6quk47sH(wBb_0e?gES8u%ncB;W9SaZW0r|5739Rq80U4H1WuE;!{G?3?N-t; z{Nzg?3|}~LLpb=x`3}h85mxFx5Uo9?nOmd}Lmhxm0C1fqEajfZPD$3CQ|mvFOwRE*RQgbcAn$YiuO{3wYpLs-wP4W z!V0eW0G@(F-b9uK@nzEuy94?^O)yJYTCw_otT>s#)24ZLA3;}UuDH;BPjEY+HuGJM zYmj)!)DMkKCgK}Flfwd|zLpl_0jI`^ki2OWPe=Pi32f%78Nf|x2LgdWU>5g^ZpN<#dKkgp@R6UFfkpz(}nQ{0_sRp3W6XA0t1fc`>)hE2@=Z_GgJyI z)2<73=QOp}9Xx8^%1L%B{jr)z=6I&t<5i&C9)D_bpE872RzJnb#j#Z@?~IejZW{Fz zzL$BZiopwZQv?l7(wb8*Ba@6{x&vs;u7n#XOW6SvLd#Sudu1GlBdE1oLC4^W=RTM- zoMQ2;Gu;H%zHz<-C>~)Y?t`jT7p>dW>K18Z>Hz%&P_EMg-96xHix2RzmD`l7yM^O1 z<#E^hTwgPyt#q*a{Jq!BC*D6-MEjg|4NU$>_U24kqX>#^tLuLyeDFy=a|#8Sj**p= z6VD(jHB}{8PYYbSs82Wfp>*ccDk^n#rmdh>9drYU0$SaWv5N&>KcQ6>Rk+T`awP6b zTT1$8lRsJd^vCfxq%db+!r+^8^jX^l$u3NDkmUJ#S_xCNw*!(CNBP~)Gm$)6OHac{ z95Rild^x7QU!B1GfCF%0=Ic3Fl4ob8Jc>C0H^GL+LR6~KaCla38TbyM%fL@|zH;$Q zXpKcIqWpJL=`&HmLl7nwzRtOMlvR7jI4_jHjM1PmzAE=!UmNs>6QKHtC65@g7{9?&2h z25RSxhI5!(^8xOCzamI}BmMDGWV1e(+v9anb9?-0*4Mk%FVvwsTSth`kplF zYxG>!scI%KDFzI6Dbcq;fK)Py>kO!Kb|&3OTVMusQQQ_6hY+v??afv)F#OyiEkxfSQQ3GUtJKI%C?aitOVW0K5W#a$2Zo4>{Tr1HNw^HeK@>yMfD8M6Hi0 zUn8cyeDM4Hz01c3)}L<#ea?m^rrsn+bEK_a498CE>whI<@JT+i3MCtjmkjn$%x%5a z@3k|+`nq`*1_YRshDDW)vJ2Br>c*xX;CTbnfH@v;KGP*ko)?L}WB|Z$#4B$43H-<2 zR^0JpXSzOfO<}(AB8={YqpQX7Z{O=Mu2WBI1{5v&1i$=xJ!3F8Ec1u*d&6n=+S|lT z?>2}T;F9bEX=NU?iAJ%YGgbzMLmpm*z?8wRx@u|$!oFWY~JI`99$S)>bFYDDoL1@Sa|CyNQ*5ERto2!bF8f>~bAzaL4A2C9CK^&kjk ziPG%8RC@X0yrjSCyq;=9RBc^!ZnK_L9Z*1XC{#bMH%UHEk{1oRp#=k_{)=t}SEW+f zzDONs^58>~?gw5?80c0fT_q6>1@&&Cw*&GuI~*CnDe*Oqw*}R(j-S71hoIIz1s#J= zoBLqEWJ#-hfmdT)x6TBXIUvVkK~?ubQ7R9OD)V#w-LvluyBu@C17i0G4S6Ac4w%{a z>OsTLC4LU5hJH@f)_FeQxq&3~>d=k6t+Zj!qhH0B^v|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00019.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-ed25519-public-key-signer/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*eu8l)vkEuiFQTvj~>^)_1$^pSNbkL7=Pq$`M7 zZVji%W2$NaEzN-dom>~{YXLN37V2tsF{V^qx!3>^`OEYUXrT=39wNK|g|R&t++`Wn?`29H7oZ5G5$~s zBQEI;3(>-e2y(9C-Df&hC0AY@?gsW*)Uo8nn4g31fX99LSL6VKfbE*Tjr74zoTE_E zg)zx1d_ceQ&%b&&T5Bc-#Fnf?QKFa6SwVP~5 zySfb#>9)N-6(J^sy(|~H42lAnsXBWhe)oFt-dqsP!RbkrL(K4kd|S5us#IQEw8-uz^qN?N=0EUQ<2W?eqyY(DVDv$ lNB-(~W+$Y2TEqYV002ovPDHLkV1iLZ;O+nb literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00008.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..372ad5fa5cc0d79a61b9c0e2b04fcc766d8deed4 GIT binary patch literal 491 zcmVyy*WgUD3Z2OqUDa!GmG;*8G6gX&WmtZ39s%C*GPNbzs@)Xvl z_^A{tU30XA&?FH}KjHngyZpCZ8qzKu;u7%?54X2S#A!ipR%=Js)}{_wfIb8V>Re9v ze|W8%#S||9BW5YWsJx5P!W1qH5N*{`Uf;66lm1Nr%!;qf5%U5V6Iq+G4Yx-DPj`hh ziYRVtN|3`dKBU%xs6bm>B8d{7Hxe)dfYU%|bknBOwACp4`w{Jsm^hODro5|uCt=Kv hD4w24k|arDVSBJMR4$^T&Ww|0S=9=HqNO1?j^j9v4e!^lDDZyWE=^0W0a>zq zqy$l?X_^(yDmSjRZ{{SUVLnZIkw}UjXZbdk;Qw&6uq6Jb_Tz|}{Nk*K;1wWGL$YOC zVX?NjAUG-dKAU*-cX5$s>jpE0f?RpyF%3aG+C3szJX_Y*zA<$GoIx8Q+Z0v}SQ$nR z$TW*l=s0iTsCWx|)5{I~CXBaktYOwNE0;wN2~&Gb-X1zf+V*(issFKlSmXfd!N0Qp zS_o6S^(W&#ScylWmE4Vd5Y^ntH*=3rPM-hBv=7;=N+S3AN*)ur&T+=6SeSJVlSTMQ z-Tsa(Bwpm4jOOvGWDZxAWtDNcUSid)Mh8LY7rR_g1LiL>LKecBu%c0SOsW`z6XbhH)f8ed3H9Aa8dg(7RJeXAV-5+>IHQ?g9O)feiZi z7?!RuJ@;8S~U_pDPjp1NjfFkeiY&Y?2K?Xf6w%n!HfAPmQ`mY$8j9TS;7ak W(QqY|)H0j^0000xnVKI%rGFuq!1=k|arDcsKj(K3D6ON{CUgPd-u*W~cMr&npanph z)pSOAZ8qU({&|c15T=iAsv#6>O^=sHZBzdgygFZ6dhB-NuIqTeELs5V#!GpBEsU$v z`;*BvSV`_eE7?1FV=kl96)MgYQn!%`HL!OUCril$sTiebLe)@= zVw+x2<(76z^7N|IbdF{Uo07T-WIcs~)3zigEPMExbg7 z;)LiXba_9hco&obbb5Bb4neY(-Ix8d)9rf-aph=44Kx!aBo%pSMyI4iZy~+POUD-9 zXubtN(cur4*mnbdpHfMu3DaL@#8pEpT|visgt~w|beb=J4)1|ZO(c#*YLX;Lk|fE+ Zcmw#wf?>0Hdh`GQ002ovPDHLkV1iGi*<%0z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..89842ad48d9b82b9fa10c1cc25d3c8e6cbcb73ca GIT binary patch literal 418 zcmV;T0bTxyP)|0`HDWjwd@ExB5;|g)x+n3P-Kc~-`TH^cVKN#n>Hxf$mu>`IFyrGJo zJY(});$?4ywJ>`4437VEb?eeS(nGoyXCk)+Jv8sx!Y$^V;=@I*0O{WSAktLUGE4E{ zB2j=Wrnn1j`)xaFUZ%6r?;GleFg&_pgviX4EKk{{p4Go>L>`kdNn^-MvLEaUfQ@=j z_RT4z+Ow~W*T53rg)Ff-hl}!LuOxujv&m~Z8dTHhQHfyF;yuHzcNrXsL^b}Ro;rSb9mB-quV7q70%8@z0Hlnju$S{3!eiUnuaPH zyux7>MIAzDd-o#8n70F9%yx%{@L$mwm(Lw%s-oE`2<_aA&@pn)Q6HEkgsF-&&j5&q zb=ZA?dgZFGj-SLl2h=yFlOS7{i$Z*yKR1oQR>(Cz`sgn*$7S<^cBEy_Dj8U-AecXMj)6 z+aC1zh??yt4qy@bfZo=5!dVI`QL0euchRL@HwVC@@%bJ=xN`~$f*=TjTk{2nneQ&k S4|#h40000f7y@R*8- z^)cbAr|VfZj9-7BTy*t;@#h<1*V)j8X+M&qIkK--fMKV#^;1b7yp#8wLdnMKB(I>l zmPoPr99gRxlUFGYzh+?;$X+pRHmRl!wp3$*qvL|R=_!weRs0zhk|~6_Mxxe}=JX2^ zZM>wleJN2&94E@9TC*(*r^o(BvalD=B)~R~sXH(g(Mszl@whgBkNlXO202?6w83ra zYF8Et)|A*b@Y{lDgR;CmKR=1Jz9XT&17t9qn_KQyXaz^sU3bn0Mq25E7OQ6eA3$zO z?|acz zFR5d>UaIQiC7S_7Lqb|I@iQZ29McGpYxc-;BXxlYm{6KU9f_539JZiVw33eD2VeVO zZsNd5UIu=b7f86fdkR%#p+wOBQtQ>#;?jj03h4gikRjEo*~wAlxI-@F}{OEK!uokpb?Wu=`Ct=PoT#f*unbZwwC|TaEV$wLRDt;8e;3S+)aPK$a zS^F0IneWhcH{s*sA4F6c*5?dZwGv7FYpOG`HEsDQwt+daKnK82ii17=#a8 z^_eb$XcL>y0LqSOrLF_k>MaoV7($N07_2KK%*Z1T*v*xk5I?KtcA z9A7J@qkM=Flwtgqin#^95DW*15-?}L0O%{cjG zg^|`OGj8?CP@urFPw(ru=Z0Fwu_T~s70X`N>LtW0Y0j`r*e-C5g?&|8x&S@Wx)cTl zrQs7#Ut?1#g{Pqxg~vXLn)$txO)buN#g2_ z1>g^MfNCh64P7(fH*gnnYAA)rj0#kY(?uq=Oiz*|Ns=TP;9?wmT*;kOWT)I z#+W?#BuVuTzZlU`QzKO+IT{k`H6phH@;Tcb8JI(YbDUq7sfKp^{2(2I&ekc@G5lde zA9R>3YL!oLG}cwiTtG7i8?3>f}cyekaIvaiA890aEieyVQr{OyKP}x zSu0G5Cwhg%)!DVI4njweNBMeG^7&J!y{z8cgok8pM)uVKqT9^s-V*nLB?eK*NgRzF zkk@1KFuV>ryTF0_OG2`Md!$01H$HyTG0`@sdi~pUKipS%f)zjNBs>G0v+;0D9dPAB z4Vtp`6g>xa4nS{DQG=#Oc=eWqXfina>M#@5A&B{vqc3;C<%MQ@Qy%pq=FDU-aqLz= w(+;Hisj`{?axdl^&|e5sj^j9v<2d)@1?%e|<*4E-4*&oF07*qoM6N<$f}#1y*#H0l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00017.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00019.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-hash-x-signer/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*nwXzshs;r!BU=jJx^b^1#47@xG zWDy`P1;G*1hH5FcIUo)#=+8&?)w5r$4gech(e^I#OxDB2&Azc}WCput;aot*pWcGU zC8J>>S{Na*?5p-kop>D(_Kl$iqEqsuV?NClb3y7XM9TYL(E%y}=Dm@7z+t>k0GA^yd`1)0 z3ZDiWqaPsM*mV~Egi7W|H*(3m=_KR#_`yBk(+i}OBEDWFNs=VVS)SU7M4(~q&v*a; N002ovPDHLkV1kB>)F1!= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00008.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..702d9603e5b681ad0d4d273ccbb15aed0b4426ef GIT binary patch literal 503 zcmVTrh`YLkH3Psj50+Y-5K%FQp&|f*>e)J^L*VC9=_~@b$bt z4#0?{X6$no=9Q~YJ?_rJo!Y@6;RKi@8F|jzN9%z?{T4_wsy($!A(p@EH;Ye<+Sff- z0LMxB!-%DnQu^^YAr0^`YIQlz^6C3GIgD;!OE~%_e8R;T1+D}vBqwh$rV|-U@ZA!y zPux|C9fHWsehGNb*0g=BRiw|{%zz1yi?!61V+7=D&+u;H4!YEwyQ__u)?gD_!95$5 z!H;jquhKclpiAwm&!d#PK9tA& zc}rgXFO{&6&^>OF9o17NR$g~e-EPTXL%{T$x(IpjZ=biWM&?4mtHpIn(uAp{HpGm& zLGLDP*Qkie`w>uuU%D<}-dI&R3<1-Am66v9AZs;S zuA!!?b*-w!EJGZYf5>3m{vGGvUB7E5S6}|;C18J6$65t0L2BWmTi48x8z5L->*}Uy tqpoYB-CpD|v}H&w#|A+V1VIo46~B&GqkA0U^RWN`002ovPDHLkV1foF?lb@Z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00009.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..db26b7e0aee7af82e7ec1edf216007ea5d798fc7 GIT binary patch literal 523 zcmV+m0`&cfP)b4)QPsfn`+^ZEK1 z06eNS4{cU?FvVi9%}JYPaxSM!H~}OlX-t!(zO|3ufPzM2^De0KsUi(q`Ic`MpBPov zyjGmZXF8rF?}v8+K1Mx}xJC224P`S=YKsi~zs144)R}px2sqZ`4|Y}VKMcjk|KRqm5INY1#k){o z3g3f#D8uSGJli1v6F2o7{>g}7o+lpC{lCg zdispz{nfCp7c^XP^6i_|U^|D%Oi0blT<)vux&%0P67^hV++%opJCDD?;NCxH{t*k* zSk$(GD`4351l`AmGHfz4=M~ebR(XcIkd$J4w3VuXKp+qZ1OkDSJ^_sJ!&AsByd3}l N002ovPDHLkV1gg<^rHX( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00010.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6d8118330afbee8f59bbaa4de4b261a48f9536 GIT binary patch literal 509 zcmVhcTzufSjY^{VQ&lNoY-1AwZmlSaq9{hrW8M-_LL0pb&*SeG zz?c!$JoQ>;{V(WG3(^#;?qWqZd%RIN<@0Ng# zaYvw=YJ+lfy#zd7zZ1B4tVO8L*qdP{fNonzr3$2Ju>n=fa}(Zwd|l70|)j&gT=@o$8+6Rf&kX4rLd|1iQF|HHH|Mde^8i+7>I z#U#i^w^%!*y{`Oe8gM1v5}si(Z&Xtft8SsT?W#^*t#@Epe=-5ytPp^ka5!oF&O#qu z8t5oH1h$yVC|9N3#ri+L31@e8vCgMGBEqrt2$nf*G47;GCnAh=y|btmgp>xgl{?7O zmgV0Aq<-+(lSniHfjcvox1&!-O@k7?z-tyW&`n7+LD*LfMWTOGJT=i-0>IA*uOSch zNU=QWYBBub%0)5c6kw|gpC*c;D2k#eig&&N8lLVRKyNh<00000NkvXXu0mjfELrNk literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..8be80494821d56c3bc83f50fa52f4860764260f5 GIT binary patch literal 453 zcmV;$0XqJPP)s!{r?}li*-{*g82HC)Ob#(vzRgzL}np4j^jAa2j@|iG$^6MT7~EF{xqPB zh-%ht1{I2ujM;bDT+X(mEx|7F?s=ff8@hl{ZHRJlu9IF^pxlr~sX87nqN~L&NwfIP zqYsSqT;Jxkf;Rq>)d6m00gkfG}BLpT2yX*g00000NkvXXu0mjf0Tb3r literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00012.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00014.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-liquidity-pool/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*5Sw8ax$6!?Gkvk|bB<2krQLe7<)dF6BK? zv-3$JS4pdX<+*gQtv&xm4^Xv?_0QwYbto-CE1=}JU6vg~Mq4ch`KVqgkL9;K$`zzM zZw(j7Q>v_hEzLxLLAJ(tEr3p{##n7ErYbd7?sh;#zUbZoTLc3SPZ6U4g{eL2o(C|~ z0uYN(d5MIEoVKggV_E=sSd)H#W*lnwGxK?niJHHkS5Twr&>9iTfIv%6Q%%+-JazF8n5x_ zR(=rQSqnl^yp1Jgx&J!@U}q4SQ_2!7Qwll;g0v%H+5xh@7}sABkc7j2DLkHo*CxSM ixLyiMk|aqI68->-Cl1t4Ga7{e0000k`V5<*B_7}AMDDx6;Vk& zD9YdwuVWrAajKu3uHhz#mHSOKx<4WT=Ouo!Rh zp#&#@pCt8e&{k-X0fzYHp+(ae<*CQi#0qR4A1-QOOd6_wGWy$*5`eV*YV;3?5bBKn zWHJXU$x~=0??FBZk4ZWFCVo{1H>DONKZD5#H)r_@3~^UA4fRA)s`8)iWEOWoELC|i z?W<_D4Z+(xe4O-(iM;ldf7Wz1ox%F?An_1Sw~t7~H{+T_w;m_9HanP-fI0-Ln_q28 zFBYfG*iyv*jB>Oh_)(7Caz&YU3(8lmk>D}}x)FVdU0y7vU`~K>BWothbXRM>X=p7Y z4!4*isKYZpWj_Z-1=`{g*(k&JjRf2Qz-e!P-$F4*mOUyE18-wd4~a>~rvFpySvhbu l^_{dzlpe_>Ns=Tn@&E@sNZU=U!yy0w002ovPDHLkV1hz_)cODb literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00009.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..146c0ffa105e5db4bd0e47cd3069c5538751fcee GIT binary patch literal 477 zcmV<30V4j1P)_)9}q+lhyqbNFU21t0?}6^1<0%1DQ#g z9=4;{r~4F^Hq+VDAI>|VUBB&?@8Y@uar}uTBm|KaWSOv^QGmtEAlnn$-#0tXfQ?|A z8c*`2I6Htxl6E(MTxIms1v{)r;{lMgW8raODlh|!V{%dpZPF3-m)1Xi$pJ{(zgqtX z5lo%d4<>!ElZ-+;`84uLxUHqb#66&0ObU5ssdXFDsJ+vQxuYhWRGci0yna_FPKE&n z*$32$EoEfMAn>I3OcpVg1(HBu`8Wt6gpd>-_un6o5r5*!buXq8 zE$IoEEu#Y);X6F{ zNih%m(Uj>vg|)SpV2PNwGUJiF0^0f8F8MBb6R-|R{Mp2k6eMO)#NaJXDT8cx?EGQu z*aI$0a3`NiasYHDX;%X{tBmftV1*TJ=4KxB^3pW5@C3GwH;tO;la8v7^!{ir91xSHNy3}dhpW}%(@b@I))tt(UFC03NN^bycJ6pHA!r$f<^mJ}MqQ(71tH$4-) zIvp5^9tJSVyo@5sxw_Gl*LS_kpti1XR}!0mtI(#Bh+3cBZ^Cr}Z7s;WnDxRnV$?`A zv=%ANse!+`Tm)>wkoQ|9Z$xg=3eer>Rq#D)&Ac4%U8nCQqwK}nC% zx_^=Pjx8~5u>gqK5uYq`KV`&yswIOaEc_N$n3RIfB^=Wu+6CsJvor#Koz8*5k$9Y& gse}+h2qFKBCwKx;FVH_NNdN!<07*qoM6N<$f)Xg;TL1t6 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3ae34807f0a71b79b53c8f092ad9f2ca467c7b GIT binary patch literal 423 zcmV;Y0a*TtP)`BuyAm*MD~xQz|+9OHgrkG@&}lk+yMsy{RM3 z98<#IfR1QtQER=rjb{RAB{|-Pv)D9q1V{Aokabk599O1->u&%i5n0JnvGY9jr@;~+ znR=x9W5P%c^@BkUdV(s{lRob-+q0yNip%4Lakkw?JEl#$GNI2AKl4iEVCT1v-ygZ$ zByY#L8CNB$>DWfv)zAMYdX+u|3rJ zK=@ao-fuu+%$Fd9kQ<=U_rjd&FKg_=yo!3Hr@q=u1vdQa{Tm770000$Fdr&u7J^Rl R-FpB4002ovPDHLkV1hv3#`6FG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00012.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..1f8fec36f9d5adb34c34b638f37c0b9c7baa10d9 GIT binary patch literal 327 zcmV-N0l5B&P)|y=| znA~b^-V<0Ij1wRiY#eDFXdDv12=VkxZmH;0`#iS&oenfk2` zMnW)KN7ikOwP++SLb9MNRd11-qi}@)gKa?;XSa9}FxU$aI{rAOnNm8PZIK8egb+gh Zk2fz}rxB0DI}`u_002ovPDHLkV1jS1g}VR% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00013.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00015.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-offer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*eu8l)vkEuiFQTvj~>^)_1$^pSNbkL7=Pq$`M7 zZVji%W2$NaEzN-dom>~{YXLN37V2tsF{V^qx!3>^`OEYUXrT=39wNK|g|R&t++`Wn?`29H7oZ5G5$~s zBQEI;3(>-e2y(9C-Df&hC0AY@?gsW*)Uo8nn4g31fX99LSL6VKfbE*Tjr74zoTE_E zg)zx1d_ceQ&%b&&T5Bc-#Fnf?QKFa6SwVP~5 zySfb#>9)N-6(J^sy(|~H42lAnsXBWhe)oFt-dqsP!RbkrL(K4kd|S5us#IQEw8-uz^qN?N=0EUQ<2W?eqyY(DVDv$ lNB-(~W+$Y2TEqYV002ovPDHLkV1iLZ;O+nb literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..372ad5fa5cc0d79a61b9c0e2b04fcc766d8deed4 GIT binary patch literal 491 zcmVyy*WgUD3Z2OqUDa!GmG;*8G6gX&WmtZ39s%C*GPNbzs@)Xvl z_^A{tU30XA&?FH}KjHngyZpCZ8qzKu;u7%?54X2S#A!ipR%=Js)}{_wfIb8V>Re9v ze|W8%#S||9BW5YWsJx5P!W1qH5N*{`Uf;66lm1Nr%!;qf5%U5V6Iq+G4Yx-DPj`hh ziYRVtN|3`dKBU%xs6bm>B8d{7Hxe)dfYU%|bknBOwACp4`w{Jsm^hODro5|uCt=Kv hD4w24k|arDVSBJMR4$^T&Ww|0S=9=HqNO1?j^j9v4e!^lDDZyWE=^0W0a>zq zqy$l?X_^(yDmSjRZ{{SUVLnZIkw}UjXZbdk;Qw&6uq6Jb_Tz|}{Nk*K;1wWGL$YOC zVX?NjAUG-dKAU*-cX5$s>jpE0f?RpyF%3aG+C3szJX_Y*zA<$GoIx8Q+Z0v}SQ$nR z$TW*l=s0iTsCWx|)5{I~CXBaktYOwNE0;wN2~&Gb-X1zf+V*(issFKlSmXfd!N0Qp zS_o6S^(W&#ScylWmE4Vd5Y^ntH*=3rPM-hBv=7;=N+S3AN*)ur&T+=6SeSJVlSTMQ z-Tsa(Bwpm4jOOvGWDZxAWtDNcUSid)Mh8LY7rR_g1LiL>LKecBu%c0SOsW`z6XbhH)f8ed3H9Aa8dg(7RJeXAV-5+>IHQ?g9O)feiZi z7?!RuJ@;8S~U_pDPjp1NjfFkeiY&Y?2K?Xf6w%n!HfAPmQ`mY$8j9TS;7ak W(QqY|)H0j^0000xnVKI%rGFuq!1=k|arDcsKj(K3D6ON{CUgPd-u*W~cMr&npanph z)pSOAZ8qU({&|c15T=iAsv#6>O^=sHZBzdgygFZ6dhB-NuIqTeELs5V#!GpBEsU$v z`;*BvSV`_eE7?1FV=kl96)MgYQn!%`HL!OUCril$sTiebLe)@= zVw+x2<(76z^7N|IbdF{Uo07T-WIcs~)3zigEPMExbg7 z;)LiXba_9hco&obbb5Bb4neY(-Ix8d)9rf-aph=44Kx!aBo%pSMyI4iZy~+POUD-9 zXubtN(cur4*mnbdpHfMu3DaL@#8pEpT|visgt~w|beb=J4)1|ZO(c#*YLX;Lk|fE+ Zcmw#wf?>0Hdh`GQ002ovPDHLkV1iGi*<%0z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..89842ad48d9b82b9fa10c1cc25d3c8e6cbcb73ca GIT binary patch literal 418 zcmV;T0bTxyP)|0`HDWjwd@ExB5;|g)x+n3P-Kc~-`TH^cVKN#n>Hxf$mu>`IFyrGJo zJY(});$?4ywJ>`4437VEb?eeS(nGoyXCk)+Jv8sx!Y$^V;=@I*0O{WSAktLUGE4E{ zB2j=Wrnn1j`)xaFUZ%6r?;GleFg&_pgviX4EKk{{p4Go>L>`kdNn^-MvLEaUfQ@=j z_RT4z+Ow~W*T53rg)Ff-hl}!LuOxujv&m~Z8dTHhQHfyF;&H8vYKS}-E7FAs7LzZuZy>~d-tpGxMqz3)D*j=Yy3Hgg+BVeHCD4bm0_S4WY1 zKu<(;)Oo<}+Fj4KcfwDA@x-)jT>b2sirVeI($|8t8RSTD8Duc?@Hgu#VW`697r$NW zX!Ym#v_}#}=H~n0s2(3fJ#MxS4M?6dpaKm}a$pq#jf)^BYv8gyY@T*9DVO4Ey=B3| zW#4^AF=V|7Phqc#e(KIX81y2o*$ktk07N{3w3oJn!qMqhp8^70CgULVEqvp;P+71`u-2xi|nGCvjV>$VzZ6!^dd2W7!VCDB}tMbNfvNEetxwjXdw1_S_4&r zTY~20Wt&-k2X`7eJ?z_$alpqaMLg%D9QUt_mgD}?^6XPZ+Q#mdRnE$GPibdKtu%{^ zMtuui%QRHk;8k`51DTWz6Arcw7-nbb3TR_i6Im?EiP0F>%MJ~gHr`G^3X)c<(lPqU zQy(mUaor9P;G5t*pd})#*mcl7^$e}qMSLuE0L}nlJFT>*T-1HCM8oANCOrm2X% zK4$xx8G4ls{^RdAxBl_Q{pUY|jvN!r++-CTxKmReZjhm9)mQL_D3l&Xeo-I0pp#%V#I z4YyeP*A`tmxsAJ6`5lGBSu`PR3G7&Y##?fsHFbvVJaJsGukArt3fKvBFY44Re5WmMAN#yO%AQ*mIG?0r(JB8Xugb zYA>BH3s;YE6BuSDaNs>gtCqkK}nfoOY*Z=?k07*qoM6N<$f~BzV AT>t<8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00014.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa5116360d7195e7c4ec52dd8ad0e90750b3482 GIT binary patch literal 500 zcmVS4 zKh+Eu5q`(jP5BbzaYKd;C7++#X*gu}$id7Z$Ho;nluHt!&H_`(AX_ z=g3%=OSQUq$!0*&kdT&4{LBa$M>PWSHM_FhNL?TTCX^;oE3q<;!4}ktR?;#2;H3}d zCJxMav^fs~ZQmH50XY`Ssu~AHEmn=^RO=LJqv`;>1AyZ+kw*_X+T;ViZ{ap@bhj|v zrYz2So8xOnwU!NfpTGCAdgJ-?A3>k9rVCSElC9aPYm|y%m$mh;;yyUZnO(?G z{fjhbYg_Lo8@fr;>GIYPa7R2kES4MyDCvU}FY=Yi=a4fS(WsA}FDiliP qoJRQYcy@eQkotwAU%p$29R`UDWrd zdIgksaJ6PAP+%gc_a5%Kp(b`LS5h^vwUFtWzUHvkASkmMHOC^`vYKI{rl&_*m%<>$ zG_2Wa+vheGxf-8!R}KyUU5v(o!%b#KUp|ttu<`Qhr)`vqXdR}{_g3B+AXW1kz#r@Y z)lfPcx@xY8v6Dt>8)3)=*{?=w|3OBqr@7a}H#fPtkAahR215YUAWIg8!>C!xTg)`H^GfJr;=o-SIVfI`r+EQAn3$Wb2m*C$DW3>CkRX)uJg z#A$UuE?WLrH|wW6kGq?R;$92oG5O>g06|)VaDCn0B>6g%Tujs(ZEVo4U#K-gwLi7@ z7a4OhdGSe-<`;aJVW>+<(@Dfb!@W-Y-he!3hbsfPB%R~0#+aBvNp_VvN(FUU?peTyE+=$*Q1+JHPb@k&Q-2CMz^PVZ3QK@)-i5+3b*!OV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00017.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00019.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-pre-auth-tx-signer/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*0WbcEP)h9W@&t zB=V4S*hiLA16tejF4#e_#MZtaYpg+7BGf9BJlkbaA28bJbAXSiOL|Pd=@EWG$a2n| zAP=dc0&8h(mwfDv%Hrhg-1a3#iBD5&Ch zkjZW6xOJG`DSjl7!rVENwIJKf9aF0;8xF{o+Z=f>SiJcW%9SpV1&v3+ml12Z$z73l zg!7mc0Q0FgZtT+J$lae?x8*E+EWU8Y;`Yxi$lAo03;@-=BrnN zSt*E}?8;v7F`*wa&0myy*WgUD3Z2OqUDa!GmG;*8G6gX&WmtZ39s%C*GPNbzs@)Xvl z_^A{tU30XA&?FH}KjHngyZpCZ8qzKu;u7%?54X2S#A!ipR%=Js)}{_wfIb8V>Re9v ze|W8%#S||9BW5YWsJx5P!W1qH5N*{`Uf;66lm1Nr%!;qf5%U5V6Iq+G4Yx-DPj`hh ziYRVtN|3`dKBU%xs6bm>B8d{7Hxe)dfYU%|bknBOwACp4`w{Jsm^hODro5|uCt=Kv hD4w24k|arDVSBJMR4$^T&Ww|0S=9=HqNO1?j^j9v4e!^lDDZyWE=^0W0a>zq zqy$l?X_^(yDmSjRZ{{SUVLnZIkw}UjXZbdk;Qw&6uq6Jb_Tz|}{Nk*K;1wWGL$YOC zVX?NjAUG-dKAU*-cX5$s>jpE0f?RpyF%3aG+C3szJX_Y*zA<$GoIx8Q+Z0v}SQ$nR z$TW*l=s0iTsCWx|)5{I~CXBaktYOwNE0;wN2~&Gb-X1zf+V*(issFKlSmXfd!N0Qp zS_o6S^(W&#ScylWmE4Vd5Y^ntH*=3rPM-hBv=7;=N+S3AN*)ur&T+=6SeSJVlSTMQ z-Tsa(Bwpm4jOOvGWDZxAWtDNcUSid)Mh8LY7rR_g1LiL>LKecBu%c0SOsW`z6XbhH)f8ed3H9Aa8dg(7RJeXAV-5+>IHQ?g9O)feiZi z7?!RuJ@;8S~U_pDPjp1NjfFkeiY&Y?2K?Xf6w%n!HfAPmQ`mY$8j9TS;7ak W(QqY|)H0j^0000xnVKI%rGFuq!1=k|arDcsKj(K3D6ON{CUgPd-u*W~cMr&npanph z)pSOAZ8qU({&|c15T=iAsv#6>O^=sHZBzdgygFZ6dhB-NuIqTeELs5V#!GpBEsU$v z`;*BvSV`_eE7?1FV=kl96)MgYQn!%`HL!OUCril$sTiebLe)@= zVw+x2<(76z^7N|IbdF{Uo07T-WIcs~)3zigEPMExbg7 z;)LiXba_9hco&obbb5Bb4neY(-Ix8d)9rf-aph=44Kx!aBo%pSMyI4iZy~+POUD-9 zXubtN(cur4*mnbdpHfMu3DaL@#8pEpT|visgt~w|beb=J4)1|ZO(c#*YLX;Lk|fE+ Zcmw#wf?>0Hdh`GQ002ovPDHLkV1iGi*<%0z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..89842ad48d9b82b9fa10c1cc25d3c8e6cbcb73ca GIT binary patch literal 418 zcmV;T0bTxyP)|0`HDWjwd@ExB5;|g)x+n3P-Kc~-`TH^cVKN#n>Hxf$mu>`IFyrGJo zJY(});$?4ywJ>`4437VEb?eeS(nGoyXCk)+Jv8sx!Y$^V;=@I*0O{WSAktLUGE4E{ zB2j=Wrnn1j`)xaFUZ%6r?;GleFg&_pgviX4EKk{{p4Go>L>`kdNn^-MvLEaUfQ@=j z_RT4z+Ow~W*T53rg)Ff-hl}!LuOxujv&m~Z8dTHhQHfyF;Tii$_tmgRy$yFop;*CT#k0ujWvCXPH|s?q?EDp#Msd0 zhEmfJBkQFlHC_824f|>b($J))mZC{m?cf^U`SSBT$P4u+kQ5o}PeYL!>Q4qSSP81o zO1?!F%TT%a%YGJL_E96V(^sVWKmL{3Q#vefEcINzJyWzId9xm;UaL)Ycp3X9V>njt zxuhGa#qOZ?sb%6(gp7Pl2j_dGkzO?ipj|r|hM|PLG_53c@9pGma{y?e9G5AqQqv>S zRfEQufl6?H8XB;VqpP3hpyEyZ9$-(ZMV}t`2iSz9Qzwj+j%sygHOH<( stk&0Ic;186$I+SVcK`qY0D#VX09UZ+^1bbTg8%>k07*qoM6N<$f=%wXLjV8( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00013.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00015.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-asset/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00006.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcc77775fff876383e075b86a012fa86ff440ec GIT binary patch literal 516 zcmV+f0{i`mP)2%qtR$I?uv)j@bmuld!i^^(NyI*Q`D_{0m>xPMt&|RgNThhTb_(aRb2hNfwTz1D_{ktj7%YJn&BWZc!pD#OU-2=3ieBsOU<}2XyF26-OFd=X`r@NtZ za3zwfP{RaakXM?)`6*{m*>xPers8wAxy1*0WbcEP)h9W@&t zB=V4S*hiLA16tejF4#e_#MZtaYpg+7BGf9BJlkbaA28bJbAXSiOL|Pd=@EWG$a2n| zAP=dc0&8h(mwfDv%Hrhg-1a3#iBD5&Ch zkjZW6xOJG`DSjl7!rVENwIJKf9aF0;8xF{o+Z=f>SiJcW%9SpV1&v3+ml12Z$z73l zg!7mc0Q0FgZtT+J$lae?x8*E+EWU8Y;`Yxi$lAo03;@-=BrnN zSt*E}?8;v7F`*wa&0myy*WgUD3Z2OqUDa!GmG;*8G6gX&WmtZ39s%C*GPNbzs@)Xvl z_^A{tU30XA&?FH}KjHngyZpCZ8qzKu;u7%?54X2S#A!ipR%=Js)}{_wfIb8V>Re9v ze|W8%#S||9BW5YWsJx5P!W1qH5N*{`Uf;66lm1Nr%!;qf5%U5V6Iq+G4Yx-DPj`hh ziYRVtN|3`dKBU%xs6bm>B8d{7Hxe)dfYU%|bknBOwACp4`w{Jsm^hODro5|uCt=Kv hD4w24k|arDVSBJMR4$^T&Ww|0S=9=HqNO1?j^j9v4e!^lDDZyWE=^0W0a>zq zqy$l?X_^(yDmSjRZ{{SUVLnZIkw}UjXZbdk;Qw&6uq6Jb_Tz|}{Nk*K;1wWGL$YOC zVX?NjAUG-dKAU*-cX5$s>jpE0f?RpyF%3aG+C3szJX_Y*zA<$GoIx8Q+Z0v}SQ$nR z$TW*l=s0iTsCWx|)5{I~CXBaktYOwNE0;wN2~&Gb-X1zf+V*(issFKlSmXfd!N0Qp zS_o6S^(W&#ScylWmE4Vd5Y^ntH*=3rPM-hBv=7;=N+S3AN*)ur&T+=6SeSJVlSTMQ z-Tsa(Bwpm4jOOvGWDZxAWtDNcUSid)Mh8LY7rR_g1LiL>LKecBu%c0SOsW`z6XbhH)f8ed3H9Aa8dg(7RJeXAV-5+>IHQ?g9O)feiZi z7?!RuJ@;8S~U_pDPjp1NjfFkeiY&Y?2K?Xf6w%n!HfAPmQ`mY$8j9TS;7ak W(QqY|)H0j^0000xnVKI%rGFuq!1=k|arDcsKj(K3D6ON{CUgPd-u*W~cMr&npanph z)pSOAZ8qU({&|c15T=iAsv#6>O^=sHZBzdgygFZ6dhB-NuIqTeELs5V#!GpBEsU$v z`;*BvSV`_eE7?1FV=kl96)MgYQn!%`HL!OUCril$sTiebLe)@= zVw+x2<(76z^7N|IbdF{Uo07T-WIcs~)3zigEPMExbg7 z;)LiXba_9hco&obbb5Bb4neY(-Ix8d)9rf-aph=44Kx!aBo%pSMyI4iZy~+POUD-9 zXubtN(cur4*mnbdpHfMu3DaL@#8pEpT|visgt~w|beb=J4)1|ZO(c#*YLX;Lk|fE+ Zcmw#wf?>0Hdh`GQ002ovPDHLkV1iGi*<%0z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..89842ad48d9b82b9fa10c1cc25d3c8e6cbcb73ca GIT binary patch literal 418 zcmV;T0bTxyP)|0`HDWjwd@ExB5;|g)x+n3P-Kc~-`TH^cVKN#n>Hxf$mu>`IFyrGJo zJY(});$?4ywJ>`4437VEb?eeS(nGoyXCk)+Jv8sx!Y$^V;=@I*0O{WSAktLUGE4E{ zB2j=Wrnn1j`)xaFUZ%6r?;GleFg&_pgviX4EKk{{p4Go>L>`kdNn^-MvLEaUfQ@=j z_RT4z+Ow~W*T53rg)Ff-hl}!LuOxujv&m~Z8dTHhQHfyF;gTz#8ycNXc=4u<3xAS8*%W8U7Z7Yec$&}P*3R23$+f6JbQ7e>`hj}?dQ z4*7$Kwboku%Q!(Bz;k4&YT}J7OH?B zN64RLbC5xo?4!?(%UyBcUkGm|n034y;fS64f+#WmLfA`DH8_*WvrrM@JIR~!nr&wP z1tW{IvuVRkskawWSBiBnA*3~`DEFi44%Lsv+SKN^IibNZA*E&MuGb%R<{Pq}I; z{n-OFA^-}&V(t#%5TLHrbPnHIbS#b;NnOSvi&epna|<=00000NkvXXu0mjf#5?DU literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3798500c2156bda53dbb24afa8bb4fbfbacafa GIT binary patch literal 511 zcmV9_3D{R_x<{-_cuez4+RC5_$T#a;>xdEQU(Sp_E!;uRm5<@DkyCRv zp{EpV=i;hsj@o=Wmy|A?!70^WeIB;oJs1AJf$apdUN1+us&fBjfRCTx_N|B5J zDCpv6kQZ>7oCK7$9c+P5a#Lt3QspQPEG3(EVIQ%$tVz}8JgpwpPZpb36)DGYsczS8 zPO;KLdlBocO;0_sG2$oLa@^frQg3Ji;F47K1aU2wQcZCqSn4Y=^0|=zXu6P+9aW+K zEC}lQ-r!0pc$nNPm{5$kT@gj9OcG_rVcdD|&%QLwRe);q==qNrBu+2JD9X?SQqsYe zgjOFf^>lH*$sT_WY7(cKrfX8QZb1+PK@bF=%?o_|pe7jOE6V@?002ovPDHLkV1grJ B@bCZt literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00014.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..af8959400fa4bca329b0cc19d85c5bccb7ac42db GIT binary patch literal 516 zcmV+f0{i`mP)AxYA`eP|y9h($6N#QsDTBG&%%nH5irsGD9Z zgB&|-&ly&#j>1Tw`o2$-|v=y3*#OE zZ>kW=&3Xygp05Ec9%~Wob8Kap3BcPHw$)-}$aBx^^DrHBY`Lk6jW*g~o3*y#V42|l z)3Hq@?&j0EWcI`L7u#H}@_9S4H%{`6$eDI_|=!9BIOE@|N^DZH1k;RmmH7_%?;Vho0oXld)+@BzPd zg9KH)4E5K7;zfw@XC2S$;@1T3o>#HZ6JQkfcwENM?TCta_Rg=yWD(u-&=b&K*vrd* zFsX7h$*@>@BrQZHQgh}q@gu<%`-`Ht8-$`LilQir;>|ZQx4%zB!n8{O0000<3`Gm0|Np@};EUGSEZnw0Bjk+ZjBRr1nueNE5ClOG{ID+DB@H69uvTzgzMlq+ z9#Lhx&7h!IqBQ#H}B0=G(kikS8KD)U`zH4O?5-Q!6&9r!kvV;7`L0R8A>Xgdh*(4(uC$`srBje>DNa z$DM}Fq>MXaLvS_$)AQZ*;bSd=oYj@*xjq3jU{RGkMut6alYJgG4?0!O?qZ>h*4eCP z=z#GD4O3N_!x3r5L8(g*yELf?O&{jc$mia_3|27M>s_~*<1%+|2;IC%&;1Z{Fp@o^ zP*BV7AWuT|$>(s9gBlrO;gVR=&2_k};c^1*(j4&er`8?60vf&PoxKTb*e_OeDDm~> zYb6du%s#>UZP8wn-F(m;0dIG;`~98}q#2xx%Mip*s_TXe_#d(07)I{^3<^(|y1VIqok{5ygUvubXNQnRd002ovPDHLkV1nEn%((yn literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00016.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00018.png b/tests_zemu/snapshots/s-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00002.png b/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00003.png b/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00005.png b/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00006.png b/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpR!-81m zQj)#e9WVuN?*;s5w7agbZk18%c4$d`3jJbW-e*Gi4ygW@I#5f|$Or0DdN(V~cL2p{ z3e4_U%VV}%1R#%jq@aPfU8I*{ic`k`q#6$g&}}~#fB=?l#MS{t&Y>(+4P+_0NlKrH zL?m*3Acp~@#al=xGYBW^L0fJI;0{=nB>}Fr5B`#jMrC2JYn_$wfhY54A!Mx2;XES` z6z@K4uNIxg8ic8__kiI~#8fi?de-)X8NsO(QIsUx3zjY7g$`FxH1m?`R1wo&xjel} zEqZd3#`1|eYO&*h`5qvl+uLZ1 N002ovPDHLkV1jl2v0eZG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00008.png b/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..50eca91875f8d463462654be0c4c0c0cb3c2c232 GIT binary patch literal 534 zcmV+x0_pvUP)f7y@R*8- z^)cbAr|VfZj9-7BTy*t;@#h<1*V)j8X+M&qIkK--fMKV#^;1b7yp#8wLdnMKB(I>l zmPoPr99gRxlUFGYzh+?;$X+pRHmRl!wp3$*qvL|R=_!weRs0zhk|~6_Mxxe}=JX2^ zZM>wleJN2&94E@9TC*(*r^o(BvalD=B)~R~sXH(g(Mszl@whgBkNlXO202?6w83ra zYF8Et)|A*b@Y{lDgR;CmKR=1Jz9XT&17t9qn_KQyXaz^sU3bn0Mq25E7OQ6eA3$zO z?|acz zFR5d>UaIQiC7S_7Lqb|I@iQZ29McGpYxc-;BXxlYm{6KU9f_539JZiVw33eD2VeVO zZsNd5UIu=b7f86fdkR%#p+wOBQtQ>#;?jj03h4gikRjEo*~wAlxI-@F}{OEK!uokpb?Wu=`Ct=PoT#f*unbZwwC|TaEV$wLRDt;8e;3S+)aPK$a zS^F0IneWhcH{s*sA4F6c*5?dZwGv7FYpOG`HEsDQwt+daKnK82ii17=#a8 z^_eb$XcL>y0LqSOrLF_k>MaoV7($N07_2KK%*Z1T*v*xk5I?KtcA z9A7J@qkM=Flwtgqin#^95DW*15-?}L0O%{cjG zg^|`OGj8?CP@urFPw(ru=Z0Fwu_T~s70X`N>LtW0Y0j`r*e-C5g?&|8x&S@Wx)cTl zrQs7#Ut?1#g{Pqxg~vXLn)$txO)buN#g2_ z1>g^MfNCh64P7(fH*gnnYAA)rj0#kY(?uq=Oiz*|Ns=TP;9?wmT*;kOWT)I z#+W?#BuVuTzZlU`QzKO+IT{k`H6phH@;Tcb8JI(YbDUq7sfKp^{2(2I&ekc@G5lde zA9R>3YL!oLG}cwiTtG7i8?3>f}cyekaIvaiA890aEieyVQr{OyKP}x zSu0G5Cwhg%)!DVI4njweNBMeG^7&J!y{z8cgok8pM)uVKqT9^s-V*nLB?eK*NgRzF zkk@1KFuV>ryTF0_OG2`Md!$01H$HyTG0`@sdi~pUKipS%f)zjNBs>G0v+;0D9dPAB z4Vtp`6g>xa4nS{DQG=#Oc=eWqXfina>M#@5A&B{vqc3;C<%MQ@Qy%pq=FDU-aqLz= w(+;Hisj`{?axdl^&|e5sj^j9v<2d)@1?%e|<*4E-4*&oF07*qoM6N<$f}#1y*#H0l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00012.png b/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4d9daadddf79c27181b32fe7a97f3fb1c59d09 GIT binary patch literal 277 zcmV+w0qXvVP)I+Sk1AU|^G^@?w>V5D^jid%u3hYC2u=|1BD-yVeG< zx0Sc6;-&KRE?`mJ!Q=c)>!77Bw$t)ju8`L5(P+9l7+s73_8X7|S^!4t!0au-0yxfZ zTkogSwSa;JU@Ljlv0~in-xfD5#3rk1j{FfOwM8!702F{2_R9q{0{fM9=Q9%Q4feD^rN1shj#(%;+~;)00xi?18~LwoG}2}1Nt|Vh=_=Y bL`38Q7|x2}9WmP%00000NkvXXu0mjf)UkV_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00013.png b/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00015.png b/tests_zemu/snapshots/s-op-set-options-add-hash-x-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00002.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00005.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00006.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpR-l|EeL4sB zo#OUOpMWK}&ko>&a^GbS+oNE$Jq{!LoWy@(Narj_egcZ`xe0M38O#l3SMoF~%uhh9 z)4edeYmL@yw-bOqHlqa%{Mbo*NtUQ42B6iTxE+8eAP6A=#@a`INk*d(7;LPo;yIYf`dtW_<0fx~ z$LD{O_NA V2#?nfE};Mb002ovPDHLkV1g7Dz$^d& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e8bd9957caa4acc9ffa95ab6876086a1bdbf5d GIT binary patch literal 510 zcmV71`u-2xi|nGCvjV>$VzZ6!^dd2W7!VCDB}tMbNfvNEetxwjXdw1_S_4&r zTY~20Wt&-k2X`7eJ?z_$alpqaMLg%D9QUt_mgD}?^6XPZ+Q#mdRnE$GPibdKtu%{^ zMtuui%QRHk;8k`51DTWz6Arcw7-nbb3TR_i6Im?EiP0F>%MJ~gHr`G^3X)c<(lPqU zQy(mUaor9P;G5t*pd})#*mcl7^$e}qMSLuE0L}nlJFT>*T-1HCM8oANCOrm2X% zK4$xx8G4ls{^RdAxBl_Q{pUY|jvN!r++-CTxKmReZjhm9)mQL_D3l&Xeo-I0pp#%V#I z4YyeP*A`tmxsAJ6`5lGBSu`PR3G7&Y##?fsHFbvVJaJsGukArt3fKvBFY44Re5WmMAN#yO%AQ*mIG?0r(JB8Xugb zYA>BH3s;YE6BuSDaNs>gtCqkK}nfoOY*Z=?k07*qoM6N<$f~BzV AT>t<8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00009.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa5116360d7195e7c4ec52dd8ad0e90750b3482 GIT binary patch literal 500 zcmVS4 zKh+Eu5q`(jP5BbzaYKd;C7++#X*gu}$id7Z$Ho;nluHt!&H_`(AX_ z=g3%=OSQUq$!0*&kdT&4{LBa$M>PWSHM_FhNL?TTCX^;oE3q<;!4}ktR?;#2;H3}d zCJxMav^fs~ZQmH50XY`Ssu~AHEmn=^RO=LJqv`;>1AyZ+kw*_X+T;ViZ{ap@bhj|v zrYz2So8xOnwU!NfpTGCAdgJ-?A3>k9rVCSElC9aPYm|y%m$mh;;yyUZnO(?G z{fjhbYg_Lo8@fr;>GIYPa7R2kES4MyDCvU}FY=Yi=a4fS(WsA}FDiliP qoJRQYcy@eQkotwAU%p$29R`UDWrd zdIgksaJ6PAP+%gc_a5%Kp(b`LS5h^vwUFtWzUHvkASkmMHOC^`vYKI{rl&_*m%<>$ zG_2Wa+vheGxf-8!R}KyUU5v(o!%b#KUp|ttu<`Qhr)`vqXdR}{_g3B+AXW1kz#r@Y z)lfPcx@xY8v6Dt>8)3)=*{?=w|3OBqr@7a}H#fPtkAahR215YUAWIg8!>C!xTg)`H^GfJr;=o-SIVfI`r+EQAn3$Wb2m*C$DW3>CkRX)uJg z#A$UuE?WLrH|wW6kGq?R;$92oG5O>g06|)VaDCn0B>6g%Tujs(ZEVo4U#K-gwLi7@ z7a4OhdGSe-<`;aJVW>+<(@Dfb!@W-Y-he!3hbsfPB%R~0#+aBvNp_VvN(FUU?peTyE+=$*Q1+JHPb@k&Q-2CMz^PVZ3QK@)-i5+3b*!OV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00012.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4d9daadddf79c27181b32fe7a97f3fb1c59d09 GIT binary patch literal 277 zcmV+w0qXvVP)I+Sk1AU|^G^@?w>V5D^jid%u3hYC2u=|1BD-yVeG< zx0Sc6;-&KRE?`mJ!Q=c)>!77Bw$t)ju8`L5(P+9l7+s73_8X7|S^!4t!0au-0yxfZ zTkogSwSa;JU@Ljlv0~in-xfD5#3rk1j{FfOwM8!702F{2_R9q{0{fM9=Q9%Q4feD^rN1shj#(%;+~;)00xi?18~LwoG}2}1Nt|Vh=_=Y bL`38Q7|x2}9WmP%00000NkvXXu0mjf)UkV_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00013.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00015.png b/tests_zemu/snapshots/s-op-set-options-add-pre-auth-tx-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00002.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00003.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00005.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00006.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpRt`yJr& z^i0g^T=R3b+6X`$8&QH9E}N7WGDS8p0HtO`0Nk?m5)fc#h4c*osX49+MH4xd-Odz0 zku#FQw+|FBfUebc*E+(FWHcgf1b`Q9db$w`R+=aWzzJSJYF7^aprZAP zhMotwHB<|eE$b_;VkMfG&g=Asi^smi%KC0gg~0hB}tMbNgR0G|9_<=NRjwFEP)HL zTY}~_%V}oKJD5lya>Uh-alnt4AeqPgvfZ8!HQVjbviB)N>PGTc6fTY>Z+T};tTu~9 zcYO_yWxiF#%?oxj6mIvct%`A2dzXX@%jFl<>{Kb7>sD|yW+lOErLe<0lSVGHh%$0*?XRJTo2p5u2a?2;*vv<91H}A=r^S6~4w%C=%R9Wk_Le_4 z%QAM3tI2OxqQIV-Ua>{u+U^ofbfIzWLgpzBsFz^Q)FNkHanI2pX`A582NFuZ2cTB7x!_ zHxgz97)FbU;3P#IukyPrgyU^2${}kqUkv{iaIY+!O}!_0!EWW!UXmn9@}~R(7`Kio TUwB6k00000NkvXXu0mjf;u7u* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00009.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..9ca8f43b78cd8e4bd600f4fd49360f3004085a79 GIT binary patch literal 515 zcmV+e0{s1nP)Z+ekv1Qk)F+g21sQ4|3@AHTm|lB7s{J|KZ~ z7>M;NO=nrR{05$#Ut*-Vk^V#pl6gM1{r-L!+3#N^?VH|YEF`a@aIr0^aAzte8+R-zw}TC5t+Y1ApA6KVjw1AybSGkTA4wA}{ww#01U=+;Qw zrZUd@oa5_=>Zm@%g}*miz3}|`kDzcibz$;LayBb<%_4N{vVHxllnu`0oL#7Bd{6Q& zRBOR6&*y06VxEV`h}vgU8nqj&7*J@!wS*NY56>nf(&5!w$;Sf;+Y4!4Lod002ovPDHLk FV1hAe?{WYD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00010.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..2d28f4cc524fb1f60aca0f2fc5a97b7681fca74d GIT binary patch literal 515 zcmV+e0{s1nP)H9DQ=|KC`CMv`?lX+50L%#QPO036Ih7;vdY=EsFn)bX>Cs$^$@z2 zX{fTnYZOxqxs=eqihxncD4{C=#_UYE8Eq*mz(wyidRRij79_1!qhsuYr#=XuxYlR5 z2%=3Sp8=4JuwvH%s+}<%b&AM@IzZn6l;gAmSC4VD-3Ruz&~5b0x7bbGrZUd@oa1Z6 zbW|VWuD=&tz3}|`N3`o~YGBfrj^1^iNw0-?m$_L-%JG)TP_?+aOsiv=&y#!sW zX_ACyeo$LjE~RUzB+|g8i%m_ z%U94AG`8WeGeW08`CzHc*YF-_?1{u!q!vX{6h%?|8BgTNly_iBZs-62002ovPDHLk FV1ju=@5lfE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00011.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..da59064afb4bc24487cbed5288f9d58b7e419df5 GIT binary patch literal 456 zcmV;(0XP1MP)UzG$ZG(qultvzTxXVpj@ZzIfztS3Si)85E^S{) zo57TaPnNJ3@@B+DO@pvXN;D+YYea7clrh_VG6sD}0V`9}K)`n6Amj*%}L z`=G;QNvkrzt7jeC<^q;Epu{4es`~)krKgtU33)E*LeBwg5=+qLkTkk_&crOL)PF=fsYW75jyq1>w!(Tasv zT3@qWaCZQ%&s1vz)sF=1u(&T4PPXCP9bk0k=mzy!d`dFjE~9fmV$Mw9g3At&*teq% y9h;yfP5^jD9QADJG|=I$`)?+~2SE@7fiq9pnoI+Sk1AU|^G^@?w>V5D^jid%u3hYC2u=|1BD-yVeG< zx0Sc6;-&KRE?`mJ!Q=c)>!77Bw$t)ju8`L5(P+9l7+s73_8X7|S^!4t!0au-0yxfZ zTkogSwSa;JU@Ljlv0~in-xfD5#3rk1j{FfOwM8!702F{2_R9q{0{fM9=Q9%Q4feD^rN1shj#(%;+~;)00xi?18~LwoG}2}1Nt|Vh=_=Y bL`38Q7|x2}9WmP%00000NkvXXu0mjf)UkV_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00013.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00015.png b/tests_zemu/snapshots/s-op-set-options-add-public-key-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-with-empty-body/00002.png b/tests_zemu/snapshots/s-op-set-options-with-empty-body/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-with-empty-body/00003.png b/tests_zemu/snapshots/s-op-set-options-with-empty-body/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-with-empty-body/00005.png b/tests_zemu/snapshots/s-op-set-options-with-empty-body/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-with-empty-body/00006.png b/tests_zemu/snapshots/s-op-set-options-with-empty-body/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpRW&U9)?#hsnBI#0n{0761SM|H>Muee7hO?cS1%k_a78 zN=bu{{boQmhF-F>Ohb0JtfkhTEcB;rm~^SDv4WCge!QY5n1*%h5bl!T2f!}6Y`Oh7 z!LGgowP_kn3Dhx@rqFn4o-YAaV{gHg_!JaZyVmXdi6(Li)PO79D?wxmV(+9XZ2xTVMF@XEgu-0002Ml@IDz-AO{tO=kcA002ovPDHLkV1j`BuKfT2 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-with-empty-body/00008.png b/tests_zemu/snapshots/s-op-set-options-with-empty-body/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-with-empty-body/00010.png b/tests_zemu/snapshots/s-op-set-options-with-empty-body/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00002.png b/tests_zemu/snapshots/s-op-set-options/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00003.png b/tests_zemu/snapshots/s-op-set-options/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00005.png b/tests_zemu/snapshots/s-op-set-options/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00006.png b/tests_zemu/snapshots/s-op-set-options/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpR%5K{5 zvt}vb?vP8v5f4?fP!1IPQAEKGKs!IA=$DVWpJ8cB+=&li9za4Ui@<#t%EEb|^fzSPWGBB+MCL1T7u} zJ1KuDn0000< KMNUMnLSTX?%j*OH literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00008.png b/tests_zemu/snapshots/s-op-set-options/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2d409948a572891e7f3e734c0dd122473fcb93 GIT binary patch literal 503 zcmVnG9Uif7)&(zQ&ly_U~@9WJ&vL%ilVUcdR{9uol9kx8Zg&B zL3+={2C*dWz%|$gDFw>2e6?G&IN%*$GD-eUeR?a%#vWg9$@zUsG-aasdcO6WCYSJL zjUM*yi4Kf$x}CA=iB?`n zxp*%$CV9LTwKrAqMyNF|z9eEHPjd;ms& z`2c0hnVwn!xydz|oH#2dfX9TZ<&flwv1p8b5f~bul!_38GGT5qPRm%>(*{ABpR*Ki|dcIe=z_6002ovPDHLkV1lEVHOW=$qmfQ#s9qIB9WwJvqtkRMBl z8i0%K17SUK2j=tG?qG8^0|($kAdj43Bb7O8fdioJxvlr@GYyYQd`fdu+T)!x5tYF# zFIZkjHtWw}GJNDEX=C?)fZYRN>16i95K^7l4<^UpB)JQnoyYkRP_sZ zjcqt$MtBOuLuU~h`5N8>K~FTsW@?foNs=VVKjQ@wSe_>+NHQb<0000!Xrds9P|? zG(0u{#X}VLXhy=87pdkbN3}RyH%b;dsv$OfAnshI^#oL5w?WiN)1%hxv(p2?BmoDh z17z)40>y41XT>mZq+x>pdG%ypxf5 zy2{j&dc6rlp1tay`jiO%7lQ<7f`_lZCCpO$>Ko%ZSczAmm8`jk*|ufv+rMJZoJ%b; z+Bn0b8p4__F3l?S5jzvpZ&5st<~@6Y0;a7*m=M*3&JShRR>X{~G`wcd$2{(9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00011.png b/tests_zemu/snapshots/s-op-set-options/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..1966a4ab104d6e09f06f0fa5a0bafb4d6dec60ff GIT binary patch literal 511 zcmVU+l~tJfY_#E=ElGVKoM6(B*?;jB$W;n6A_8JfqPu8# zIHAZ{ifqCJo0_u$qG@o$88t4A2Y^{@oVY`r6GVFe#_1w816zYtGK@xT-hW!$U%LT( z4PxBT3IO4!vGV=L87W;9v*2tQda? z;lwT3!Gz5iI%CW$^{9xAz0=Rv$;q|^iiH2#_7Bt;C|(Kofgsz?;$9ND2k*qiqtNC! zQS#^>;KZY?2k_{uPg+jLiX`Nje-fqY@naeEck)Q^I-+tvG_P&DvLFiN5fuk^i?__F zk4E2wCt-)=xF>@zcVAlz;#hO)96CC^<(iq_fS#xK`i#Efc4fJk1QYR990D52SDy{} zJYcu1DN3Fp9^X%-zB8cK9T)hZQX^a*q8+8O#B~7~%%xVl2ashP3nQY0>`kx8O4h6_ zb`tO~2-XD-jHtf~Bo-t3Zz+BNyG|q$iA3T`_y#uxiJaknTekoJ002ovPDHLkV1jS^ B=^y|A literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00012.png b/tests_zemu/snapshots/s-op-set-options/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..63cb0c0620f0250346835d9091d414fea2df91a7 GIT binary patch literal 448 zcmV;x0YCnUP)hMRvLL@)LWr>dNs=VVUD=%VKJQBV^;1$VTr`X9 zxF%E`+x3xVxq;TYJpB|tZ#-E*rms)dU9%~x)Ve(Vm#3o^05Kv2vL<%BSahf$s|moH z@UpO`K@I1qaaneN@)V;cn0J8GybJFgpo98t9|pDbLkbqJUEf3RKh5u7y8v_ytlzLS zR20hf-oz3MjMR?taMp7@pgP%J{7OrGn>YL5yaUQ0r9)2&=>}1pwQ{hdShl{0^*>1P z#3hMf!rdG?W4cE=GDW2A16Qvft4&4mg#X+2cZv^WUkT&D^eu9Cmn7F+)KIEYb8y+WQGIqeiL>?i`drT+FX#rVA9yw z{6?wiLp0ONtYfhk8cSwuxG+1w&RTvc`~uLEz%h{*fG`W7c;|f$Pz+aRE}LJtq|B)F qsVBJ!-hWH6aQ*8~k|arz1mp`^%Nn7gRn+kS0000dwZjy8ZHx-!Id91#XMK2_v#Nhi$9zUAJDulRwSCK(aRRL8&xNFy`` zqtH8C{*W)9J^WJ&u~~Zp$OnAXILV59#;R9kS&4X0lfeiKTtWEz$qZSQgh{cPOruG7 z^pU&;F3Ib2qWYEI2TL1J(*9QO2VxSo@R@`S7R;Io--D4%dJ7rh=w#Fly;dA%tGHL( zkU3pT+D#VBTos*;b5>#V3Mx4H5^kxz(`H#Z(&d#Lud123$>r{lTt(ZpF;gXM5(AYm zv;~nuL3^i)<_(CKTFW1#gpEwn5q+JapyEi66QK6niOhkIQ*oq64hUUFwU(Ab|5C9< z+I9l6J15>k*$3RZH`%3ueHXP~wu)=b*2c*OQ$cN1(Ei_HnW$i)U~QcP0001ba$oMg3X;C&I76IKVKL*@ znd39lSS_tCIL`c(`*O$0P8qtSYQBT?N`x2V9YGRurT?T=BrT$5YVzpKdLD>A~SZwUxj`;zQth~+p z9)EHkdQi_Atq_5cAO@PC3Tg81JM3UF>jYp&@4L)ns9EF>nbDXXLj?c;006KPKRDUW*Yot) Q+yDRo07*qoM6N<$f~l6LkN^Mx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00015.png b/tests_zemu/snapshots/s-op-set-options/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..912214183b372859f522f12652115cf34e1b4332 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA5fskfdkjv*Cu-p;tl*Q~(fy8iT^ z|NP$$?$znzTw%CXq{y%5V3ytmrK?^*rDkiomxfeDyo?Xmu*KWw^cSWNlP-e7N>2`4}->)8smHtDg?Rr}NZLo?qU?o@KgtZBwaA+_oY`kK$u# zon8-Q3TEGx6SAIeQpLRN=ktkM{+9HAta!ld@!axky>WR&b7gsWmA%}O><>FVdQ&MBb@07#j5-~a#s literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00016.png b/tests_zemu/snapshots/s-op-set-options/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2474f82ff7a24f48c76d041778a84f3d3e4d91 GIT binary patch literal 328 zcmV-O0k{5%P)ocfFHVXJQ9X*U~AC}}i#$ja&ug-q-nG zDSPB)2T*%L>)xxN)T3^8Xn3B%zXjQigo-vT3xH-85YO~GEcZ@{I=aNi8YYPfFWF$=JY`xLSO3%O53o40^=vJaMNaG}Bg00000 atj!Og1;VsWkGp9A0000Pbt;c!>c-cBI7Vq2!k56$ zkaMiy#-e zzs{FY+*w`px)Cbjb7;(3RTM114LflIManzWXHuE|!xgayYv75e3jxnMJcVi%*`=;* zG00w;?|gQ^{7D#mWBw#O1)CR2paCohjDrPmCVCIxcZ7cvQ566H0000s;R3$CzMMV` RYQq2k002ovPDHLkV1he{ek%X~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00018.png b/tests_zemu/snapshots/s-op-set-options/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..62916759cf072f75cb389f7b4af5b5c9c30d8097 GIT binary patch literal 361 zcmV-v0ha!WP)gpB0#w!RMZQoe>yzA&%_ z0C>5WC)#07)Bci{WHdTt%WyBEHCbv+3m}R^zJ~H*8jWf<)#CBe5`fy@&1E~F{INLW z2Go|g@&zwJ9bh*8vEV>>fc+5xb_b|utY?UNLUwrBBCF6Zv&3;zPSVTl1E?mM*@vN| zn%M`#HHd^&D3T@5VM9Dvi+SU>BfHH49Eg)5%6p~sIlT)>pmryv>X+&eTV53_x{TiG z$58Y8G*NYPc$85Hp<-Ot+|{Pjv9};@0mO3;wY6~uCuQk_6Rn0Gt8hpRaixEbL%6i0 zbhOBs#>(Z5)iPCwbV|lB!DIdC67=`%(E&uWt`yJr& z^i0g^T=R3b+6X`$8&QH9E}N7WGDS8p0HtO`0Nk?m5)fc#h4c*osX49+MH4xd-Odz0 zku#FQw+|FBfUebc*E+(FWHcgf1b`Q9db$w`R+=aWzzJSJYF7^aprZAP zhMotwHB<UXdhL5!oWzK;XGMh&Fn^<38N=SPlpJ4p6ENhKGGf7QWNUC~;0t_@q8 z#iUW6quk47sH(wBb_0e?gES8u%ncB;W9SaZW0r|5739Rq80U4H1WuE;!{G?3?N-t; z{Nzg?3|}~LLpb=x`3}h85mxFx5Uo9?nOmd}Lmhxm0C1fqEajfZPD$3CQ|mvFOwRE*RQgbcAn$YiuO{3wYpLs-wP4W z!V0eW0G@(F-b9uK@nzEuy94?^O)yJYTCw_otT>s#)24ZLA3;}UuDH;BPjEY+HuGJM zYmj)!)DMkKCgK}Flfwd|zLpl_0jI`^ki2OWPe=Pi32f%78Nf|x2LgdWU>5g^ZpN<#dKkgp@R6UFfkpz(}nQ{0_sRp3W6XA0t1fc`>)hE2@=Z_GgJyI z)2<73=QOp}9Xx8^%1L%B{jr)z=6I&t<5i&C9)D_bpE872RzJnb#j#Z@?~IejZW{Fz zzL$BZiopwZQv?l7(wb8*Ba@6{x&vs;u7n#XOW6SvLd#Sudu1GlBdE1oLC4^W=RTM- zoMQ2;Gu;H%zHz<-C>~)Y?t`jT7p>dW>K18Z>Hz%&P_EMg-96xHix2RzmD`l7yM^O1 z<#E^hTwgPyt#q*a{Jq!BC*D6-MEjg|4NU$>_U24kqX>#^tLuLyeDFy=a|#8Sj**p= z6VD(jHB}{8PYYbSs82Wfp>*ccDk^n#rmdh>9drYU0$SaWv5N&>KcQ6>Rk+T`awP6b zTT1$8lRsJd^vCfxq%db+!r+^8^jX^l$u3NDkmUJ#S_xCNw*!(CNBP~)Gm$)6OHac{ z95Rild^x7QU!B1GfCF%0=Ic3Fl4ob8Jc>C0H^GL+LR6~KaCla38TbyM%fL@|zH;$Q zXpKcIqWpJL=`&HmLl7nwzRtOMlvR7jI4_jHjM1PmzAE=!UmNs>6QKHtC65@g7{9?&2h z25RSxhI5!(^8xOCzamI}BmMDGWV1e(+v9anb9?-0*4Mk%FVvwsTSth`kplF zYxG>!scI%KDFzI6Dbcq;fK)Py>kO!Kb|&3OTVMusQQQ_6hY+v??afv)F#OyiEkxfSQQ3GUtJKI%C?aitOVW0K5W#a$2Zo4>{Tr1HNw^HeK@>yMfD8M6Hi0 zUn8cyeDM4Hz01c3)}L<#ea?m^rrsn+bEK_a498CE>whI<@JT+i3MCtjmkjn$%x%5a z@3k|+`nq`*1_YRshDDW)vJ2Br>c*xX;CTbnfH@v;KGP*ko)?L}WB|Z$#4B$43H-<2 zR^0JpXSzOfO<}(AB8={YqpQX7Z{O=Mu2WBI1{5v&1i$=xJ!3F8Ec1u*d&6n=+S|lT z?>2}T;F9bEX=NU?iAJ%YGgbzMLmpm*z?8wRx@u|$!oFWY~JI`99$S)>bFYDDoL1@Sa|CyNQ*5ERto2!bF8f>~bAzaL4A2C9CK^&kjk ziPG%8RC@X0yrjSCyq;=9RBc^!ZnK_L9Z*1XC{#bMH%UHEk{1oRp#=k_{)=t}SEW+f zzDONs^58>~?gw5?80c0fT_q6>1@&&Cw*&GuI~*CnDe*Oqw*}R(j-S71hoIIz1s#J= zoBLqEWJ#-hfmdT)x6TBXIUvVkK~?ubQ7R9OD)V#w-LvluyBu@C17i0G4S6Ac4w%{a z>OsTLC4LU5hJH@f)_FeQxq&3~>d=k6t+Zj!qhH0B^vI+Sk1AU|^G^@?w>V5D^jid%u3hYC2u=|1BD-yVeG< zx0Sc6;-&KRE?`mJ!Q=c)>!77Bw$t)ju8`L5(P+9l7+s73_8X7|S^!4t!0au-0yxfZ zTkogSwSa;JU@Ljlv0~in-xfD5#3rk1j{FfOwM8!702F{2_R9q{0{fM9=Q9%Q4feD^rN1shj#(%;+~;)00xi?18~LwoG}2}1Nt|Vh=_=Y bL`38Q7|x2}9WmP%00000NkvXXu0mjf)UkV_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00025.png b/tests_zemu/snapshots/s-op-set-options/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options/00027.png b/tests_zemu/snapshots/s-op-set-options/00027.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5b137264a5a14719d7b51b88d26d936ecc0ecf GIT binary patch literal 478 zcmV<40U`d0P)`aXL#TY>80t7)21i#A7Q|$Hp)P8u1lYzR$ zml?SlGO=Qdul_k|1N^NR1kV?$pxq)KLKL^!9PPt82mI#G85F>ERymdQLw@>f(pL zqw5iCu#*i@D9C)iWL6E8^RTtdQW@1V)pLWpw-Ve)_g%@TV2g{)D=^5#qHz|dVgT?t zi18|BrE>>AHe8*<06bgqOwXRuH93ISJEHo0SWwp7hqk%WVUU+MH4LeQmg{lB1}V$C)r2!dcH|BhfX UnQ8a+W&i*H07*qoM6N<$f(Di6nE(I) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6c7741af941ddc1203928ffbf1908c092f56b0 GIT binary patch literal 473 zcmV;~0Ve*5P)AFj7Z z?%H+0%T@bRxW0T|cH=N{0=B(hLx2{?9u=M#cLo@NP6$6MfWDP6O#+mDjgDDV8A`B} zlH2*{WM}dx?XxpuZwhzPTffQ zbs_Rl-)@(1n1G7#<{RcFIJ+bu55XK1n1<8CV%jW8J<8vp%v1zz<+@w9qD(mhxRvOH zTZWnwO8H5kb0MjaDsuvig)Etb?e-|>=4L3P7R}A41yy)Px14>TRiG^{p+f0G#Htmb zIL!`%50QU*%yqU3M8ngV)q`SEQS?6wdsZf%roI!U5v68jAP@)y0!I7;rz>7T&pkF~ P00000NkvXXu0mjfimc9Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..428ea2c11222fff001fff3052bdd0d051b1eab92 GIT binary patch literal 454 zcmV;%0XhDOP)>#~(vb8=B|^Ij zyi~PI89sP)tGP090G4%dLLg>5r?@iLnc#N@Faak-H?)$n$#!Q<696KEgJTx#40>8Y z&Ozn0SJr9jVRrzRyKle3hs}PPF94Lz=gt1KAX6Q)Z%o9%lgL7zoF{ofnp>A*5FSEa zN{CubtJ^J$tv6fr2H8>$>Ps9UP+r!NfE$F9*KjH=#J-^)r)xD#i=g0K%lQ^>{p9#S z82#Z|iWvTmLzFJ&sQlDu2B6LfSIfc36J}E%(jH?#_?r`%`y;BYH0|L<2a6E$oaW^2Ac+R-~`B#!LzmH zp)+lNuZ=HAl6?Z+)&^LzZ}AA{C&c47p1uQtJc6%ch0RmSwl)Mf#x1n6XgrZ8HE47S zG6uX%wLhh=^YOSW@N(PDW8nmVc$tz*Tv_XeFz+6q1l%F)tYpUSjAaraRB&*c1v^6s zR+&5?uZ;49GPT(mV9MFIUEyZY59=jB(z##smxTzmM}IJ$gPC|0n#ncDk+=*FUZ7DE z0_@wA8o`+_P`#Qw4s78gBc}oU3kwT}PR<3~jJll(o`&EQ`BMvM>f%989$)2t>RURp z@U5im!fme(Y!WlICH3suqY)Yt2@1F-q$ z-FXhqTe2?et&eFsA)yR&dCO;1H09&NL{*tGNa$XTs68QXR)}9LI6~j4uN3WRFukUCaOg002ov JPDHLkV1l@x+-3j( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0366cfb94c71e3892f83c2a34fe6e49004f5ef9d GIT binary patch literal 396 zcmV;70dxL|P)q-^u>cR#=v~eY(R^F#aLxQRK^yg`w?E0<5O7+=B^3sofF&+fPj zP$mk6=FFg)%m~BMXQ?q*!?_D!bmr(5btwq@Q)u-akcoK{xZu(OlKfuq;cK(@{AFKpX zXeHl97S~XD`Ljl$&1#X3E^A8Ry$f!z>% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..9d02e49e8c2438bceced89462994694b214b58a9 GIT binary patch literal 472 zcmV;}0Vn>6P)NklH9x$7o7#I$8wQL03$klE4Ak4M*@g#ttg73_^;f8^I#KAUW~=30afn5NQcNbeth0<~HLBVsUX61Pi_ z4ho8zt;r_LNNUaoMAJaS88xn+9ia4L(_Ek8&W_sz(K|rLJPow;A%#(|&F+s1W)gEB z08T*k8$Asb1r|~FTs}YdV7<@)W#smdpLB+?0iip9Cb<>#wo*DLiZ@pRyOPVY>$B6) zlxEV)P>eCp)U!m;_RfD!=_s#*<_S-2`wQd)#aF^S2xH4U+)Gl=;7Bg+g_85V$WRS6 z#9_?a#8a%&=xxRO*>y|}_3Dr^5^-LC4nS$Xr5T*&U@1}01v^hW>qWNuk|$e@F3m>2 z2`Aw^`SjdckjR9gsiB_7`4H|HK&8h+ z=A5;_IfP>e;8zQ}!q&y?m(1CoQghXF*}Vr=BqaK8Dd(l^x+sdGn9MI*pC0iMfOWwD O0000<1J22s?Pv9vvHFEJp*jIhan@qNx`#fm-n#yQOQhWtOMi#)OEx2 zprMei^CKSf&C9D#upTr)b@F)Wp04$6YE=WB0cnu6q*p8HPGaN(BeAnuw!DY=V{{q1 zLI`)$lw-O_dd5WJ*(Yz_zgC-yu@e68*w3UjP~8%)gVMK^ySpXfgPCl;3N6lokw^MK z-QwGoOznW7{JoY2TBWYwpbDbJPOR90uxyp&T^QSrbx2)-FfV#1JQAyYYTHr0<00YmNoilQQQczZ1g5)O=+i+u~ og8e}MEyX~7E)Rkr2!cEF1&kG1cF3C5Cp+hxf$!N&z<(;{U$w_XeQZq zP1;p#(`TCL157n3y$kD;cNRhS9g{WJ{3)xXnw0+GZm2~BM#Ny&Bu-%0P&dGI2Bb#joL+8A*NEZ|6vw{b%i{OqDmQ2w>e5U~ zsq!(0TiVh^kayw9E*Hvq&{o2~w*8H?28u^QKL~a6T-_;&F*uXSS0U$ocQQmn$M|6^ z1vh`niB~_kvLrntCb2iRc-iKZL?Uys$*SOz{&O3OEYEaU92SDzmNM%iJ)wE!A+OmUNL3 z5Sw6lf%JwD!nB+SY^yAD+VBdoQ({m)5}3sa$OYh}StS$1Po>58Mu|;`nf8`F(y8f7 zT%^I^Zk}%W7g0>}q?S%G+GJ$v0rP*WaT_FVm$JY zHBJIHo07DTUz@f$0Krijx7m(39Nsfv3&6vLm?4Xju&9>k6q9gfJ(N~%7p4YE{Y6Rg z;=F2^h3T2;&;8QTUywW94z%|Z=KtG$5k@=K1Rj8|K~EkPg@)tT$dmAM#XL;39o_Ph zPQI-uPoD1|@?JDg0-!9|^q9ko$@zn$@>WwCGRSMj0AM~Bc^Ef4YTvsQ(I6+CmaoAe zOA&EO=CVw%mO^=3J}R+`9w0rS%b7~drIDKjp9nGsOv~qL&p7Y1FdjhmT8cup*8>D@ uTthLHpInt^S*H(!_|rpi>pPC)I0)XfDjLxQCBC-+0000WeX@t+3bgz1;7&uJ*kFL{LtTCJ^pU|yRi#GhOC^Y(2aT? zw8v)$K}5I;9b;9e2V-M^1?&O|xs$x6$l&ZP!)ybnyI>>ar6A18B26|3qy0d+fM)b@ zZfc^?ef6wh8mWf9;2HL++~6iYM!Gz3^`+zVuUuTzt5|n|4VuRZ zrKSX}pamF<9n^hpoef`}>~&){q}}aAYyTo`DCxFxaG24~^#Cs*=HN+Q6@{jwU}U#Bpy4~$ zb*?DJ*2|!5ahoKM!NL@yEO9n%3T2#Jtwyc|vD2d*gO{bYauXv)*ze}X;J6*1wiF?h z(mE^BzAr=1d4Pt?7FE^xb^rZnO--ZY`z2s_4=}3%NZj=ubX=54Sk9>WX2l$?>BR=K zkMc$6cLKJ6if&=!{(0c?DpX*T1nse?9J~@251^|u2!bF8f-m5$RqtCJt04dY002ov JPDHLkV1lwz)X@L{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00018.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..59ac440aeff62f7b69f452c8a5c7793d21e86125 GIT binary patch literal 439 zcmV;o0Z9IdP)L@MFbu%?V}6`O$CI{LJZ#Us=P0OI?z9go>9w0LNayGmpruQsXkwl!~G ziOjq}=i?vYA5=_IQl^s*DwURx4Jt!9a3*6RrmAUUJK5q{PY4CD=SREUKk-WzXt;o~J8}hn;97gjz z%zhj`hET^bNj6EFNw+!Z2A@g=!!)%djUy=;;Q;ou$S4+0MrJTgDngh^uB=}9mDiHY zIirq6UMMUXvEZgz0dn5um!=;87zuJO80Kc00bsmyc!f!&Ig@u`RJyd_#=>|L;2_q4 h{>LA~Fbu<(kS|3WAaKm=ElL0Y002ovPDHLkV1ga)xUc{K literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00019.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00021.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-and-clawback-enabled/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5b137264a5a14719d7b51b88d26d936ecc0ecf GIT binary patch literal 478 zcmV<40U`d0P)`aXL#TY>80t7)21i#A7Q|$Hp)P8u1lYzR$ zml?SlGO=Qdul_k|1N^NR1kV?$pxq)KLKL^!9PPt82mI#G85F>ERymdQLw@>f(pL zqw5iCu#*i@D9C)iWL6E8^RTtdQW@1V)pLWpw-Ve)_g%@TV2g{)D=^5#qHz|dVgT?t zi18|BrE>>AHe8*<06bgqOwXRuH93ISJEHo0SWwp7hqk%WVUU+MH4LeQmg{lB1}V$C)r2!dcH|BhfX UnQ8a+W&i*H07*qoM6N<$f(Di6nE(I) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6c7741af941ddc1203928ffbf1908c092f56b0 GIT binary patch literal 473 zcmV;~0Ve*5P)AFj7Z z?%H+0%T@bRxW0T|cH=N{0=B(hLx2{?9u=M#cLo@NP6$6MfWDP6O#+mDjgDDV8A`B} zlH2*{WM}dx?XxpuZwhzPTffQ zbs_Rl-)@(1n1G7#<{RcFIJ+bu55XK1n1<8CV%jW8J<8vp%v1zz<+@w9qD(mhxRvOH zTZWnwO8H5kb0MjaDsuvig)Etb?e-|>=4L3P7R}A41yy)Px14>TRiG^{p+f0G#Htmb zIL!`%50QU*%yqU3M8ngV)q`SEQS?6wdsZf%roI!U5v68jAP@)y0!I7;rz>7T&pkF~ P00000NkvXXu0mjfimc9Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..428ea2c11222fff001fff3052bdd0d051b1eab92 GIT binary patch literal 454 zcmV;%0XhDOP)>#~(vb8=B|^Ij zyi~PI89sP)tGP090G4%dLLg>5r?@iLnc#N@Faak-H?)$n$#!Q<696KEgJTx#40>8Y z&Ozn0SJr9jVRrzRyKle3hs}PPF94Lz=gt1KAX6Q)Z%o9%lgL7zoF{ofnp>A*5FSEa zN{CubtJ^J$tv6fr2H8>$>Ps9UP+r!NfE$F9*KjH=#J-^)r)xD#i=g0K%lQ^>{p9#S z82#Z|iWvTmLzFJ&sQlDu2B6LfSIfc36J}E%(jH?#_?r`%`y;BYH0|L<2a6E$oaW^2Ac+R-~`B#!LzmH zp)+lNuZ=HAl6?Z+)&^LzZ}AA{C&c47p1uQtJc6%ch0RmSwl)Mf#x1n6XgrZ8HE47S zG6uX%wLhh=^YOSW@N(PDW8nmVc$tz*Tv_XeFz+6q1l%F)tYpUSjAaraRB&*c1v^6s zR+&5?uZ;49GPT(mV9MFIUEyZY59=jB(z##smxTzmM}IJ$gPC|0n#ncDk+=*FUZ7DE z0_@wA8o`+_P`#Qw4s78gBc}oU3kwT}PR<3~jJll(o`&EQ`BMvM>f%989$)2t>RURp z@U5im!fme(Y!WlICH3suqY)Yt2@1F-q$ z-FXhqTe2?et&eFsA)yR&dCO;1H09&NL{*tGNa$XTs68QXR)}9LI6~j4uN3WRFukUCaOg002ov JPDHLkV1l@x+-3j( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0366cfb94c71e3892f83c2a34fe6e49004f5ef9d GIT binary patch literal 396 zcmV;70dxL|P)q-^u>cR#=v~eY(R^F#aLxQRK^yg`w?E0<5O7+=B^3sofF&+fPj zP$mk6=FFg)%m~BMXQ?q*!?_D!bmr(5btwq@Q)u-akcoK{xZu(OlKfuq;cK(@{AFKpX zXeHl97S~XD`Ljl$&1#X3E^A8Ry$f!z>% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..7a886fb083278d097379485bfb54b17df1e09ac8 GIT binary patch literal 458 zcmV;*0X6=KP)HWAmX)k$NN%61(6JyUq?%4PpqVhH4`{w3zkeP97XSbN07*qoM6N<$f?>1M AJ^%m! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..90c45a4f00e8b6427ac0f7cd2144151302f96d5d GIT binary patch literal 444 zcmV;t0YmLO z8;};2F@z98cxwrL$F%Kgf{78DSo}Qb@5wR-JqLu^N~Jl(X8DwWMY!UOLNc~$mTr_w z8HF4ljz!GY<`pCs$?YUY@;m6IAt zC^cY2n5!V|5Acnu1Li(EG~@tc1Sc=?V+I>;!0hxK5GPqmdSpISIi!{>OkxNA$lC~4 zdEldFJ=d3M$}yeOyxbjie8J1N$B?z*j^irCBN~%D(J5UfR>tg7b!<-tc<(JY`VaWlJ$)Wk~OkgPlVZiEKD5FY_ mmEbNa|6)3h<2a7vI4mE(-W0)kio!nt0000z2P literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..04402efcb0671b486fb0aa12a37a4905cccd903a GIT binary patch literal 474 zcmV<00VV#4P)=pxk z>$KK}EOLGNXsT5L_RK2SFv1nHEOBKAm@>EGFxGKGv{2I8m>R(Ae8?bXIPcbMa6FDX z_JV8?dS{(2Xy1>a`*whaXwq}JdG|Lci?Cc#^}|kU zxaKWmSRCHLgMYK&gfY3Zd4F509aeTNV=I&@-Oz{cgTQGA;HnIQAP9os3&YA|!b1%x Qx&QzG07*qoM6N<$f}IWD761SM literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..3da53dcbea1d5fec6e6505f5981b75596537c1db GIT binary patch literal 442 zcmV;r0Y(0aP)$&aY0WPGQa7-J3;l!f3pj^jAJJRhH5k|^4Y*7|KyMxc~=)p5~#$nOmO zKpDvjJE|$s=|C?46K4$xI)IqFsY{6-oeq=&5MPoidT2dV*`!hurm!>dNJb=H9yQ_Y z7J8Pd8Z+)NQGeH&UtXR@_J-Tb{^;CKz@xZXkP+G+^k#SrRDx#oD-yt2R#}DV?xPyBdO<~M+tF>ecRpoX zicMxTvB-r&$%+MMW(COED=(Q30IURx?K}gR2>_FwQw*{_+_kS+{P;!nN2w1!&Yu7d kViTBu{Baz|aU6rZ0DO2TUW}@ir~m)}07*qoM6N<$g7`4Qod5s; literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00016.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..1321c56926a5c05db2e5220585e2499f334ab162 GIT binary patch literal 470 zcmV;{0V)28P)$gAJUtC|vm5eUU@TMz_6@LzdN)P3yPI-kagH22u+ zG?dgPCA0+7Ndjs0T)2Pr1+aaz%iy3zm3=Mxz;r5$4q3gx&pg#KxqsywVRSK!DluGg z0mP*{H*oAlFVmgN5&?>;Hl6vUV)NIzQ~wYfqhAK3P6LR_3RmJSS}C z@K?kz^RQ=p;r8|OUTwe#ULRqv*@M3;Ga~@+zf|OHH3y@T%~^1;tWt^zHomwF_24zX zR2`Mgw>EH3K-HUn?ICYEMoWyod_O@YBNmQ#MljWp_0J%l!AhQ%g?#aMlc5{ha1LV` zCthOHMxQInvvI5x^=6S`iFjY91}M`@ItQ0I*jdy|L*u2fH(4uhv7uJDFKs;HmoVa| zp1!;tja+c>oHnS}(f0t7qxHPBYHN1lT(nAD;%0P5z>>mAJWB~b$%p7Z1E>?Z89;nzVB1i{680kC8h0}st!umAu6 M07*qoM6N<$g6h1~X#fBK literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00017.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..2077b49dbbbde80687e22dde2e3eb888fd8eecff GIT binary patch literal 441 zcmV;q0Y?6bP))AlDtr}VKVyxlVze@7UcrjDAy+qwM@D6 zsoE-=ho)!~B6Z^8VbLgPyDwh34YL$Y0Ju_QcO8 zHl^$@tU<~GV&0ig!dyz%PpXpM697lPtXq` j6a>9JcO1uYoSpdtJ?jYQja&qL00000NkvXXu0mjf7jDhX literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00018.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..bb73bcd9ba1cd35ba568a072dd81fe62b0f893a0 GIT binary patch literal 432 zcmV;h0Z;ykP)c)117zr={*>>qG)2*(BH}`D9LI5<%4VqhIzc-}WyM(cI?FWV z)J7#qKhhZsP-&CaJAmw{FGF8yR8_PE-w4tst!H@Ispf(6D?Z0xhknYeM1kd)Dn9a1bsqKy9J>b^*m^d zZ#3Wk?7chCg6&{zjRt;HELQ;i{#=k3N;XVkKMOSvs#25uk;7AcMSGSw3D3;!>F8>VlFYrYU&b4N^!?}}%*a4U z6`R4eWV`_g0|a9?Ch~?HfYQr@ndvtGY`{k^MsfkAMq5!gG_5%6VfnX|1bZ5C9LI5- ahw}!;!T}3YlO4SP0000|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00021.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized-to-maintain-liabilities/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00002.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00003.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00005.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00006.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5b137264a5a14719d7b51b88d26d936ecc0ecf GIT binary patch literal 478 zcmV<40U`d0P)`aXL#TY>80t7)21i#A7Q|$Hp)P8u1lYzR$ zml?SlGO=Qdul_k|1N^NR1kV?$pxq)KLKL^!9PPt82mI#G85F>ERymdQLw@>f(pL zqw5iCu#*i@D9C)iWL6E8^RTtdQW@1V)pLWpw-Ve)_g%@TV2g{)D=^5#qHz|dVgT?t zi18|BrE>>AHe8*<06bgqOwXRuH93ISJEHo0SWwp7hqk%WVUU+MH4LeQmg{lB1}V$C)r2!dcH|BhfX UnQ8a+W&i*H07*qoM6N<$f(Di6nE(I) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00007.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6c7741af941ddc1203928ffbf1908c092f56b0 GIT binary patch literal 473 zcmV;~0Ve*5P)AFj7Z z?%H+0%T@bRxW0T|cH=N{0=B(hLx2{?9u=M#cLo@NP6$6MfWDP6O#+mDjgDDV8A`B} zlH2*{WM}dx?XxpuZwhzPTffQ zbs_Rl-)@(1n1G7#<{RcFIJ+bu55XK1n1<8CV%jW8J<8vp%v1zz<+@w9qD(mhxRvOH zTZWnwO8H5kb0MjaDsuvig)Etb?e-|>=4L3P7R}A41yy)Px14>TRiG^{p+f0G#Htmb zIL!`%50QU*%yqU3M8ngV)q`SEQS?6wdsZf%roI!U5v68jAP@)y0!I7;rz>7T&pkF~ P00000NkvXXu0mjfimc9Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00008.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..428ea2c11222fff001fff3052bdd0d051b1eab92 GIT binary patch literal 454 zcmV;%0XhDOP)>#~(vb8=B|^Ij zyi~PI89sP)tGP090G4%dLLg>5r?@iLnc#N@Faak-H?)$n$#!Q<696KEgJTx#40>8Y z&Ozn0SJr9jVRrzRyKle3hs}PPF94Lz=gt1KAX6Q)Z%o9%lgL7zoF{ofnp>A*5FSEa zN{CubtJ^J$tv6fr2H8>$>Ps9UP+r!NfE$F9*KjH=#J-^)r)xD#i=g0K%lQ^>{p9#S z82#Z|iWvTmLzFJ&sQlDu2B6LfSIfc36J}E%(jH?#_?r`%`y;BYH0|L<2a6E$oaW^2Ac+R-~`B#!LzmH zp)+lNuZ=HAl6?Z+)&^LzZ}AA{C&c47p1uQtJc6%ch0RmSwl)Mf#x1n6XgrZ8HE47S zG6uX%wLhh=^YOSW@N(PDW8nmVc$tz*Tv_XeFz+6q1l%F)tYpUSjAaraRB&*c1v^6s zR+&5?uZ;49GPT(mV9MFIUEyZY59=jB(z##smxTzmM}IJ$gPC|0n#ncDk+=*FUZ7DE z0_@wA8o`+_P`#Qw4s78gBc}oU3kwT}PR<3~jJll(o`&EQ`BMvM>f%989$)2t>RURp z@U5im!fme(Y!WlICH3suqY)Yt2@1F-q$ z-FXhqTe2?et&eFsA)yR&dCO;1H09&NL{*tGNa$XTs68QXR)}9LI6~j4uN3WRFukUCaOg002ov JPDHLkV1l@x+-3j( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00010.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0366cfb94c71e3892f83c2a34fe6e49004f5ef9d GIT binary patch literal 396 zcmV;70dxL|P)q-^u>cR#=v~eY(R^F#aLxQRK^yg`w?E0<5O7+=B^3sofF&+fPj zP$mk6=FFg)%m~BMXQ?q*!?_D!bmr(5btwq@Q)u-akcoK{xZu(OlKfuq;cK(@{AFKpX zXeHl97S~XD`Ljl$&1#X3E^A8Ry$f!z>% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00012.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..91a01623dcef30d8b639d527fb46fc76bc632139 GIT binary patch literal 436 zcmV;l0ZaagP)BCA5Cp-$vKZ^_Tc*8!@4$tLCdl?{ zrgO)@1k!{ChxNR1zx5&P8=kC0rms!bTr(Ge3#2I+HL?EVZK#zJaUulrCU(1Mbf_S! znG)~92&eAc0P7mmacZ4QvjYSxZJPN{y0h&zf%OiMX&wgk^eTngsEyiNB{Pn>3qS|J z#tqGbf&$8@Bd4#Qm$9B{f@)-0`IYw2H-hO7fI*g$Ug=2Ji4e_em=(f!%SP?v6^ zr7FiXkF;ls$g?l}x645J9HdBiYu`VB7|6a7`hn@2=k7j|Sc5BhcocHZd6G#rbZ8!? zg&K6TbksY3YKlMfaipMB9)XKvj$Cz-+m!ZbRV`CvaTeBZ!neTFTk#DSVBFkYaekd! zj4Pr443Nj`o?yzBBCd$eK6U_GK9k!&1s@9lOb*RHGJ%f}L_xFDP(9TgE0LAj528U3 e1VIo4K`S4ilK}E|mFk870000Pp#Xk0sr?bIGdC82`PyX7HE(5wuO_ws@;1~W0w>DIyon7LjSdR3nnb({ zZwu=h=s2~`rHKHc7NsVYBLE}YE(ok6K&H7H=;>7onprz7la;qhW*lP&06W0W8=4;l zh437I(U@;uUVRzsnI@=4jt@W5rM697)tE*==wvDBm6mj!2>C!r?Acm2Et8GM=w;{% zF5FC2j%n^`kBQ*lSN?hbwc1pKnecD>ek9C+?3QpHn6|Cl+%54jn91g|(Bj+}dDs}> zWG$@IOV9WzmAzdQ$!&PT6sx$n{@gU06^pTk6GjW)j5_iZu-*ylSz*0fYQw@7LLG|irCMg=xW2zR0-WoJuJrkKCD-OOmjD=rB^8wy*3J0=zgnU#&PWg&V3DVN;g0IW~KhIl=@+H!3!NT4%mtbF`Isp%?; z>1Ecj=nIu4cPuzJD?ra!e#!j=&`4mI$a8?32@t&VJ_qzW3C(D-nvl&O3OEYEaU92SDzmNM%iJ)wE!A+OmUNL3 z5Sw6lf%JwD!nB+SY^yAD+VBdoQ({m)5}3sa$OYh}StS$1Po>58Mu|;`nf8`F(y8f7 zT%^I^Zk}%W7g0>}q?S%G+GJ$v0rP*WaT_FVm$JY zHBJIHo07DTUz@f$0Krijx7m(39Nsfv3&6vLm?4Xju&9>k6q9gfJ(N~%7p4YE{Y6Rg z;=F2^h3T2;&;8QTUywW94z%|Z=KtG$5k@=K1Rj8|K~EkPg@)tT$dmAM#XL;39o_Ph zPQI-uPoD1|@?JDg0-!9|^q9ko$@zn$@>WwCGRSMj0AM~Bc^Ef4YTvsQ(I6+CmaoAe zOA&EO=CVw%mO^=3J}R+`9w0rS%b7~drIDKjp9nGsOv~qL&p7Y1FdjhmT8cup*8>D@ uTthLHpInt^S*H(!_|rpi>pPC)I0)XfDjLxQCBC-+0000cPe#Ko(gsDb6%^%0*;Vz-4bKNs=VVzjEvfz4}d!qMp6yE{GsoDxc#?@@6I6zIkNIT1u+_V z&>A-ZL5Xk`2F61@GgzAgJYXkCI6KL6iX6`0Gu#${h6^@B4kck$Ez-#*VYD9TET9>E zU6=}#`iGL_$@`i$Ekw^1Uk>)T5e?~d8))x0>S322c{hi#Hr5UN0J#R=Ck{8RRuKj0#(W z$MskwE)h=E+ms>}q@O93>eO!9!Q9G}=+T8R*RDwA@+ z<^KMxC-|$Y(;k5KT8l!qHvtGbxrVwaTLeWdqZXbqEZGXTe@h8U?&~B;l4Kb#0r4d5 Typ@9I00000NkvXXu0mjf8voH~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00017.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..b3123ca480a88631dfe5584eb6001fc3dde4578f GIT binary patch literal 443 zcmV;s0Yv_ZP)PGk0~fMT}G5(GgIyp`2U_}D=sTj7K0*<-(_ za3-5XvOdzJt-unKJ~Rc{QD27^YNQI-T)2|(0oWxMy{chDWfhyC?CkCku!&(RPa39 l{+2?aAJBs!2!i0v`~Vsl5YnZ|_8tHL002ovPDHLkV1iQ;!#w~1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00018.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..a521233df8cf76b9a122ddb9fad92143d1a1a8c8 GIT binary patch literal 438 zcmV;n0ZIOeP)p&D28d{4y7+Dnn*lR0Pzu3u9LI55a_qlPwc@E;Y9VD-GboQV znF--zVKjsgmMtT2?7U1?u?eiN(O=tm9AOp!3f#}KT~@c!f*8#_ zD8?X=GJ*;_E2)ubN5>jqL8^>vD*PRpcGv`frVF-078POEEV9WKVIdx1L^Fp@X=;|b zUsN9L4imSHtoZUnwdgHKTiaRIK2Uw$ejH}P)7``DcnqH8f3nbwT%Eiympjy9w(})y zz-ikjmJzIF73n23(w0%SIhw|Asuiqh0m++Gy`nv9Uc|9vo>qji)qLM<-z+g+0O0;n z3&F@i$Q0YhwPd^igaI~V9bd%^8GzDP2s86s0N4#5N-uF1(zn}+Qb($v>bwMU5VL?i g4LOeEIL^!Y0xtm+$VimUxc~qF07*qoM6N<$f@`L|VE_OC literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00019.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00021.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-authorized/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00002.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00003.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00005.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00006.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5b137264a5a14719d7b51b88d26d936ecc0ecf GIT binary patch literal 478 zcmV<40U`d0P)`aXL#TY>80t7)21i#A7Q|$Hp)P8u1lYzR$ zml?SlGO=Qdul_k|1N^NR1kV?$pxq)KLKL^!9PPt82mI#G85F>ERymdQLw@>f(pL zqw5iCu#*i@D9C)iWL6E8^RTtdQW@1V)pLWpw-Ve)_g%@TV2g{)D=^5#qHz|dVgT?t zi18|BrE>>AHe8*<06bgqOwXRuH93ISJEHo0SWwp7hqk%WVUU+MH4LeQmg{lB1}V$C)r2!dcH|BhfX UnQ8a+W&i*H07*qoM6N<$f(Di6nE(I) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00007.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6c7741af941ddc1203928ffbf1908c092f56b0 GIT binary patch literal 473 zcmV;~0Ve*5P)AFj7Z z?%H+0%T@bRxW0T|cH=N{0=B(hLx2{?9u=M#cLo@NP6$6MfWDP6O#+mDjgDDV8A`B} zlH2*{WM}dx?XxpuZwhzPTffQ zbs_Rl-)@(1n1G7#<{RcFIJ+bu55XK1n1<8CV%jW8J<8vp%v1zz<+@w9qD(mhxRvOH zTZWnwO8H5kb0MjaDsuvig)Etb?e-|>=4L3P7R}A41yy)Px14>TRiG^{p+f0G#Htmb zIL!`%50QU*%yqU3M8ngV)q`SEQS?6wdsZf%roI!U5v68jAP@)y0!I7;rz>7T&pkF~ P00000NkvXXu0mjfimc9Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00008.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..428ea2c11222fff001fff3052bdd0d051b1eab92 GIT binary patch literal 454 zcmV;%0XhDOP)>#~(vb8=B|^Ij zyi~PI89sP)tGP090G4%dLLg>5r?@iLnc#N@Faak-H?)$n$#!Q<696KEgJTx#40>8Y z&Ozn0SJr9jVRrzRyKle3hs}PPF94Lz=gt1KAX6Q)Z%o9%lgL7zoF{ofnp>A*5FSEa zN{CubtJ^J$tv6fr2H8>$>Ps9UP+r!NfE$F9*KjH=#J-^)r)xD#i=g0K%lQ^>{p9#S z82#Z|iWvTmLzFJ&sQlDu2B6LfSIfc36J}E%(jH?#_?r`%`y;BYH0|L<2a6E$oaW^2Ac+R-~`B#!LzmH zp)+lNuZ=HAl6?Z+)&^LzZ}AA{C&c47p1uQtJc6%ch0RmSwl)Mf#x1n6XgrZ8HE47S zG6uX%wLhh=^YOSW@N(PDW8nmVc$tz*Tv_XeFz+6q1l%F)tYpUSjAaraRB&*c1v^6s zR+&5?uZ;49GPT(mV9MFIUEyZY59=jB(z##smxTzmM}IJ$gPC|0n#ncDk+=*FUZ7DE z0_@wA8o`+_P`#Qw4s78gBc}oU3kwT}PR<3~jJll(o`&EQ`BMvM>f%989$)2t>RURp z@U5im!fme(Y!WlICH3suqY)Yt2@1F-q$ z-FXhqTe2?et&eFsA)yR&dCO;1H09&NL{*tGNa$XTs68QXR)}9LI6~j4uN3WRFukUCaOg002ov JPDHLkV1l@x+-3j( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00010.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0366cfb94c71e3892f83c2a34fe6e49004f5ef9d GIT binary patch literal 396 zcmV;70dxL|P)q-^u>cR#=v~eY(R^F#aLxQRK^yg`w?E0<5O7+=B^3sofF&+fPj zP$mk6=FFg)%m~BMXQ?q*!?_D!bmr(5btwq@Q)u-akcoK{xZu(OlKfuq;cK(@{AFKpX zXeHl97S~XD`Ljl$&1#X3E^A8Ry$f!z>% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00012.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..491d196e3570566f21ed19a0ac88476b68308632 GIT binary patch literal 451 zcmV;!0X+VRP)bca(&D*lHs1* zyA*bf1x|~3J2gnSYL05X0LT}Vojq);UCxBYT#*LPaf&xlK^O@6f zKJLnTHkqoA+riJYhp`bHb0%|%6bXNN?PnkcmXXjQ%-B2+_madM?BwE6$T{CmCe={gJdD)NE@=Tr?#tef z+RMgj>4|Mg24$k9#~d(*zN1cFHkOjcN>64rpEI=Ig#F{}sJ*rp)XRdL)LQ`8#%u!0 z4;sUZZmjT0`_fUdkJy3b4%l+063VO2f)8Ms1E4Co#b&RyPm0YBKx-{WA@&=0FVwm1 tIzl?>(9JK(L6A_57iOyA{!v#f6fG-yg z>b8!EuE8DWtaH_@0Ocu_nxL)#{jdS=6`*782KV$+3N^d-_MU;e{MZTLy%P70nudx3 z{w_^wB4^9hHtx=Pt^vx(?IF+fo^4aJ8rKzoo!kq0Vm$1cBPoHMoP(KMd>0DN_aL)ss5uUk zhI@y+R-?BS?s<WgQa;wBggu!VAOi7=VO6m%m58@O9umCxw&)UoV z0yM7x;%j9W5ovnXp^g*^Sk4^WFpn25o=rkblpM+&N%M1L&o z)V4rWYe?g?nycmwFrHGQDc{|uj{~6J0GsY^NT)X`6stBX?hC8@+62g6sdb~~MnfST z=Uc{OIx`=4upV@P>g4v&Gwq>m0_Yo%I{9tTQ^&)pb0lM6Kh9<4_lr}Bi3Q4~O=@Wx zW4e1f5+ZT$onJoxTx}~>CH&Xk&!iftE(!ghw9RvKPf6rpCnv8$&M5?WWe(I0fXY1p z0F=`nzg&3D!J#<{=kTMo!~i0fI-ckU8Qq@Qc%2>AT}P@p=sK@9FYpn2l{U* i2J+|fAP9mWxH7+};0)GvpK@vd00006083~Q8ZY9AP9osTX|@T{rwigum6(tprV;% z*EOMH7%faC7X3Q-QBeUnMoP)74=gk($kR}aayEe0Sw_zR&>E?1eV#<9A*#?sP{@Uy znslaL57zozNFRhcvTTpSkY=s&(CaL!D?nzt19YYjDa^%dy(llU(E+qSY~1K+C@7$< zsJUmR`sE^EYnu5()d9O^jRb3eaCSmVYPZF=l}xE@A@{Xp2*n`hakCk$P6 z-IKu39<$iZ>E@*26aRdA47oSbVfVUoKa*l$83}#DnCIN$`w>1klRHNt|9lQI$%by& zhigek;k5*PTM25-hV&;?qK=DWj-1{>pQg3vp5&7J+LL9n=h?0jSh6t}w8ChndRlgS zh;ZhB@(!dN3!?#|`4X_aS>kZ!0B~>;+j}$P&jFVAe-1gx0qlVfg_kl4^=Hm?m_0Sck7*5oHhfv>B7sw_NPup)XQV~E&#QP^&2G@0)-?L z)kn^j>+urSYZIxCG0pr+YZx0r^a=1r=7Js@59=od!~+o6<6M^Z-%TYNIw+Ofq?AK3 z=Cq|XQ$((PrKj(ot6d86ghTKB0Gm^4gBhFV;ocHkgDbhY7gEmuB$H}rhd4~jHA!Qf zq|)*v+c~G1*b*xgD$AlM%>gN6u8f1rJ6Mw{l-#jB(r>~8q2t|n*ac`ecYU+izQs69 zdEq|x*EKGc{kYcGM{9Zl*diM4KR%ikz|+|^UmXcFxgZMrP25R*$pLqH&?ij8Fbu;m bjLY}{(OCB#F%yu|00000NkvXXu0mjfJm|xp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00017.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d23d6cc8d354736ee78f25e348406400c9a2c9 GIT binary patch literal 465 zcmV;?0WSWDP)rx{r?}li*;c+6GTjKWW3M0sGaSb0)k-(j^jAazp@GI9ebwzcwLDfL^Px9 zxMuhqSb9Y+8*k8h zt9sD{XpE$b@B?uVEz42hYaaXgS9=BhbpYuVK=bu9V5D~`G_!WGdPK84&0Gh-S)qA@ z^B|#6l%nySKH0p0+SHfanT{ldKgzv>uKdg{TKaVbAxnX<*E?qMM*h zh6$Ih8uRr`M@$5sy_Nr7f3J2aR3`lC*iWE)N^2lvvpn1-aUWdC;#tTz4I@wU0Zi7l zSJyfOX!9VKZElL_F=&{=N{FLHl4#nXc0mnCcneBs-F!=?*N+9!yw!=vw79>7xnTqV-0{umGm2&hJ->Cia3$8rM8V- zSg%i{s$)CSme$ZWgy;_NgUkiJWISx26vCSmft@(Z7T0@U2c>eEaH)zhr$^c{MX2o_ zSFe9on+oL#FTM5y-UmWYsE|b8GjOIS|7&k%sZz&wcUw;h4FbqQ> YZ&p$Q=f*Da;{X5v07*qoM6N<$g7fOV$N&HU literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00019.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..70f75a6532844224c80e16f81831ebbb72e98caf GIT binary patch literal 340 zcmV-a0jvIrP)5@Jz=5JJeTEYS{#?Ay1!tQRL9bN8*! z0ufO<`p4)_k0~(T(GCiWmIv~RU4AIbYQ%e93?cwHg7ov76|$=cn`TcoL5py7 zO5Q@L$d9M7^dr?5qz$O8{#5l3QV~XYOv48Rx2A%75Xq#c5D4gX_`Z`Gp$3G@+vaW; z!6X3qBUYh#)nncr)kl&Bxs+!6LTAY)0N5GuJ798ap1uL_C(lf`p^*Gx2Kc`w^1I^| m_!=5d@6~^oSwaXQ1cVQp`NEEE6;28O0000|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00022.png b/tests_zemu/snapshots/s-op-set-trust-line-flags-unauthorized/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd27ac78dfc31fb2566d09a63885717df0de20f GIT binary patch literal 495 zcmVH9x$7U{wnkKraNV$$%f603lq#{SzD1VIoym6x%-V?Ue!H1w}_HsRR+ z9VPF;Z`pwy;uGf(pbREGt;inJ0|)@ebL^)^>ww?3=4im2HT{KYm)6Q|@+(HOkngeH zG2F7MuCI;HwX#w6NCwd4oisAQpP?<5*M~lBa|`$D2pwr!vEE$@P$gH$*5(M{3o)%W zE(OTZ-{?p!K%X=ez_Y!76ia3&PZw}v#HGT^flyvFLY*bf^&!eeD=511&}N} zA^R7BNOff2nW(`^;uKoRImt*31=lQ6-Q*-sQrg7-a?2L%PV*`_!l7~&fWRrJq<9n# zfV`gKt8m*bmfH{-;RT3dpg;F3e(qL*WczX>h)^D`Z=rBeLuF>@5T5qOa4A5Ug6pdh zDZ*;mG)1jS;tf)SQm`ZifGSua$giAu(Bw!^Ao@^>xa24EjJg2Ijm)_e6lspC__G{~ z!)?wH)DamTlFk9EL~B9<8^wIzP>4G~2%5YI4wBu0X1*QN1002ovPDHLkV1l;{=D+{| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..991b7b1251a2b385ec2578b1d195351f5c950318 GIT binary patch literal 490 zcmVL;u~*F1((b zp=ui0tsPhiZ9OB%4K6*spcbKoZPh#UarafnQwMDveVMZ~ZKw@))BhghH}*RPOko^kcai?ZTnJn#^V z@lA*WVB&F}kg5*`HjNzi>=QsYK0FO*6%^1@l9D2aF^84w10K7F;`72_`tzcJkN^GZ zFS8w>X}H4bp9E&9bM=EsAIv19&`iD;nN&kjn#Cq<+oQ6at#Q)4Q0mrXQM$*n`J$v8 z)kiHtwqi=J^hna2#p-1osmb`bUYRjkMAbJcw_9xbYZ-%L^g~EBRKop6qm(pGbqNQI zbO4PB{qUw0$0yHlxa4jQCV zekV+Q2lSr?Ht5qdtp1j$FVAMoCxA}1X(n`26p0i`IxYHsV2}cAM7WE8XXa&aBR*r9 gl_Modk|fC#-n(jKO58843IG5A07*qoM6N<$g75p>X8-^I literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00007.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..5119e8b2b73cec659281fa6ef37991952ba8c748 GIT binary patch literal 486 zcmV@P)=prb1@C?%qzo>SUZBN#g}ti_%<b&1^WZ>O=F>h0LK*DPr&*2#~JY$-sKQXyZRGh~12mtak8 zwiMuKiw#oyxzg>^ZvZxa{Wg#+D3GTlC3&4ah8nZHyodIm3pX==E?W5bzt4U;T>wqP z6|(;&FsY90ZzgJRlGue#@|k3qhBjw`Dbdj&PBhsWCk{%9Ej%Df8kFN{^N1;hz|K2$ zPtXk|DE86{nQ-BvB#(ESLmORNQ@AOqhtQmiq7sW*nbRL)%9vAS?AJ;rD(CbDpm}z`c0r1k-Iwjwar@rFvOi>Uqcu@lQjwP|8YLxqhq75- zI=0xf*$P0q!`>{ub7p%^QPLQ~iov*w(-t(g;jkIO6tIWRyr|@Bcn>ssA~DvfK@bE% c5Cj+F1?)O@hB}#Dl>h($07*qoM6N<$g05-bc>n+a literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3f789d4d64421fe12db076c795b982df8cd6cd GIT binary patch literal 419 zcmV;U0bKrxP)2t)1q{{G6g0~w5&&b= zi#4;6p7Dkmb0`6-M-a-g9`3?Asz(<3tAyJDa<6y$1YA-xq&p_fKI6H-VHb{#82bcN zzo$A(&z|%gnKS9&0H^|;j#E}_g+e&i#OCEyC>Li0)^nG^p%LECa zx<5Yp^MHgpqwh@SAd)Li7Etq9Rk|W!p>wH&OHG}XO6m>?Ij>a z-vK*w-UKeV>;O)DZ`jba*;v900L}=j{!&0qbokf(HxrqIBuSFQnJ+uCMYurH6=eVb N002ovPDHLkV1nwDyTSkf literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00016.png b/tests_zemu/snapshots/s-op-source-omit-op-source-equal-signer-not-equal-tx-source/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2a922e6208d175fde0b27517b8acd2b92900d4 GIT binary patch literal 473 zcmV;~0Ve*5P)1eov^yApY z5<4|3w4Q|uUg(j2|Ij5{N>jpA5$=xD(vdE#SV<<7w9!gGR=99d zpQLQb8H3RoXw9C~cHBy{s-eR~ zI2m7AgY!s1G$8<~?~hHOC}E45>;RNrx*yqV2G^|3*CowdX}0 P00000NkvXXu0mjfoL_Wd8Yhwj0SLqUFw!N^YdriUaYU?8B9Qj#P|lDqQoSNVQ@TX-IjH-%kz zzdnYVX=b+y$bq#R{{buvE|OkIi}Xr6#$rzVxNGbKo=TIiKdFIfqhk0pB)_`{P)ZT0 zO;63N*Cb_~8C1xGsg+unT&vJk0ca&vj-I;7x5AERTQ`dI;xb}nKq-9E^U`UudtSY8 z4tPA5c=-&wyDeM$<2^}|BuSDa7=POPUh3eP7ybYM002ovPDHLkV1k45$;jPcq(MS{-g)ytu(VQr{p<$07N9F zc6nKy^~h4{3^F4ueN3ZPT?$p9UJ2MFRgS(4Q>?;z-hC$SWqixjp2i$AfQT=8Q9h@q z;~KEMPKolxnP3LUl$3drdW~RrAt$AdGXr&bAiT_+!X4hw=4U(}oQj7#M4yHxz;bev z=+A%>>WqG8G6y3`6&lHZkVQ4rs0t7%8@QjF)<$&NMEgQk3{X$7>{9MEjb7LTqN0U8 ze$PSi|+DOc`qwL;dMRL z;o9iT4Vp$KmrVfm%E8GTsD>UHYqi+vmlw6rU4B$S8%nhorxtnEzdTeWNs=T1% WSWOc4`B-WI0000H-pPo2;IUo%#nqF{^c|&166_s7N`&aIz)1I0jejp3%#SzNclhO_pJpe( zvhWYlUj!l45&gkL4rUTnXeNjE;o4Nu`ZI7q}zOi;NY`Rk0p{p-*jWYFb7UjdmHDuaSvHGJ+-m^PEL~LrOkLs*1 zNs4hs6wCBv!f9=YOQun1lmlW&<-JeMWE)}Cv7b6G-o!#)+W{XlfGA(|taQ3(;2N;) zU99|Y9LxajlGIOPycWscDk(|hcqX7O4WkUxi{OU=Fh?rC;?NCc6Shair?((TTQ4?>}WMq@DT0V(UC*d13 zjTB$QssWcL;gxXUfZvl1w<)Dsd!%3+aU6mSDVf+o;BxGMrrGe=IM(5(d=sl}LjeE) e0000H5q$vY+tnl}KkG>V0000c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2142ebf52f252327eef7822e0449fd50fe27b6 GIT binary patch literal 475 zcmV<10VMv3P)FyZ4}g}SQz&cyIfNnUrJ z0Qd{-QpGGE92xuHC5~%pgzlm5rCoI8tal1i$&v%-4oHI*?{mvwHN14IkXhUUH*A`2ExK%m28rgA|$KR;_mXB@^9Y;&}fyf zDMC1DFf86}YpM(tn_8tb5#TR2FoC8R`>twuGaX?OH-6B1)eK@bGNzjEs@^8NbN@Z7!1x#S@4 z*QThbCVKM(Zdh5kB4qc)5$D3uU{lL=^Aq`abd+V#;N#pkYwy!s7=OJuz+XiFsz=D6 z>5m@Cnj?!|tO+k4yu67MBLGu-YhPFOpMheW)q?|A<^^O(((5JDWL{pqPtm#-Q>&U2 z%TSzz#k*n>=EBJiI+HNZ;prQKKpI!qnQ`Ud`GqE?*`6a0!q(pD?Z2qi=7EyjXb)X2 z0wyACMeNSW#5Okx$EDM~i$ zW<1krl|hz5+90?g11>cA8owgLanz%tZM z!s1;q33K73E(DXXk;4sX{DH>wD+k9Hnl{z;oOuz}_fBuG9WgJDmE?MR=xQrqBEnF_ z=nN+2U?$U|P>|>#voe$yVdAA$4jyehT3_x-Ogs+K%+{(>Q44uNUXLR7Yl^s?KFHCE zeavDsY68V};}2-3+d>4o=S8?Qoy+con^(+}N^syT$aUU2yTNm}TsRwn5mA)94K^28 zhP#b@oDuD}1Goe*0ph;gwH_3U^yQluk_kXXq@`LQ5v%pW&UY^xf|{S3iURjWaBj3^ zWOCUFNTcSUGbg?WG&z%Ua@MylTlL@Ft&B}hvMx+V zR9Gd{Jhu6KkoQ@MvEgV~Q<1Q}9{w%^A1_564#aqC((1#wYtN{f{;KqaBK?*qkphc$ zMPFBmqFD;zz16CD$VjKrx@rdKz-aYdTMxSl&NevhyooUYl@W_TcQ|X0Fxao%T_X*^ z6rj6joNZhOfQB&oJSs#*tSVMX*MQeoR8r-NuTiOf9B^jPNg&z*h$d%vpt!O2^4ko8F5)ACtIA(?s3VmwNUOzt;yP>`D!F^2y&#R;sAjwumMbO!)@bOhi<5er*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00018.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2a922e6208d175fde0b27517b8acd2b92900d4 GIT binary patch literal 473 zcmV;~0Ve*5P)1eov^yApY z5<4|3w4Q|uUg(j2|Ij5{N>jpA5$=xD(vdE#SV<<7w9!gGR=99d zpQLQb8H3RoXw9C~cHBy{s-eR~ zI2m7AgY!s1G$8<~?~hHOC}E45>;RNrx*yqV2G^|3*CowdX}0 P00000NkvXXu0mjfoL_Wd8Yhwj0SLqUFw!N^YdriUaYU?8B9Qj#P|lDqQoSNVQ@TX-IjH-%kz zzdnYVX=b+y$bq#R{{buvE|OkIi}Xr6#$rzVxNGbKo=TIiKdFIfqhk0pB)_`{P)ZT0 zO;63N*Cb_~8C1xGsg+unT&vJk0ca&vj-I;7x5AERTQ`dI;xb}nKq-9E^U`UudtSY8 z4tPA5c=-&wyDeM$<2^}|BuSDa7=POPUh3eP7ybYM002ovPDHLkV1k45$;jPcq(MS{-g)ytu(VQr{p<$07N9F zc6nKy^~h4{3^F4ueN3ZPT?$p9UJ2MFRgS(4Q>?;z-hC$SWqixjp2i$AfQT=8Q9h@q z;~KEMPKolxnP3LUl$3drdW~RrAt$AdGXr&bAiT_+!X4hw=4U(}oQj7#M4yHxz;bev z=+A%>>WqG8G6y3`6&lHZkVQ4rs0t7%8@QjF)<$&NMEgQk3{X$7>{9MEjb7LTqN0U8 ze$PSi|+DOc`qwL;dMRL z;o9iT4Vp$KmrVfm%E8GTsD>UHYqi+vmlw6rU4B$S8%nhorxtnEzdTeWNs=T1% WSWOc4`B-WI0000H-pPo2;IUo%#nqF{^c|&166_s7N`&aIz)1I0jejp3%#SzNclhO_pJpe( zvhWYlUj!l45&gkL4rUTnXeNjE;o4Nu`ZI7q}zOi;NY`Rk0p{p-*jWYFb7UjdmHDuaSvHGJ+-m^PEL~LrOkLs*1 zNs4hs6wCBv!f9=YOQun1lmlW&<-JeMWE)}Cv7b6G-o!#)+W{XlfGA(|taQ3(;2N;) zU99|Y9LxajlGIOPycWscDk(|hcqX7O4WkUxi{OU=Fh?rC;?NCc6Shair?((TTQ4?>}WMq@DT0V(UC*d13 zjTB$QssWcL;gxXUfZvl1w<)Dsd!%3+aU6mSDVf+o;BxGMrrGe=IM(5(d=sl}LjeE) e0000H5q$vY+tnl}KkG>V0000c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00013.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00017.png b/tests_zemu/snapshots/s-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00006.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2142ebf52f252327eef7822e0449fd50fe27b6 GIT binary patch literal 475 zcmV<10VMv3P)FyZ4}g}SQz&cyIfNnUrJ z0Qd{-QpGGE92xuHC5~%pgzlm5rCoI8tal1i$&v%-4oHI*?{mvwHN14IkXhUUH*A`2ExK%m28rgA|$KR;_mXB@^9Y;&}fyf zDMC1DFf86}YpM(tn_8tb5#TR2FoC8R`>twuGaX?OH-6B1)eK@bGNzjEs@^8NbN@Z7!1x#S@4 z*QThbCVKM(Zdh5kB4qc)5$D3uU{lL=^Aq`abd+V#;N#pkYwy!s7=OJuz+XiFsz=D6 z>5m@Cnj?!|tO+k4yu67MBLGu-YhPFOpMheW)q?|A<^^O(((5JDWL{pqPtm#-Q>&U2 z%TSzz#k*n>=EBJiI+HNZ;prQKKpI!qnQ`Ud`GqE?*`6a0!q(pD?Z2qi=7EyjXb)X2 z0wyACMeNSW#5Okx$EDM~i$ zW<1krl|hz5+90?g11>cA8owgLanz%tZM z!s1;q33K73E(DXXk;4sX{DH>wD+k9Hnl{z;oOuz}_fBuG9WgJDmE?MR=xQrqBEnF_ z=nN+2U?$U|P>|>#voe$yVdAA$4jyehT3_x-Ogs+K%+{(>Q44uNUXLR7Yl^s?KFHCE zeavDsY68V};}2-3+d>4o=S8?Qoy+con^(+}N^syT$aUU2yTNm}TsRwn5mA)94K^28 zhP#b@oDuD}1Goe*0ph;gwH_3U^yQluk_kXXq@`LQ5v%pW&UY^xf|{S3iURjWaBj3^ zWOCUFNTcSUGbg?WG&z%Ua@MylTlL@Ft&B}hvMx+V zR9Gd{Jhu6KkoQ@MvEgV~Q<1Q}9{w%^A1_564#aqC((1#wYtN{f{;KqaBK?*qkphc$ zMPFBmqFD;zz16CD$VjKrx@rdKz-aYdTMxSl&NevhyooUYl@W_TcQ|X0Fxao%T_X*^ z6rj6joNZhOfQB&oJSs#*tSVMX*MQeoR8r-NuTiOf9B^jPNg&z*h$d%vpt!O2^4ko8F5)ACtIA(?s3VmwNUOzt;yP>`D!F^2y&#R;sAjwumMbO!)@bOhi<5er*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00014.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00006.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd27ac78dfc31fb2566d09a63885717df0de20f GIT binary patch literal 495 zcmVH9x$7U{wnkKraNV$$%f603lq#{SzD1VIoym6x%-V?Ue!H1w}_HsRR+ z9VPF;Z`pwy;uGf(pbREGt;inJ0|)@ebL^)^>ww?3=4im2HT{KYm)6Q|@+(HOkngeH zG2F7MuCI;HwX#w6NCwd4oisAQpP?<5*M~lBa|`$D2pwr!vEE$@P$gH$*5(M{3o)%W zE(OTZ-{?p!K%X=ez_Y!76ia3&PZw}v#HGT^flyvFLY*bf^&!eeD=511&}N} zA^R7BNOff2nW(`^;uKoRImt*31=lQ6-Q*-sQrg7-a?2L%PV*`_!l7~&fWRrJq<9n# zfV`gKt8m*bmfH{-;RT3dpg;F3e(qL*WczX>h)^D`Z=rBeLuF>@5T5qOa4A5Ug6pdh zDZ*;mG)1jS;tf)SQm`ZifGSua$giAu(Bw!^Ao@^>xa24EjJg2Ijm)_e6lspC__G{~ z!)?wH)DamTlFk9EL~B9<8^wIzP>4G~2%5YI4wBu0X1*QN1002ovPDHLkV1l;{=D+{| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..991b7b1251a2b385ec2578b1d195351f5c950318 GIT binary patch literal 490 zcmVL;u~*F1((b zp=ui0tsPhiZ9OB%4K6*spcbKoZPh#UarafnQwMDveVMZ~ZKw@))BhghH}*RPOko^kcai?ZTnJn#^V z@lA*WVB&F}kg5*`HjNzi>=QsYK0FO*6%^1@l9D2aF^84w10K7F;`72_`tzcJkN^GZ zFS8w>X}H4bp9E&9bM=EsAIv19&`iD;nN&kjn#Cq<+oQ6at#Q)4Q0mrXQM$*n`J$v8 z)kiHtwqi=J^hna2#p-1osmb`bUYRjkMAbJcw_9xbYZ-%L^g~EBRKop6qm(pGbqNQI zbO4PB{qUw0$0yHlxa4jQCV zekV+Q2lSr?Ht5qdtp1j$FVAMoCxA}1X(n`26p0i`IxYHsV2}cAM7WE8XXa&aBR*r9 gl_Modk|fC#-n(jKO58843IG5A07*qoM6N<$g75p>X8-^I literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00007.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..5119e8b2b73cec659281fa6ef37991952ba8c748 GIT binary patch literal 486 zcmV@P)=prb1@C?%qzo>SUZBN#g}ti_%<b&1^WZ>O=F>h0LK*DPr&*2#~JY$-sKQXyZRGh~12mtak8 zwiMuKiw#oyxzg>^ZvZxa{Wg#+D3GTlC3&4ah8nZHyodIm3pX==E?W5bzt4U;T>wqP z6|(;&FsY90ZzgJRlGue#@|k3qhBjw`Dbdj&PBhsWCk{%9Ej%Df8kFN{^N1;hz|K2$ zPtXk|DE86{nQ-BvB#(ESLmORNQ@AOqhtQmiq7sW*nbRL)%9vAS?AJ;rD(CbDpm}z`c0r1k-Iwjwar@rFvOi>Uqcu@lQjwP|8YLxqhq75- zI=0xf*$P0q!`>{ub7p%^QPLQ~iov*w(-t(g;jkIO6tIWRyr|@Bcn>ssA~DvfK@bE% c5Cj+F1?)O@hB}#Dl>h($07*qoM6N<$g05-bc>n+a literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3f789d4d64421fe12db076c795b982df8cd6cd GIT binary patch literal 419 zcmV;U0bKrxP)2t)1q{{G6g0~w5&&b= zi#4;6p7Dkmb0`6-M-a-g9`3?Asz(<3tAyJDa<6y$1YA-xq&p_fKI6H-VHb{#82bcN zzo$A(&z|%gnKS9&0H^|;j#E}_g+e&i#OCEyC>Li0)^nG^p%LECa zx<5Yp^MHgpqwh@SAd)Li7Etq9Rk|W!p>wH&OHG}XO6m>?Ij>a z-vK*w-UKeV>;O)DZ`jba*;v900L}=j{!&0qbokf(HxrqIBuSFQnJ+uCMYurH6=eVb N002ovPDHLkV1nwDyTSkf literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..408bb85da026c1753917023949da9140d46b9549 GIT binary patch literal 503 zcmVO0c9DpCvHrhFSw^B4u1Ssgba|U51C)R{`y9tkL;(?5L7b7stk~6XRGbnIuWL|>wAm=D0rm#!BCPN!eMM8 z4M0HJaQkG2=>YI4Og?}&l2=d_R5Enn`sgYt?J%0kC_64wPJ4Z{Bg8>}rp1}yjlPcf zfAK>|`<&|}jg|rD0-})tT1<|?nVhoLrBkPwNiHEYdz6Eg`ck#x%&=|Xr zxnuy^5XAr0C>{=nO*5z^lf<6tQiQTpIjp}!cx|9Q_R0pk3<Hie{s02PueJ7(M%1qBBNs=T{@&<3qWRNA&hSLB5002ovPDHLkV1kVP>H`1( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb276e7974d514da497912733ea3f5350d3e6c1 GIT binary patch literal 487 zcmVJ;B}v#4N-$g;=bIF94|E4RV=Ue9m!XZ0xMkWOCD z%TP2;?8XkFgtu-1S$$EW9B2)ms@RG#rArKH>y`o+>5v%sK&>)LX~KR(%Xy6yNvQfPlp@*DNJi@i3qC5RBfNoi<($SWMThp?SGj`4MY7Vz(-bxi?rbp~xvG zg(Hnntd;VYc_OJ!b8?js+@u_iYcjQ!rDDOdXtC;1GY4Sw!yUAlGd$%5N#3p*w&e!! zm{4+uNi$J4wUIi3LiwOlgr?jthSYwG#GJmI&`C7ZXKv62;Oou;{dR(irqLwD+c?A0 zJD~qGh(VvHVexm&`sS=geFAW$Q$IY83KCEv?Xfua(?Tx5&Iot&?@WIgyqKS{tjdub d$8j8I32(vKR;UG~qkjMZ002ovPDHLkV1nFb;@kiL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00013.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc220f8fe13ee4e843bb6e4cac19d2410ba43cb GIT binary patch literal 488 zcmVP)6w<+knPqr94&PE<8`BoMf<88&MJX+?$Wk+dEzlO>8{U~LL3~=aCg-4+P}{Deepv`_uSMV z&9(#1h44l>Xfd@0XL8OdQ~=*jM%7TY3b>)-46gH#l^>j;cD8V8$Y~G~Q#HBdrodI4 zgpuH32$Lcot+bzlxHjUdEUM)iOG#A_Rwd;rs5L9B#G;nx>@VSc17%2mqq1<%q^_#O z2N)lj$-?^Qze40GxV+ygIk0j;J3y!|goidaTk>4CTgS)u5$ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00014.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..1202d5d7db12d4077f18777b40e72d44d052da80 GIT binary patch literal 429 zcmV;e0aE^nP)c*S6GWf2b8gH~QjDDa_(`HJ-dheJ3%3%E(Z7HTPb z%5r=bkV^nu!p+p7vH1!Og$5Z;;5fTMvYpV8sj}8KrE$=EyLk|q&s-2N>eYU|{g(W< zp^iGeb?U7Gwu1-~8W|Hg*vW=nC@2g>R>}d|D1F)$AnZ->Uc;kldpw$z2z!=z@2XG^ z)c>h{-9ki`<~4Rv#b=8#&&uSc+-oaB^?A_KvyOQJVAm7v4e&b<(1&j6I4d~w1Sst} z;(hGWBv&q%-Dg0?=Sg6KNd<89o$wj{(TEN#qk8SzdeskGr-2OrT7RC190WlS1jc*- XOp`hgLNBV$00000NkvXXu0mjfASA$v literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00015.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb9ce10fb2e46e5d23e4a64e16c6fa725eb71b2 GIT binary patch literal 389 zcmV;00eb$4P)*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00016.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-op-source-not-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00006.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..408bb85da026c1753917023949da9140d46b9549 GIT binary patch literal 503 zcmVO0c9DpCvHrhFSw^B4u1Ssgba|U51C)R{`y9tkL;(?5L7b7stk~6XRGbnIuWL|>wAm=D0rm#!BCPN!eMM8 z4M0HJaQkG2=>YI4Og?}&l2=d_R5Enn`sgYt?J%0kC_64wPJ4Z{Bg8>}rp1}yjlPcf zfAK>|`<&|}jg|rD0-})tT1<|?nVhoLrBkPwNiHEYdz6Eg`ck#x%&=|Xr zxnuy^5XAr0C>{=nO*5z^lf<6tQiQTpIjp}!cx|9Q_R0pk3<Hie{s02PueJ7(M%1qBBNs=T{@&<3qWRNA&hSLB5002ovPDHLkV1kVP>H`1( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb276e7974d514da497912733ea3f5350d3e6c1 GIT binary patch literal 487 zcmVJ;B}v#4N-$g;=bIF94|E4RV=Ue9m!XZ0xMkWOCD z%TP2;?8XkFgtu-1S$$EW9B2)ms@RG#rArKH>y`o+>5v%sK&>)LX~KR(%Xy6yNvQfPlp@*DNJi@i3qC5RBfNoi<($SWMThp?SGj`4MY7Vz(-bxi?rbp~xvG zg(Hnntd;VYc_OJ!b8?js+@u_iYcjQ!rDDOdXtC;1GY4Sw!yUAlGd$%5N#3p*w&e!! zm{4+uNi$J4wUIi3LiwOlgr?jthSYwG#GJmI&`C7ZXKv62;Oou;{dR(irqLwD+c?A0 zJD~qGh(VvHVexm&`sS=geFAW$Q$IY83KCEv?Xfua(?Tx5&Iot&?@WIgyqKS{tjdub d$8j8I32(vKR;UG~qkjMZ002ovPDHLkV1nFb;@kiL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc220f8fe13ee4e843bb6e4cac19d2410ba43cb GIT binary patch literal 488 zcmVP)6w<+knPqr94&PE<8`BoMf<88&MJX+?$Wk+dEzlO>8{U~LL3~=aCg-4+P}{Deepv`_uSMV z&9(#1h44l>Xfd@0XL8OdQ~=*jM%7TY3b>)-46gH#l^>j;cD8V8$Y~G~Q#HBdrodI4 zgpuH32$Lcot+bzlxHjUdEUM)iOG#A_Rwd;rs5L9B#G;nx>@VSc17%2mqq1<%q^_#O z2N)lj$-?^Qze40GxV+ygIk0j;J3y!|goidaTk>4CTgS)u5$ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..1202d5d7db12d4077f18777b40e72d44d052da80 GIT binary patch literal 429 zcmV;e0aE^nP)c*S6GWf2b8gH~QjDDa_(`HJ-dheJ3%3%E(Z7HTPb z%5r=bkV^nu!p+p7vH1!Og$5Z;;5fTMvYpV8sj}8KrE$=EyLk|q&s-2N>eYU|{g(W< zp^iGeb?U7Gwu1-~8W|Hg*vW=nC@2g>R>}d|D1F)$AnZ->Uc;kldpw$z2z!=z@2XG^ z)c>h{-9ki`<~4Rv#b=8#&&uSc+-oaB^?A_KvyOQJVAm7v4e&b<(1&j6I4d~w1Sst} z;(hGWBv&q%-Dg0?=Sg6KNd<89o$wj{(TEN#qk8SzdeskGr-2OrT7RC190WlS1jc*- XOp`hgLNBV$00000NkvXXu0mjfASA$v literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00012.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb9ce10fb2e46e5d23e4a64e16c6fa725eb71b2 GIT binary patch literal 389 zcmV;00eb$4P)*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00013.png b/tests_zemu/snapshots/s-op-source-omit-tx-source-equal-signer-not-equal-op-source/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00002.png b/tests_zemu/snapshots/s-op-with-empty-source/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00003.png b/tests_zemu/snapshots/s-op-with-empty-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00005.png b/tests_zemu/snapshots/s-op-with-empty-source/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00006.png b/tests_zemu/snapshots/s-op-with-empty-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..00d009fa585bd51f12b502896b11a3ce07d49bcc GIT binary patch literal 444 zcmV;t0Ymz*){ zWXJ<60}v8jr9Yjgi`Oh63)_DB8zhOELaYx2czxiLQ7jQk-OwviQNd#o_^p6=j)&QL zX$p>4x-7V4I^HE{+p~4%YHpByB6@fS;KV($Po67)SDSb>DA`FC4Q~?riuEV&|Fl-t3Au9zD(}BRaF78=o`ydTM25bV9oA|!idre5Z^q*?{%vt z+BA;yH?`zFJSYS8C1~cYy6**9*Y3qiX#kXsAm#UhA>67xYivKK&x^R|BBxx{y@xR` mfPVKYc3&Q39{>OVu6{h)c87#@yz;k$g;K3*cuM*LsV=iVu?)JvmWk4L`A-bze zur7zm<1`X2-LWn~)10j{<>>l4P@jlC)*EQX2_nk~DmX7qrCAN6C*% zM*o5Fc>jGK{A88U)hG83&=z`u`lBF74fQ(%A6SAaWQo)Fu-KVM`UGNwQ@j*g4*L9k za2n!D7wA^MQ@_iD0~pq=h$@7mnTwOuJ$$qxb_K7TMN7`B@e$g~xz~vUb~%(D!+RO3 z1m(gu*iYlyU$OF$0e_5-4B&xzJyheUkGr1j{$>CG00000#cUBQ=x;CWq{RRL002ov JPDHLkV1nB2p~wIL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00008.png b/tests_zemu/snapshots/s-op-with-empty-source/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00010.png b/tests_zemu/snapshots/s-op-with-empty-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00011.png b/tests_zemu/snapshots/s-op-with-empty-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00012.png b/tests_zemu/snapshots/s-op-with-empty-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb9ce10fb2e46e5d23e4a64e16c6fa725eb71b2 GIT binary patch literal 389 zcmV;00eb$4P)*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-empty-source/00013.png b/tests_zemu/snapshots/s-op-with-empty-source/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00002.png b/tests_zemu/snapshots/s-op-with-muxed-source/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00003.png b/tests_zemu/snapshots/s-op-with-muxed-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00005.png b/tests_zemu/snapshots/s-op-with-muxed-source/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00006.png b/tests_zemu/snapshots/s-op-with-muxed-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..00d009fa585bd51f12b502896b11a3ce07d49bcc GIT binary patch literal 444 zcmV;t0Ymz*){ zWXJ<60}v8jr9Yjgi`Oh63)_DB8zhOELaYx2czxiLQ7jQk-OwviQNd#o_^p6=j)&QL zX$p>4x-7V4I^HE{+p~4%YHpByB6@fS;KV($Po67)SDSb>DA`FC4Q~?riuEV&|Fl-t3Au9zD(}BRaF78=o`ydTM25bV9oA|!idre5Z^q*?{%vt z+BA;yH?`zFJSYS8C1~cYy6**9*Y3qiX#kXsAm#UhA>67xYivKK&x^R|BBxx{y@xR` mfPVKYc3&Q39{>OVu6{h)c87#@yz;k$g;K3*cuM*LsV=iVu?)JvmWk4L`A-bze zur7zm<1`X2-LWn~)10j{<>>l4P@jlC)*EQX2_nk~DmX7qrCAN6C*% zM*o5Fc>jGK{A88U)hG83&=z`u`lBF74fQ(%A6SAaWQo)Fu-KVM`UGNwQ@j*g4*L9k za2n!D7wA^MQ@_iD0~pq=h$@7mnTwOuJ$$qxb_K7TMN7`B@e$g~xz~vUb~%(D!+RO3 z1m(gu*iYlyU$OF$0e_5-4B&xzJyheUkGr1j{$>CG00000#cUBQ=x;CWq{RRL002ov JPDHLkV1nB2p~wIL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00008.png b/tests_zemu/snapshots/s-op-with-muxed-source/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00010.png b/tests_zemu/snapshots/s-op-with-muxed-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00011.png b/tests_zemu/snapshots/s-op-with-muxed-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00012.png b/tests_zemu/snapshots/s-op-with-muxed-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2142ebf52f252327eef7822e0449fd50fe27b6 GIT binary patch literal 475 zcmV<10VMv3P)FyZ4}g}SQz&cyIfNnUrJ z0Qd{-QpGGE92xuHC5~%pgzlm5rCoI8tal1i$&v%-4oHI*?{mvwHN14IkXhUUH*A`2ExK%m28rgA|$KR;_mXB@^9Y;&}fyf zDMC1DFf86}YpM(tn_8tb5#TR2FoC8R`>twuGaX?OH-6B1)eK@bGNzjEs@^8NbN@Z7!1x#S@4 z*QThbCVKM(Zdh5kB4qc)5$D3uU{lL=^Aq`abd+V#;N#pkYwy!s7=OJuz+XiFsz=D6 z>5m@Cnj?!|tO+k4yu67MBLGu-YhPFOpMheW)q?|A<^^O(((5JDWL{pqPtm#-Q>&U2 z%TSzz#k*n>=EBJiI+HNZ;prQKKpI!qnQ`Ud`GqE?*`6a0!q(pD?Z2qi=7EyjXb)X2 z0wyACMeNSW#5Okx$EDM~i$ zW<1krl|hz5+90?g11>cA8owgLanz%tZM z!s1;q33K73E(DXXk;4sX{DH>wD+k9Hnl{z;oOuz}_fBuG9WgJDmE?MR=xQrqBEnF_ z=nN+2U?$U|P>|>#voe$yVdAA$4jyehT3_x-Ogs+K%+{(>Q44uNUXLR7Yl^s?KFHCE zeavDsY68V};}2-3+d>4o=S8?Qoy+con^(+}N^syT$aUU2yTNm}TsRwn5mA)94K^28 zhP#b@oDuD}1Goe*0ph;gwH_3U^yQluk_kXXq@`LQ5v%pW&UY^xf|{S3iURjWaBj3^ zWOCUFNTcSUGbg?WG&z%Ua@MylTlL@Ft&B}hvMx+V zR9Gd{Jhu6KkoQ@MvEgV~Q<1Q}9{w%^A1_564#aqC((1#wYtN{f{;KqaBK?*qkphc$ zMPFBmqFD;zz16CD$VjKrx@rdKz-aYdTMxSl&NevhyooUYl@W_TcQ|X0Fxao%T_X*^ z6rj6joNZhOfQB&oJSs#*tSVMX*MQeoR8r-NuTiOf9B^jPNg&z*h$d%vpt!O2^4ko8F5)ACtIA(?s3VmwNUOzt;yP>`D!F^2y&#R;sAjwumMbO!)@bOhi<5er*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-with-muxed-source/00018.png b/tests_zemu/snapshots/s-op-with-muxed-source/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000gD)Gz-cqXc?`^VeYPr0g0la_a;eNEF`I(>YsoU z=?7Vm1s(jLWacpcCv@|GQXvW|+~cs~EU2Vz*@Ck`Xe$UbDJYKLQ-aIUt z9Cao9k|jRWds2D)^$9Mx2gpuCdE*Qr$~p}Vdt#Rgh3|yJuYr0C($i5X*~&a#V;U}i zTYCTzx$S!18^3fZHUOqqlH3^iog%evB`c?a2*LmW0001^ass{&$rjll0P!I&g+ifFNW^)>9vS+b-p@lYZcD}n z!|;=89RT1w;PuYlMj(<~;oMMvXFB_b^WdYTh!Bw9)#o(gbhCASn&zonJIB7%|-qQ8hCt2vT*WXjiDo_q*G_rCcglvG4)j!008LTQQk{Qy0cBNRRJu6Uzz% zwR|pJXWAnw+g*T+BV+v7XaQUocCv3`F!sm}IU-E3vesRI<$qHQbpTDZQ zyk)F03wTeUG>w@7P+QdAi2=B|N-qNXJ+&P7=AYe$9rypg>T~1{P`^7GnVay<)MQLa z$RPgwL=$}%6w#PvB~S1UPbHJs_agj{pn=PWIV+t!DaKUusnN@J>a5uK2OwW=PV#eS zv7b4%PxG#cJHs;oY#PZm>Ty&(qw)dxCCuWHj{&_r`P zyrlQ{L~(U^e=-q+mBcBul3ynuO1Ju=NktN)QD$s1Q)C&Te3Y_9z|_euRVhnqZOL+^ zlxB=XtTJ3wq*N3{K2&M)1Ch|$g^ULWkZ=N`1=RJ$tOXe_rVXkngDLGKXV#UYo3~__ zmNy+L?5Yv?ga)Vu0DrRErnoMpWTY&9fDEya-D<||mC;^~HtIRX_?;=`4(S45cT8zI zUDE`Ppfja>X)a#8T*$=AD0T;=7*u^{B!9>>WU!e!wX14OHRJ5QEw1+e%OD7XAP9m< ZyZ|EKc5m2dpmqQN002ovPDHLkV1f$2*);$F literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-public-key-approve/00003.png b/tests_zemu/snapshots/s-public-key-approve/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..567a56f098b39f3e2d5a9786f0d2f58a1e4f2160 GIT binary patch literal 478 zcmV<40U`d0P)!+=fEN?qlfcn6eW1TEy( zj4r*P*CsiIg)1Y{0caS-G;BCBV^m$izX{j=p!GdgULB@B>Hq)$!y}4569;y72uC?U z6ZnzVKNH5(Y5m2d4|bAKXeaMRzL?L_$sHZ${Dr1KdIm>oC^eB}st;|84yH(^Q-7%= zX_!=J8zm{&l*Kf2ES?8Xb43$LpqVW4OY@gh1m}VVnSKd6Ao+u^Zo-2(Ub@Cv$}P8h zwJPC)MjqOA9j54-L#>oZ*pB4@U3(M%rJtrEnzA}dMD7!a#7eECy~NGgA!z!4BT5=- zBsDa!0?u{-tn$G=+<{907*qoM6N<$g3(6MH2?qr literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-public-key-approve/00004.png b/tests_zemu/snapshots/s-public-key-approve/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3379bdd841552db071138fd4d796b78a2c7149e4 GIT binary patch literal 421 zcmV;W0b2fvP)pXp98X1Xc6j zCjS>$51v*9MY{~MF(7-~{+bu;y8z5qzx z?x+5=WTb}rok0vnf+{qUv&c*4cArNs?kF5k`rsIz%tY-}eg=&)spK~8-J8)b-T}ht zTlOM7c+hw#*=tUuyWo5rttWk$Pwpe=tz`l=p*<{7wlHXiDnIc7izqaO5@TW>hg+Jybyn0ssI202s{+eW5B*i#6*$ P00000NkvXXu0mjfCRx3Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-public-key-approve/00005.png b/tests_zemu/snapshots/s-public-key-approve/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-public-key-approve/00006.png b/tests_zemu/snapshots/s-public-key-approve/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000gD)Gz-cqXc?`^VeYPr0g0la_a;eNEF`I(>YsoU z=?7Vm1s(jLWacpcCv@|GQXvW|+~cs~EU2Vz*@Ck`Xe$UbDJYKLQ-aIUt z9Cao9k|jRWds2D)^$9Mx2gpuCdE*Qr$~p}Vdt#Rgh3|yJuYr0C($i5X*~&a#V;U}i zTYCTzx$S!18^3fZHUOqqlH3^iog%evB`c?a2*LmW0001^ass{&$rjll0P!I&g+ifFNW^)>9vS+b-p@lYZcD}n z!|;=89RT1w;PuYlMj(<~;oMMvXFB_b^WdYTh!Bw9)#o(gbhCASn&zonJIB7%|-qQ8hCt2vT*WXjiDo_q*G_rCcglvG4)j!008LTQQk{Qy0cBNRRJu6Uzz% zwR|pJXWAnw+g*T+BV+v7XaQUocCv3`F!sm}IU-E3vesRI<$qHQbpTDZQ zyk)F03wTeUG>w@7P+QdAi2=B|N-qNXJ+&P7=AYe$9rypg>T~1{P`^7GnVay<)MQLa z$RPgwL=$}%6w#PvB~S1UPbHJs_agj{pn=PWIV+t!DaKUusnN@J>a5uK2OwW=PV#eS zv7b4%PxG#cJHs;oY#PZm>Ty&(qw)dxCCuWHj{&_r`P zyrlQ{L~(U^e=-q+mBcBul3ynuO1Ju=NktN)QD$s1Q)C&Te3Y_9z|_euRVhnqZOL+^ zlxB=XtTJ3wq*N3{K2&M)1Ch|$g^ULWkZ=N`1=RJ$tOXe_rVXkngDLGKXV#UYo3~__ zmNy+L?5Yv?ga)Vu0DrRErnoMpWTY&9fDEya-D<||mC;^~HtIRX_?;=`4(S45cT8zI zUDE`Ppfja>X)a#8T*$=AD0T;=7*u^{B!9>>WU!e!wX14OHRJ5QEw1+e%OD7XAP9m< ZyZ|EKc5m2dpmqQN002ovPDHLkV1f$2*);$F literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-public-key-reject/00003.png b/tests_zemu/snapshots/s-public-key-reject/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..567a56f098b39f3e2d5a9786f0d2f58a1e4f2160 GIT binary patch literal 478 zcmV<40U`d0P)!+=fEN?qlfcn6eW1TEy( zj4r*P*CsiIg)1Y{0caS-G;BCBV^m$izX{j=p!GdgULB@B>Hq)$!y}4569;y72uC?U z6ZnzVKNH5(Y5m2d4|bAKXeaMRzL?L_$sHZ${Dr1KdIm>oC^eB}st;|84yH(^Q-7%= zX_!=J8zm{&l*Kf2ES?8Xb43$LpqVW4OY@gh1m}VVnSKd6Ao+u^Zo-2(Ub@Cv$}P8h zwJPC)MjqOA9j54-L#>oZ*pB4@U3(M%rJtrEnzA}dMD7!a#7eECy~NGgA!z!4BT5=- zBsDa!0?u{-tn$G=+<{907*qoM6N<$g3(6MH2?qr literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-public-key-reject/00004.png b/tests_zemu/snapshots/s-public-key-reject/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3379bdd841552db071138fd4d796b78a2c7149e4 GIT binary patch literal 421 zcmV;W0b2fvP)pXp98X1Xc6j zCjS>$51v*9MY{~MF(7-~{+bu;y8z5qzx z?x+5=WTb}rok0vnf+{qUv&c*4cArNs?kF5k`rsIz%tY-}eg=&)spK~8-J8)b-T}ht zTlOM7c+hw#*=tUuyWo5rttWk$Pwpe=tz`l=p*<{7wlHXiDnIc7izqaO5@TW>hg+Jybyn0ssI202s{+eW5B*i#6*$ P00000NkvXXu0mjfCRx3Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-public-key-reject/00005.png b/tests_zemu/snapshots/s-public-key-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..66c411c2ebc833c701039f213ad4ff68cc881146 GIT binary patch literal 341 zcmV-b0jmCqP)_wxG+Yry2qARt#sf<#$}=)VJ~ zBlvESR-Jq3=$jydfC?r!$iuAw9oGJ!U-M%YMJ+y&Ch%TCM^JUq5BGkf8O_{y`#mQ} nq4{V^xv44i3V1v$0C_ea3_go|-rj`700000NkvXXu0mjfd&QW1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-public-key-reject/00006.png b/tests_zemu/snapshots/s-public-key-reject/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d GIT binary patch literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00002.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00003.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OP)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00005.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00008.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00009.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00010.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00012.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-one-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00002.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00003.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OP)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00005.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00008.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00009.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00010.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00012.png b/tests_zemu/snapshots/s-tx-cond-extra-signers-with-two-signers/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE@P)M~Y(pV?p zO1(NJ-ze*S%-w~7I`6F^Ey#cs6r1~YigcU^%zFaVW7e^KOGT!md4mGeOpda{D%rBV z{vIZ~-&OB4_~)aa)=vOx6Qh3{%23DX-%QNGPGT3@$-p^W7bAfL+r$ObmO8N9t;mu! z)X`cdF3`5>6GJYj)=ZsN%K3^AP?SFz4DxnJT_B`Qt+@%yixPP;sqa=T#cmC!%T$6#griP+wO zPGYf}|FccnaUFp_QVq>`)gb+9ne)I2V2%;>@WhJhvxJ!=3p|`4Ljqy&-RYVNf*=Tj cAPC<40Jasd@P)#By8r+H07*qoM6N<$g5fCSC;$Ke literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00002.png b/tests_zemu/snapshots/s-tx-cond-is-none/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c264fa1b13309cfbb7cb5731d462d0abf054fd69 GIT binary patch literal 507 zcmV{HC&-2fF!)_dp=f!ott~)4Gv39AU>7B8_0XL`0wWWAG`dKRPHBqnYZ~aTxi^_W~ zN;Eo!JJ3F`^q0NBXW0?2373FGz^hzRB4cF)#A<7I>&}vZ{juXV99l(~^KzZqwHXMf&6s_UxxPpLPvb&~#873d! zyxkD^@zpQu9iYkN>Td(H)Vcbbkv{k&G7EhY?~8me)AYTzjv0as-npo-Or zlAc;8AW<4WPD||$eX5l~nkOI=T-DgCh~8o{WhA3)PrJdglQ7sRlv=0ss5$V89oYCp zOtUdzF&}aOn+-~F2O8Bw)7pS4CC>~)PoC^i8Dnlaz@#4dkS--NM;>#r=#BTzh>j%H z0qo+MBxX8=?Dr{ xGfKszTBlTIsb(Ors>@P)>*Xw0?fn4PNkhWRE~pT0)8Y@A^-pY0Epr|=scXB+F0xSs}Wh~ zo`Kqv=lPQzup6)Ur*R&CZ3g33ZCn{>dS)yrz|HC6+ERSI`CVzB4RN)v-|JH5OWJ26 z_GmDNJJ3FG?^12V@2Wl75GjM+rD32tmzN$^u7Fx^?QGpM>F(9T8l@O5z`gV&r&^YB zA1eC>L$x2!O?zr9lL2~ujDF_F)>&mZ zHZ};!JTWo_Rmq8nC#n;}*!DBXgFWc!GKI5N1kb>JK^fF9bGR+N63^SJau9lLw}o9F-~n00000 c06;`Uzj!af21V?IzyJUM07*qoM6N<$g32-2zW@LL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00004.png b/tests_zemu/snapshots/s-tx-cond-is-none/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..d9061f4add5e29efa96abe8099afbc5aad5222d7 GIT binary patch literal 441 zcmV;q0Y?6bP)yULcm;3u;%xdZKsJXt}9Rs+X`LjZfCPi5WSLQL#LG}!}NWar}YL+8cF;olL z^_WJm^NZMcQck$lRDa+{)t*roLk4!!Fhgv5EZYITqm^fC-03Ee_2)EG3y?RRjK()U zS;yR6sK}iyogy{>-aB9gRdJ8;m}$92YyeyrK)uX5+PD5vZpY~Y)m>&V%V*D(jTLq~ zE_3hRH7$?edkI(o%izzmABmD`WGc%TmVBpY^ka(*$4O7&HmiTegrOnlYEF0ETGQv0VT+ORarG#IkjKiq)zqS j;iw!-2qAL{z_M00000NkvXXu0mjfsc^@c literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00005.png b/tests_zemu/snapshots/s-tx-cond-is-none/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00006.png b/tests_zemu/snapshots/s-tx-cond-is-none/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OP)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00008.png b/tests_zemu/snapshots/s-tx-cond-is-none/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00011.png b/tests_zemu/snapshots/s-tx-cond-is-none/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00012.png b/tests_zemu/snapshots/s-tx-cond-is-none/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00013.png b/tests_zemu/snapshots/s-tx-cond-is-none/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-is-none/00015.png b/tests_zemu/snapshots/s-tx-cond-is-none/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00002.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00003.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OP)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00005.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00008.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00009.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00010.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00012.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-are-zero/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00002.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00003.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OB1o}<+Vua@Lt_;YDk`P~0001(_a- z>D}3W1l#_9iEuzCS+}crI3U|au~boV)GQiuIjx=YciJx%t7zC{)6VlP^!ZZ zwM*z}_I3zHfL#UyAIxM<6aoix)?pnb-I$WFc+~O}x*TIkC@cQrwLFg{?^Jy9O+yV~ z;7M4-EB&(m8N0&N`vAN3c^>BU;2M^_@#PK|GKpo%ELSu%Q@^ke=7pdfwR!k{67yz2 t5lP)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00006.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00009.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00010.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00011.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00013.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-max-is-zero/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00002.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00003.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O30fI?4vSf*;$qOTi@tbDDj z4u9;WxJVGXnKOhnb}DB8`Rv4=PJL6pm1cTilxgmApH>lZgl!+;a;GaT@_qD^$vpmq z!_LD4;1mVyq%l3s-Vs3uNHZD4U?mGyArSZ%*$cPlZ`g@ba_Z63O-d?>pPou;Oj#mt zhE%GjB;_Jn>nTiU)=4P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00006.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00009.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00010.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00011.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00013.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds-min-is-zero/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00002.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00003.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OB1o}<+Vua@Lt_;YDk`P~0001(_a- z>D}3W1l#_9iEuzCS+}crI3U|au~boV)GQiuIjx=YciJx%t7zC{)6VlP^!ZZ zwM*z}_I3zHfL#UyAIxM<6aoix)?pnb-I$WFc+~O}x*TIkC@cQrwLFg{?^Jy9O+yV~ z;7M4-EB&(m8N0&N`vAN3c^>BU;2M^_@#PK|GKpo%ELSu%Q@^ke=7pdfwR!k{67yz2 t5l30fI?4vSf*;$qOTi@tbDDj z4u9;WxJVGXnKOhnb}DB8`Rv4=PJL6pm1cTilxgmApH>lZgl!+;a;GaT@_qD^$vpmq z!_LD4;1mVyq%l3s-Vs3uNHZD4U?mGyArSZ%*$cPlZ`g@ba_Z63O-d?>pPou;Oj#mt zhE%GjB;_Jn>nTiU)=4P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00007.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00010.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00011.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00012.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00014.png b/tests_zemu/snapshots/s-tx-cond-ledger-bounds/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00002.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00003.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O4%P)vh=eytGX5NIT3^mLDFJ}BnU5CqqP28v`H ztCB#wmW50SRt7wv5NMl8d(RSGEgOXB%JyvV`JDuR!$WBV7AFW6Ni z`dV!D?c+Mo100000NkvXX Hu0mjf!~U^j literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00005.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00006.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00009.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00010.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00011.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00013.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-age/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00002.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00003.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OY+phEIls#G%ds008(`ywq^toO8~v^vJ&byy8VZ zD+}yN1=U2YeN7~#UohciBO~|8)cY$i31JC*WR&?ElvWpiGuDr@{thS;mX_RiVI`F|lF%VH#3P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00006.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00009.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00010.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00011.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00013.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence-ledger-gap/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00002.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00003.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O_yG1uV(3J7;;SCT92$b)nrVDs zSkb!8t1ImqjX7Ml@oHP}T*K7e7g1i`m@F9q98GSbD zcNUF|=Z~10ECkozkQZFNhWJYm6~>pY;TEf4MBYO8lSm)T0RTS8kN-n5}y`?H;8L6SyU{&i|qp!hH&4kZn z{JjbP)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00006.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00009.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00010.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00011.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00013.png b/tests_zemu/snapshots/s-tx-cond-min-account-sequence/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00002.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00003.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OP)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00005.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00008.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00009.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00010.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00012.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-are-zero/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE@P)M~Y(pV?p zO1(NJ-ze*S%-w~7I`6F^Ey#cs6r1~YigcU^%zFaVW7e^KOGT!md4mGeOpda{D%rBV z{vIZ~-&OB4_~)aa)=vOx6Qh3{%23DX-%QNGPGT3@$-p^W7bAfL+r$ObmO8N9t;mu! z)X`cdF3`5>6GJYj)=ZsN%K3^AP?SFz4DxnJT_B`Qt+@%yixPP;sqa=T#cmC!%T$6#griP+wO zPGYf}|FccnaUFp_QVq>`)gb+9ne)I2V2%;>@WhJhvxJ!=3p|`4Ljqy&-RYVNf*=Tj cAPC<40Jasd@P)#By8r+H07*qoM6N<$g5fCSC;$Ke literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00002.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c264fa1b13309cfbb7cb5731d462d0abf054fd69 GIT binary patch literal 507 zcmV{HC&-2fF!)_dp=f!ott~)4Gv39AU>7B8_0XL`0wWWAG`dKRPHBqnYZ~aTxi^_W~ zN;Eo!JJ3F`^q0NBXW0?2373FGz^hzRB4cF)#A<7I>&}vZ{juXV99l(~^KzZqwHXMf&6s_UxxPpLPvb&~#873d! zyxkD^@zpQu9iYkN>Td(H)Vcbbkv{k&G7EhY?~8me)AYTzjv0as-npo-Or zlAc;8AW<4WPD||$eX5l~nkOI=T-DgCh~8o{WhA3)PrJdglQ7sRlv=0ss5$V89oYCp zOtUdzF&}aOn+-~F2O8Bw)7pS4CC>~)PoC^i8Dnlaz@#4dkS--NM;>#r=#BTzh>j%H z0qo+MBxX8=?Dr{ xGfKszTBlTIsb(Ors>@P)>*Xw0?fn4PNkhWRE~pT0)8Y@A^-pY0Epr|=scXB+F0xSs}Wh~ zo`Kqv=lPQzup6)Ur*R&CZ3g33ZCn{>dS)yrz|HC6+ERSI`CVzB4RN)v-|JH5OWJ26 z_GmDNJJ3FG?^12V@2Wl75GjM+rD32tmzN$^u7Fx^?QGpM>F(9T8l@O5z`gV&r&^YB zA1eC>L$x2!O?zr9lL2~ujDF_F)>&mZ zHZ};!JTWo_Rmq8nC#n;}*!DBXgFWc!GKI5N1kb>JK^fF9bGR+N63^SJau9lLw}o9F-~n00000 c06;`Uzj!af21V?IzyJUM07*qoM6N<$g32-2zW@LL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00004.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..d9061f4add5e29efa96abe8099afbc5aad5222d7 GIT binary patch literal 441 zcmV;q0Y?6bP)yULcm;3u;%xdZKsJXt}9Rs+X`LjZfCPi5WSLQL#LG}!}NWar}YL+8cF;olL z^_WJm^NZMcQck$lRDa+{)t*roLk4!!Fhgv5EZYITqm^fC-03Ee_2)EG3y?RRjK()U zS;yR6sK}iyogy{>-aB9gRdJ8;m}$92YyeyrK)uX5+PD5vZpY~Y)m>&V%V*D(jTLq~ zE_3hRH7$?edkI(o%izzmABmD`WGc%TmVBpY^ka(*$4O7&HmiTegrOnlYEF0ETGQv0VT+ORarG#IkjKiq)zqS j;iw!-2qAL{z_M00000NkvXXu0mjfsc^@c literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00005.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00006.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OB1o}<+Vua@Lt_;YDk`P~0001(_a- z>D}3W1l#_9iEuzCS+}crI3U|au~boV)GQiuIjx=YciJx%t7zC{)6VlP^!ZZ zwM*z}_I3zHfL#UyAIxM<6aoix)?pnb-I$WFc+~O}x*TIkC@cQrwLFg{?^Jy9O+yV~ z;7M4-EB&(m8N0&N`vAN3c^>BU;2M^_@#PK|GKpo%ELSu%Q@^ke=7pdfwR!k{67yz2 t5l30fI?4vSf*;$qOTi@tbDDj z4u9;WxJVGXnKOhnb}DB8`Rv4=PJL6pm1cTilxgmApH>lZgl!+;a;GaT@_qD^$vpmq z!_LD4;1mVyq%l3s-Vs3uNHZD4U?mGyArSZ%*$cPlZ`g@ba_Z63O-d?>pPou;Oj#mt zhE%GjB;_Jn>nTiU)=4P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00010.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00013.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00014.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00015.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00017.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-is-none/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00002.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00003.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O6P)NklANE{o>t5KhzNJ{Sq=XxOL;ViUs-&G#~56FR7Y% z*-41V5bPOHk2rA*_Rj!YzxhPyvT1h{F$4C&SiX1qr)N=P%65~hF{}hFRUJ40+V;Fv zLgh9)0F!llf6l;|=@m2s#46E@xGbbKOwFi5Wf7)oTF$5rd%B(G-ML=m;|IqD%P2D8G19qgPo~B^2AOLUSXNs=VVukr#olYOmINtqG= O0000P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00006.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00009.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00010.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00011.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00013.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-max-is-zero/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00002.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00003.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|Ou4d=?6Vf#?1QUjnUGb^@Y-5O(_V1AP4~7uePPKvkt6I`KQOA zI~b87EbVMa)aVkAl`0gAn`P8R7NWTT(not1sysWc5h)|s_IfB=Is(m?Z2R~9@k%u% z3w0R8OQ#b(RcTtWiKdqzi<+X@H0r@XADecW-W_mcVt(ztJ+GYA9FD?ddg=xBKfo54XIQy$$raET-WMU0g5>;p=zmvQ%!^&BTJ%P>HbnJ<_@v)BgCGckAPDZn2RD6YF*vhOGynhq07*qo IM6N<$fP)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00006.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00009.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00010.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00011.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00013.png b/tests_zemu/snapshots/s-tx-cond-time-bounds-min-is-zero/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds/00002.png b/tests_zemu/snapshots/s-tx-cond-time-bounds/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds/00003.png b/tests_zemu/snapshots/s-tx-cond-time-bounds/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OE%moT}gP;EsensN); zFsPh9tY0b|8HOiplr3tFwMl5$@0fz>0%*l{S3`J?n~#-laNUe#* zL0pVX!QKI-$B8~Tz5{Ig)gGZ@Ro;xp4oJ?Je-q=|Gh1Vp?Iu@aS_s;TIM4ywcHJnU z@;G|{Cj0SyR$$Kda@ql6l&Fq4AEYJBnh}NaAxy1lYewy`-tA>h%H<*N?;IBlqZp2V zaO4u~X7O^Iy8u?JJIwwf2vZ%i|7T(i&LpDHnfy-jE>s&=EAgI3voWGh^>(OP(3&uP zy9*a(O%odS=6G{O6EB(swUC8q3brMOtSO^;TqKaJ{U$8p{_bPUm*MzM%*+K10_|2P z^URc?6|F`mFvxW6fR;YQ%*4E`4wN$T$}h3}M;G`4xXixzfoVj45pX91Ly(v6qYk)8 zLUaQ78Bhk$mV2HNqeTl4hJ~`Kl$7~V`yxK$duI>?K@bGN&G-O`Zdhl8^hIv~0000< KMNUMnLSTX~&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds/00006.png b/tests_zemu/snapshots/s-tx-cond-time-bounds/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds/00007.png b/tests_zemu/snapshots/s-tx-cond-time-bounds/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds/00010.png b/tests_zemu/snapshots/s-tx-cond-time-bounds/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds/00011.png b/tests_zemu/snapshots/s-tx-cond-time-bounds/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds/00012.png b/tests_zemu/snapshots/s-tx-cond-time-bounds/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-time-bounds/00014.png b/tests_zemu/snapshots/s-tx-cond-time-bounds/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00002.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00003.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|OE%moT}gP;EsensN); zFsPh9tY0b|8HOiplr3tFwMl5$@0fz>0%*l{S3`J?n~#-laNUe#* zL0pVX!QKI-$B8~Tz5{Ig)gGZ@Ro;xp4oJ?Je-q=|Gh1Vp?Iu@aS_s;TIM4ywcHJnU z@;G|{Cj0SyR$$Kda@ql6l&Fq4AEYJBnh}NaAxy1lYewy`-tA>h%H<*N?;IBlqZp2V zaO4u~X7O^Iy8u?JJIwwf2vZ%i|7T(i&LpDHnfy-jE>s&=EAgI3voWGh^>(OP(3&uP zy9*a(O%odS=6G{O6EB(swUC8q3brMOtSO^;TqKaJ{U$8p{_bPUm*MzM%*+K10_|2P z^URc?6|F`mFvxW6fR;YQ%*4E`4wN$T$}h3}M;G`4xXixzfoVj45pX91Ly(v6qYk)8 zLUaQ78Bhk$mV2HNqeTl4hJ~`Kl$7~V`yxK$duI>?K@bGN&G-O`Zdhl8^hIv~0000< KMNUMnLSTX~&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00006.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..d70da7ed1077d7b7e89b0bd6737805079dd1aa95 GIT binary patch literal 399 zcmV;A0dW3_P)B1o}<+Vua@Lt_;YDk`P~0001(_a- z>D}3W1l#_9iEuzCS+}crI3U|au~boV)GQiuIjx=YciJx%t7zC{)6VlP^!ZZ zwM*z}_I3zHfL#UyAIxM<6aoix)?pnb-I$WFc+~O}x*TIkC@cQrwLFg{?^Jy9O+yV~ z;7M4-EB&(m8N0&N`vAN3c^>BU;2M^_@#PK|GKpo%ELSu%Q@^ke=7pdfwR!k{67yz2 t5l30fI?4vSf*;$qOTi@tbDDj z4u9;WxJVGXnKOhnb}DB8`Rv4=PJL6pm1cTilxgmApH>lZgl!+;a;GaT@_qD^$vpmq z!_LD4;1mVyq%l3s-Vs3uNHZD4U?mGyArSZ%*$cPlZ`g@ba_Z63O-d?>pPou;Oj#mt zhE%GjB;_Jn>nTiU)=4_yG1uV(3J7;;SCT92$b)nrVDs zSkb!8t1ImqjX7Ml@oHP}T*K7e7g1i`m@F9q98GSbD zcNUF|=Z~10ECkozkQZFNhWJYm6~>pY;TEf4MBYO8lSm)T0RTS8kN-n5}y`?H;8L6SyU{&i|qp!hH&4kZn z{Jjb4%P)vh=eytGX5NIT3^mLDFJ}BnU5CqqP28v`H ztCB#wmW50SRt7wv5NMl8d(RSGEgOXB%JyvV`JDuR!$WBV7AFW6Ni z`dV!D?c+Mo100000NkvXX Hu0mjf!~U^j literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00010.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..c45ea8f143e69f5e8fba82d0d92f17984d710b9b GIT binary patch literal 378 zcmV-=0fqjFP)Y+phEIls#G%ds008(`ywq^toO8~v^vJ&byy8VZ zD+}yN1=U2YeN7~#UohciBO~|8)cY$i31JC*WR&?ElvWpiGuDr@{thS;mX_RiVI`F|lF%VH#3P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00012.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00015.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00016.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00017.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-cond-with-all-items/00019.png b/tests_zemu/snapshots/s-tx-cond-with-all-items/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00002.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8daf8e17903f5643d3328684bb742753f865cd33 GIT binary patch literal 359 zcmV-t0hs=YP)lMxcI_rn z-7!s{lUOMMimX>UUis;;OyV;;fG$$&&k2jnN;^PdL};F;RQS@e5bZaoeXa)cP002ovPDHLk FV1jO+ovr`? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00003.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00005.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00006.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..de3507c2a2d10442b0c9c96cbaf3a88a28474441 GIT binary patch literal 298 zcmV+_0oDGAP)sn3{L_e4G6Tb=a@ z?)?2?$6aO{(|va&HoqsQKCL)2qOeDQM2;>|-!JAS(ud|Rx@+6vo^!ktQ>ROfxTWfn zTA!FTGEad1={V?4YYiz57OSmEtB-0l_z6hKlpg!~8mDtN`dYLA`O?jM>4bv1FCzDl zlxvCWzQjBMX6Kaberx8tSCZOP^yFellh(9>U!v#yg8UnWhJ^Qv1vpCfWJI%A0GHDi wIyD(Px#07*qoM6N<$f&!+7(EtDd literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00007.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00010.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00011.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00012.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T09@5ACg%P6PJPD2x;Hu;z8Cp> z!gh%ne;}tX(|z|$Z2p+Q>ad8y9{)#_=o0mOF_TCinoG9BeJ1J^kj}*1?V3u}CAlkL zIfWIVe@aif!&*bCCz}ecR#nbv*LelxG<7HZ)*&-GC}+|GD3@;DOMw>azKGmIQqEz$ z?n}%HFgvFd_ggdG{U^D1v>sdyapf*)P3!n2y7(95*;N`c>x=tRvOVdv=^^E`g-#8| tGni@UTL{MJeHa?;1poj50001H`2bzZnHVWBR?+|f002ovPDHLkV1g0*f9wDN literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00014.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000`iE1sy?@*1@QIp7s-POW_- zv{3{8@JBHZnErlSP@uWsm<5W3^ss6M&=k*DGs{`PnAA=#?trENb&(lp7+;`P((DlP z`sU&e5NTHJM?lq16+fv1#Ep*bS9}wuhRzL8Orf^CMhqAVPA|_NN!xAl7ZYr6uep)` z)4X4ncK|Z^K=0p$;Og}LVzLkJBv+w3IXn3!yw;9oCp#Ev5d%9#x=djcesQDOfCjT( zoJiBfTDUfTCKgZFgU42FW@z!}-oTD#;wfz)h78i3wR>b}&N=gC<}et(hV+gFkpEei z>NDXEFnRxfsPVgLRtPUhuWWh`cN_MHBK*OFDvN6}hjUZQK==rJ25>gPv)P2{?|}Fh z36CpzExmn!zrBn#!7tmbGrRAtBJXCg)BuTOle-O=p32%j^n*aa+07*qoM6N<$g7Dz!q5uE@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00016.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..132b93a5a93bb8aa34f22883c2736effe4b9b8d3 GIT binary patch literal 488 zcmVP)<|G^&gfFaly!yB`m7{jtHowiW24Z-1XI2?|4yk9@R=0$o4^y_N;?U^3a z!$3&joOT7>UdN6vNm4hBN2h)PiQnx>ALBUw$44TQwD_c^%PndPHoKFo9|Y|L7z6$& z${5=d*EJRtL#fFlUesgN3CL#}w&Ai(M-Efxi2*P<0mOk+WEvdf1!_19VtLWCB`YyG z0U}7%J_I(U{MAtMgAyQKboqV7FX3Df@khH4a$RoGhH-&|Q69gOj=SO~qtoA7^@9A> zq92wgz*4zj^mjoBwMTz3JO?}BRcI$F?qQ?HKzfH_H&pAA8uR&pTNn8h8zF`;U)G>h z?)iy;*Ny7@h*h0x%n5ZH-GG$*tw)={SpR0IIF%( z5u}*T=w!TKUEM08h*2$_fFSLo+w=P)w)t*Nk^^^QRcJ)=sZ7uAM*-^t3BZjF_b0~a zA1X-*jTyxffQR6~U?G%9_ibUn7QO>=H}J~NJr`?&ri(;`EC|X}#TV!NXE^PwToIlF ehr{7;ToxZO;kyQkHU7A# zXXs&IB>bF?nsjUj&o2v7H;qT9zJbE;_T-m)d;i}rnM~1=oi$xKV$EQ)J7x3}p|%4+ zLtd&fV0rp=fkAm0WvG&jVAT$wJq^on&7vz?kTqsvasZeEJ&wr(Y9;8Qw~dU=t{f3VP5z;6I({XcF2zqqr@v8kL;l}pe_I{^ zr1FQee-xCd&e>m#jKPt}Q|L&vsM%R77&uE5Sin{fpEM_ZMa6fm(L&uf^BgF|}l(qPIHW*a1Tpd&9C)Yj*1A7kc2Dqcpe!Y)=0^ z<4J>|ysBCT!egI;oDU~>EWfZLHgE^91!b0z<#J$ET-u3+@t{#A>Y?0R6+h!wNr@1} l3;1(IWDF9CL?V#@_y8jP>|$DW^Bn*H002ovPDHLkV1g`%}i+xLIqz1Uuu7%K-+95CtsrD(kqJdw zFUkeIWo49&Z||!p99nKv%bIE?WCye@!)0jE6ULgsGdvl9&h(mO7N$fK)Lz=Ob_qsW zWafD?04!bBK7`gD$vlh9JUarw9(3(VMGxV&qh%)2dC>NyBkBy7g3-&H*V94g`}1s> z?39v$@K<^N$_Ria|83q+gmE>z9}HrU39?WopH9A+pJN`DD?3YJl-_-%jy)PWbyJbFIA2YK*8>>V?1jlDFr!CLc5FUJ4-e})fNB%0000G Z!W%_sCZXBDQBeQ@002ovPDHLkV1k>X!|MP5 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00019.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-custom-base-fee/00021.png b/tests_zemu/snapshots/s-tx-custom-base-fee/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-hide-sequence/00002.png b/tests_zemu/snapshots/s-tx-hide-sequence/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-hide-sequence/00003.png b/tests_zemu/snapshots/s-tx-hide-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a8c7613a53f2be3a31b6ab6d45f2f063b62e0f GIT binary patch literal 463 zcmV;=0WkiFP)&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-hide-sequence/00004.png b/tests_zemu/snapshots/s-tx-hide-sequence/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-hide-sequence/00005.png b/tests_zemu/snapshots/s-tx-hide-sequence/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-hide-sequence/00007.png b/tests_zemu/snapshots/s-tx-hide-sequence/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-hide-sequence/00009.png b/tests_zemu/snapshots/s-tx-hide-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE>7 z<8jN_WbY%w--dllw};*6y1o7!xpZW6k7<Cy}e{d`!L3{eBe&r`#lN4F18@ zPuDsCjsMNnUjk*RWA!ga_+TaC6k3Ufdsrs@papZ{ifK(8Fq^SK(OrUAmn*SSq`>V-D+qWz25+J#QVX77Gy8{~0a zfsd+&detN6)HVA69l%^8>g96 zaw@F1%q{jYGx*oAJ>L(<&Og_dIIIsqHTPUbYyI}@d#Su@3OdV-T4}D8c|^Yx7oLC+wEI_bM{OM2?0Wu*Mo<9isifvEUckpJG~Ib; zSBB8T9kH~ZF2d)waMcn;xI2778*6a@*fJX^Um+!BQ%M)3b|C2G;579`_5CVLF4;BQ z5dK5&mumx{$^WPKZvo@#^!~-j7~F}>LU-cR$s5y6Z=3Whtq9zXOPdS0D)TZ`ERIN8 zwQhi9()iU{x$EmRKz4~h9UNHfwSc;dWdtRlRwZ_K@e90J!P{M+ zbzIyL%D?&$zL!N*4!YtCQoA?-uO-ratI=-^JuByQV9`KNx-3 zn*d4vH=}<9BGeiE&14QvlDp7JtmkmZ*)q^5<=U%VOMufOjCXpteg@V<&NYHPcg%Fb zwQjJ0pjqw?S@c*EY#EW28-rtz7eBxMj^|nrj7nsDo?d&+${lMYcHsv7NfC{UBWKHdv-XTnu!GoD4wq2y5M5eKntE5 zljKk2f&{GT8t&kP=gvd8>sGq{oFo4;=%!;C*9fT!n1wlcV5-3(T}_fCNs=T<007`0 X4G^^kv;_0~00000NkvXXu0mjff286` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00004.png b/tests_zemu/snapshots/s-tx-memo-hash/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..91dbb2c63abc6f0dc7f64c664ab608583b596890 GIT binary patch literal 429 zcmV;e0aE^nP)%Bk`N43~=H6|E&cgSL$;}#?cgq#|Gqlq>hesy_|&}cU`m7 z^rgc!eL5MO0TW4o3w?l!^kN5U`gAgK1K7u`WB*L;IBptgZjv&}p2yTJ9`1p-tk>&O z^0??P;Ts@zeqi)x!Gs#o4+eWM6P!Xbxy5tXFpI3bQi-CbSWpKhYPxeUEKe4WXtCL( z6s*P*eiLS;L|HUtjpXkuS2jn>zkyN~6`F($=u%0an*l7E^F)pdmHu;4^A2Dhfg2!5 zi8UFOsye-QPK_L7u5<$b{o&{00000NkvXXu0mjfq&mCJ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00005.png b/tests_zemu/snapshots/s-tx-memo-hash/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00006.png b/tests_zemu/snapshots/s-tx-memo-hash/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00008.png b/tests_zemu/snapshots/s-tx-memo-hash/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00009.png b/tests_zemu/snapshots/s-tx-memo-hash/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00012.png b/tests_zemu/snapshots/s-tx-memo-hash/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00013.png b/tests_zemu/snapshots/s-tx-memo-hash/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00014.png b/tests_zemu/snapshots/s-tx-memo-hash/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-hash/00016.png b/tests_zemu/snapshots/s-tx-memo-hash/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEb8vlK@bE%V9a^Ic~n{q&xKEsK0?pZ zc&-+zFlpofk4d`AxIN$7=kc+Nxen1w7U)qsR;XZHh-{)-;(SW&9-#U&dQdG&TqR98!Uh%_4DrU17mf#?@X-0N+N|;@@evo zIm|wgWkoJ1JPsKs9X!@WYUi+IcTi$7PihZr6kuvVS98(>FSO>UVYLseUfHd5Z z%aBH=4}Bxg#wnQIJ|l}-5UurNe`$M3gkGw)ntgo+%++AA0Hxee{yXTVxg|#T0B40h qO-)Qw9ZlT#-T;Ci2!bF8{+1V+yjGLEH;$eF0000K98Bb!ghvuv-zn-7(QU#U8OfnOg@qtB%?=q~C39&+ z&FX6W*&CVXk_@5QkFVculq?5!uB|>LaDZj%^6KY7ks9hx20n-cQ7Dp6kwrCh;uiQc ztpbtUSyF<7o=RqU4`>x?{L3}2tb7t)bt!$Y)c=5TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-id/00004.png b/tests_zemu/snapshots/s-tx-memo-id/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-id/00006.png b/tests_zemu/snapshots/s-tx-memo-id/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-id/00007.png b/tests_zemu/snapshots/s-tx-memo-id/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-id/00010.png b/tests_zemu/snapshots/s-tx-memo-id/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-id/00011.png b/tests_zemu/snapshots/s-tx-memo-id/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-id/00012.png b/tests_zemu/snapshots/s-tx-memo-id/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-id/00014.png b/tests_zemu/snapshots/s-tx-memo-id/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pETtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-none/00002.png b/tests_zemu/snapshots/s-tx-memo-none/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-none/00004.png b/tests_zemu/snapshots/s-tx-memo-none/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-none/00005.png b/tests_zemu/snapshots/s-tx-memo-none/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-none/00008.png b/tests_zemu/snapshots/s-tx-memo-none/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-none/00009.png b/tests_zemu/snapshots/s-tx-memo-none/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-none/00010.png b/tests_zemu/snapshots/s-tx-memo-none/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-none/00012.png b/tests_zemu/snapshots/s-tx-memo-none/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE@P)M~Y(pV?p zO1(NJ-ze*S%-w~7I`6F^Ey#cs6r1~YigcU^%zFaVW7e^KOGT!md4mGeOpda{D%rBV z{vIZ~-&OB4_~)aa)=vOx6Qh3{%23DX-%QNGPGT3@$-p^W7bAfL+r$ObmO8N9t;mu! z)X`cdF3`5>6GJYj)=ZsN%K3^AP?SFz4DxnJT_B`Qt+@%yixPP;sqa=T#cmC!%T$6#griP+wO zPGYf}|FccnaUFp_QVq>`)gb+9ne)I2V2%;>@WhJhvxJ!=3p|`4Ljqy&-RYVNf*=Tj cAPC<40Jasd@P)#By8r+H07*qoM6N<$g5fCSC;$Ke literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00002.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c264fa1b13309cfbb7cb5731d462d0abf054fd69 GIT binary patch literal 507 zcmV{HC&-2fF!)_dp=f!ott~)4Gv39AU>7B8_0XL`0wWWAG`dKRPHBqnYZ~aTxi^_W~ zN;Eo!JJ3F`^q0NBXW0?2373FGz^hzRB4cF)#A<7I>&}vZ{juXV99l(~^KzZqwHXMf&6s_UxxPpLPvb&~#873d! zyxkD^@zpQu9iYkN>Td(H)Vcbbkv{k&G7EhY?~8me)AYTzjv0as-npo-Or zlAc;8AW<4WPD||$eX5l~nkOI=T-DgCh~8o{WhA3)PrJdglQ7sRlv=0ss5$V89oYCp zOtUdzF&}aOn+-~F2O8Bw)7pS4CC>~)PoC^i8Dnlaz@#4dkS--NM;>#r=#BTzh>j%H z0qo+MBxX8=?Dr{ xGfKszTBlTIsb(Ors>@P)>*Xw0?fn4PNkhWRE~pT0)8Y@A^-pY0Epr|=scXB+F0xSs}Wh~ zo`Kqv=lPQzup6)Ur*R&CZ3g33ZCn{>dS)yrz|HC6+ERSI`CVzB4RN)v-|JH5OWJ26 z_GmDNJJ3FG?^12V@2Wl75GjM+rD32tmzN$^u7Fx^?QGpM>F(9T8l@O5z`gV&r&^YB zA1eC>L$x2!O?zr9lL2~ujDF_F)>&mZ zHZ};!JTWo_Rmq8nC#n;}*!DBXgFWc!GKI5N1kb>JK^fF9bGR+N63^SJau9lLw}o9F-~n00000 c06;`Uzj!af21V?IzyJUM07*qoM6N<$g32-2zW@LL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00004.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..d9061f4add5e29efa96abe8099afbc5aad5222d7 GIT binary patch literal 441 zcmV;q0Y?6bP)yULcm;3u;%xdZKsJXt}9Rs+X`LjZfCPi5WSLQL#LG}!}NWar}YL+8cF;olL z^_WJm^NZMcQck$lRDa+{)t*roLk4!!Fhgv5EZYITqm^fC-03Ee_2)EG3y?RRjK()U zS;yR6sK}iyogy{>-aB9gRdJ8;m}$92YyeyrK)uX5+PD5vZpY~Y)m>&V%V*D(jTLq~ zE_3hRH7$?edkI(o%izzmABmD`WGc%TmVBpY^ka(*$4O7&HmiTegrOnlYEF0ETGQv0VT+ORarG#IkjKiq)zqS j;iw!-2qAL{z_M00000NkvXXu0mjfsc^@c literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00005.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00006.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00008.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00009.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00012.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00013.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00014.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-return-hash/00016.png b/tests_zemu/snapshots/s-tx-memo-return-hash/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE6P)NklkxU{rTMolRQf*=Su&Lf?N@WfYE{`8Ml75ZUx zDvJ4cz4&SRBC2 zc|!0VBm#{*r4K~8FdkS`UGET9Qk?<5TuV(kY_(mC%6K>cJ!T!->$_ANw6Y^Q0u{Bd zHc+lU^fj)G3DJBeH%>>qDA=nX$Z8H?p8ufrmjy9(Sbs9%gFA^RbSK|N-jHgSyQTgm zok_?fgYkBNDS2xe zr@YWIeVJxu_CmxlFtT_%fS(~u;i5+cny+_3Kj5r{TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text-unprintable/00003.png b/tests_zemu/snapshots/s-tx-memo-text-unprintable/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text-unprintable/00005.png b/tests_zemu/snapshots/s-tx-memo-text-unprintable/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text-unprintable/00006.png b/tests_zemu/snapshots/s-tx-memo-text-unprintable/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text-unprintable/00009.png b/tests_zemu/snapshots/s-tx-memo-text-unprintable/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text-unprintable/00010.png b/tests_zemu/snapshots/s-tx-memo-text-unprintable/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text-unprintable/00011.png b/tests_zemu/snapshots/s-tx-memo-text-unprintable/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text-unprintable/00013.png b/tests_zemu/snapshots/s-tx-memo-text-unprintable/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE6kh85JK2KtsX6+<-|=F z$NsZGesdgK;|5q|Vr=SJ57So41OUK1BxQUw@WgMUTKm-pJ!i z+MFnz1r+H+{v;dxe@TxVBaNKx_Ou6R90K)56hx>IeP^%-BS94!$;f+{XZ7^%dM3omI_+^k0VK~)y;J7cfQ2ufN2sB>rqz!5S9 m`sme(TEaB|00000VDJSUn)=P#APDZt!$!?{002DRT#FS+b7pXg z^Z07WY72#FK;4@Kx8OWVztk<}Gn$ChjktyBHF~<2i58h+2Vv{4_E*u;F$MmTdgsOE zV({Z#{UpEWd&wC!N|-$>#zbp;wBsHDZd2r4-?ZOxX0NmSguHLM0L(KxME&>_ynpAM zx=(YByO8{a4;an(zTN>`QV@B}8jjbC6aku~$djMUKUn{)C2>gBThaZzeS(72-MkO( z3&089(EF<(TpiwbCe~mjk%d%6cf!zXVjMId+8+#aR9RUgcZ*EZ#bosp=)0%~y i4Gw}J2!bF8etZCg8gM@UlW`jW0000TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text/00004.png b/tests_zemu/snapshots/s-tx-memo-text/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text/00006.png b/tests_zemu/snapshots/s-tx-memo-text/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text/00007.png b/tests_zemu/snapshots/s-tx-memo-text/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..740f2de5ad36e89c65afaf1e8e1ff0d70ef4f1ac GIT binary patch literal 296 zcmV+@0oVSCP)BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text/00010.png b/tests_zemu/snapshots/s-tx-memo-text/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text/00011.png b/tests_zemu/snapshots/s-tx-memo-text/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text/00012.png b/tests_zemu/snapshots/s-tx-memo-text/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-memo-text/00014.png b/tests_zemu/snapshots/s-tx-memo-text/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00002.png b/tests_zemu/snapshots/s-tx-multi-operations/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3b6db2e02453f13ebb7ebce12d8d7a6d5b52f3 GIT binary patch literal 341 zcmV-b0jmCqP)i9`$sh)nU=^~&<~@8KSE)I;?p_+-FVz z1WpcOBj|-AYkZa>l5oy;s~jJXNBlH$qX77<4n1HAs{eXpu~^+`1^^AYYs}s1v$SqQ n;~#x*kXHI$1^@s60B~16NgC=jbR9ia00000NkvXXu0mjfiv@{> literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00003.png b/tests_zemu/snapshots/s-tx-multi-operations/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00005.png b/tests_zemu/snapshots/s-tx-multi-operations/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00006.png b/tests_zemu/snapshots/s-tx-multi-operations/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ce7beaaef7afd6aa5a617f891b0e2c8d050363 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA5fsh6HEjv*Cu-cIx8JFLLNntAo! z{{yjGx;;*qK2zs$IeCWfk^u1F@AqPSn`{UzIN(S-e2-qw@JOR%1KAvU?`K z1K!QH-STT9lkNzWZkA+lIx{CI%@Ku@pO8n)mi#=8^{m$@Ce{C2%Rr71u896Rd z1^cCQ(<0V;Y~4I7w>wJeeaQ65+6wNKdC%3uP8JmAL^TxMdlj?Gzopr07@)(egFUf literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00007.png b/tests_zemu/snapshots/s-tx-multi-operations/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..00d009fa585bd51f12b502896b11a3ce07d49bcc GIT binary patch literal 444 zcmV;t0Ymz*){ zWXJ<60}v8jr9Yjgi`Oh63)_DB8zhOELaYx2czxiLQ7jQk-OwviQNd#o_^p6=j)&QL zX$p>4x-7V4I^HE{+p~4%YHpByB6@fS;KV($Po67)SDSb>DA`FC4Q~?riuEV&|Fl-t3Au9zD(}BRaF78=o`ydTM25bV9oA|!idre5Z^q*?{%vt z+BA;yH?`zFJSYS8C1~cYy6**9*Y3qiX#kXsAm#UhA>67xYivKK&x^R|BBxx{y@xR` mfPVKYc3&Q39{>OVu6{h)c87#@yz;k$g;K3*cuM*LsV=iVu?)JvmWk4L`A-bze zur7zm<1`X2-LWn~)10j{<>>l4P@jlC)*EQX2_nk~DmX7qrCAN6C*% zM*o5Fc>jGK{A88U)hG83&=z`u`lBF74fQ(%A6SAaWQo)Fu-KVM`UGNwQ@j*g4*L9k za2n!D7wA^MQ@_iD0~pq=h$@7mnTwOuJ$$qxb_K7TMN7`B@e$g~xz~vUb~%(D!+RO3 z1m(gu*iYlyU$OF$0e_5-4B&xzJyheUkGr1j{$>CG00000#cUBQ=x;CWq{RRL002ov JPDHLkV1nB2p~wIL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00009.png b/tests_zemu/snapshots/s-tx-multi-operations/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..40185d199494724446e57ba6c1714d7b797e758e GIT binary patch literal 500 zcmVo#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00011.png b/tests_zemu/snapshots/s-tx-multi-operations/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00012.png b/tests_zemu/snapshots/s-tx-multi-operations/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00013.png b/tests_zemu/snapshots/s-tx-multi-operations/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=TrCv?W5+&4#j_2&py!#omu^h=bGDav|LMI=AflH)U0qU?aQ5_8)%r7BZ0J77Bs z9U!ODK{KpXq&nD?a5bwq<ZmC5-pq#flmmG0%-1GPo*Yl3UWGHuf31`3v&jsTi{A#eFHVo(#J5AjPl+rzXQc uSjp5=2o$sLVUS=i0000000000z$!kNahDkPysAY20000z*){ zWXJ<60}v8jr9Yjgi`Oh63)_DB8zhOELaYx2czxiLQ7jQk-OwviQNd#o_^p6=j)&QL zX$p>4x-7V4I^HE{+p~4%YHpByB6@fS;KV($Po67)SDSb>DA`FC4Q~?riuEV&|Fl-t3Au9zD(}BRaF78=o`ydTM25bV9oA|!idre5Z^q*?{%vt z+BA;yH?`zFJSYS8C1~cYy6**9*Y3qiX#kXsAm#UhA>67xYivKK&x^R|BBxx{y@xR` mfPVKYc3&Q39{>OVuh7cC%(c_}GCk|arzjOM-le>|H=Bhu#k2%Yt) zF(sGWu;KuAM0Z#OuMnvs#R|)M_*q8KvZNncA80VL!K*|x>lkAONSEJCTn5xJUZVSQ z6TG*>=5-peBg2URAK36?V3~R%4u9fY0fy?ko0G>jnh;Bt+8lG7c>>KXm06H{Sn=YDA2el z!D2a`1>)06bwD|DHf2be<+mMm!>!b3=KV{bT=P|`1CS~mbk@F;ph~@eVcQSGF#mgT zMF|S;qM$f+=88So#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00019.png b/tests_zemu/snapshots/s-tx-multi-operations/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00020.png b/tests_zemu/snapshots/s-tx-multi-operations/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00021.png b/tests_zemu/snapshots/s-tx-multi-operations/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=Tn z|NQS3MW!5E*byNtpJ|)E{Ghg@fHP2M=+3PZEBD)l&d*Ib+soJOuD(C~#&nI}%vQC5 z7tPaez3La#nYFdxO<~+2=Up0~T~#N_tWy1LkhW+|gNbnQ?a-ZCu}0btiY!DG?3Yen z7P;1=Fevj^wdmeYrLSJbFk1epf9-ze-DJz5dO!_Xqc<>zXVn*Sf1UHyOSZ)ZsgDgoAsc6i>Rr lG~B)?P7sI#dJzm7B6FO@r%K4ro#+SRd%F6$taD0e0s!N=cSisK literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00023.png b/tests_zemu/snapshots/s-tx-multi-operations/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpRgpB0#w!RMZQoe>yzA&%_ z0C>5WC)#07)Bci{WHdTt%WyBEHCbv+3m}R^zJ~H*8jWf<)#CBe5`fy@&1E~F{INLW z2Go|g@&zwJ9bh*8vEV>>fc+5xb_b|utY?UNLUwrBBCF6Zv&3;zPSVTl1E?mM*@vN| zn%M`#HHd^&D3T@5VM9Dvi+SU>BfHH49Eg)5%6p~sIlT)>pmryv>X+&eTV53_x{TiG z$58Y8G*NYPc$85Hp<-Ot+|{Pjv9};@0mO3;wY6~uCuQk_6Rn0Gt8hpRaixEbL%6i0 zbhOBs#>(Z5)iPCwbV|lB!DIdC67=`%(E&uW*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-multi-operations/00026.png b/tests_zemu/snapshots/s-tx-multi-operations/00026.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEUtP))hh20ZlkieL?WvrJ70000`<8ac?0V}HV(7pj8Dptgj zaILTrfNf8Ud${+9=<^+V!WiC84vTtd&4|`>*0-<`&B|S&WUe+gb^v8I0ngc19FDfV z%atp6YTtlJKaG664aC6A4xs!=APn{jUQ@Gbxo#NS0cTO7w#WC#S|=w?gMp-2nIG~( z{Q+b}hWf)uNDcJ|gBWOnr;sLA&fzLsW|_=je}olc^SwAv1(VlUAx7Uh!m}Y%yt!df z33jfKd0SpVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-custom/00003.png b/tests_zemu/snapshots/s-tx-network-custom/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..af36b1ab6760b55fa13716424a45be9922217a31 GIT binary patch literal 355 zcmV-p0i6DcP)006+MY@-`ML`3I7M6~T%m#l2gY$G7B?b=Hs zJ7O+#4#JZGimW9aOL-b1gZPYYKoeo=XTxU3(+E&_B6RFi==d_?i23`JYcAx4`UVt5 zhWch?q=x#&z=M%s78;4sd-yzxspO@%BF&ifJfk0~*{gY_@Z@=X4EISEViIKmCHI14 zF!nE;@-fbnY=LxGwM}b)POLkxemO#vkvj=y3my1V10-H2t7QzJn_H^##y+fMKn?nr zh7R;GKt4u17bln6A`O)OlIb~JZ=C`F0002Y$`9NB$2uE7`e^_F002ovPDHLkV1kzs BmzV$m literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-custom/00004.png b/tests_zemu/snapshots/s-tx-network-custom/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-custom/00006.png b/tests_zemu/snapshots/s-tx-network-custom/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-custom/00007.png b/tests_zemu/snapshots/s-tx-network-custom/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-custom/00009.png b/tests_zemu/snapshots/s-tx-network-custom/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-custom/00011.png b/tests_zemu/snapshots/s-tx-network-custom/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-public/00002.png b/tests_zemu/snapshots/s-tx-network-public/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-public/00003.png b/tests_zemu/snapshots/s-tx-network-public/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-public/00005.png b/tests_zemu/snapshots/s-tx-network-public/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-public/00006.png b/tests_zemu/snapshots/s-tx-network-public/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-public/00008.png b/tests_zemu/snapshots/s-tx-network-public/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-public/00010.png b/tests_zemu/snapshots/s-tx-network-public/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pE&G%JE6 z+*M!%AWXWr%e)>U-}6?pwaLqBv!q6z8BsfXeH#l&uhIxDeZ9fR04XFvK4-6DnI%kJ zMmF;Het|0eG>Y*ChyhFnNcl@pX&e5y~-2lsgy(mdJ5^L&Os~v9xz@&IG2l7(= z0Te~1`omD9ruu_n3_Rf~z0K7et(b+VC?>?ShMg%)*>Z(mI3bMb0pbS zsXI0GQXQexhOCqvW7XFb&E`Dph?D_fR)mV`lA0zjlHv(>2tcCswh*<)0C=fEazjmE tc$xnLp8>hGX|+gCyQ+i`LI@$G8y{=7yxlNq*-rof002ovPDHLkV1jfulrI1P literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-testnet/00002.png b/tests_zemu/snapshots/s-tx-network-testnet/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..368711bc9abdf71c707b99f578164e96bc477e47 GIT binary patch literal 341 zcmV-b0jmCqP)Vds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-testnet/00003.png b/tests_zemu/snapshots/s-tx-network-testnet/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-testnet/00004.png b/tests_zemu/snapshots/s-tx-network-testnet/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-testnet/00006.png b/tests_zemu/snapshots/s-tx-network-testnet/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-testnet/00007.png b/tests_zemu/snapshots/s-tx-network-testnet/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-testnet/00009.png b/tests_zemu/snapshots/s-tx-network-testnet/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-network-testnet/00011.png b/tests_zemu/snapshots/s-tx-network-testnet/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-reject/00002.png b/tests_zemu/snapshots/s-tx-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-reject/00003.png b/tests_zemu/snapshots/s-tx-reject/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-reject/00005.png b/tests_zemu/snapshots/s-tx-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-reject/00006.png b/tests_zemu/snapshots/s-tx-reject/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-reject/00008.png b/tests_zemu/snapshots/s-tx-reject/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-reject/00010.png b/tests_zemu/snapshots/s-tx-reject/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..a957ab9fbdfa16968d3378cedf5bff5f5c1c2ca0 GIT binary patch literal 325 zcmV-L0lNN)P)q6^JyNy1C;^R@_<==Guu`NFomCRIMp}43`kUR)2eT*23!bE1A0Z65JCgW zs@v;}cyI=Qzlra8$UXQpAO`4y*6TQ#JtzzSS3lDXk|OeN5PmzCLmsS09;`emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00002.png b/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00005.png b/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2a922e6208d175fde0b27517b8acd2b92900d4 GIT binary patch literal 473 zcmV;~0Ve*5P)1eov^yApY z5<4|3w4Q|uUg(j2|Ij5{N>jpA5$=xD(vdE#SV<<7w9!gGR=99d zpQLQb8H3RoXw9C~cHBy{s-eR~ zI2m7AgY!s1G$8<~?~hHOC}E45>;RNrx*yqV2G^|3*CowdX}0 P00000NkvXXu0mjfoL_Wd8Yhwj0SLqUFw!N^YdriUaYU?8B9Qj#P|lDqQoSNVQ@TX-IjH-%kz zzdnYVX=b+y$bq#R{{buvE|OkIi}Xr6#$rzVxNGbKo=TIiKdFIfqhk0pB)_`{P)ZT0 zO;63N*Cb_~8C1xGsg+unT&vJk0ca&vj-I;7x5AERTQ`dI;xb}nKq-9E^U`UudtSY8 z4tPA5c=-&wyDeM$<2^}|BuSDa7=POPUh3eP7ybYM002ovPDHLkV1k45$;jPcq(MS{-g)ytu(VQr{p<$07N9F zc6nKy^~h4{3^F4ueN3ZPT?$p9UJ2MFRgS(4Q>?;z-hC$SWqixjp2i$AfQT=8Q9h@q z;~KEMPKolxnP3LUl$3drdW~RrAt$AdGXr&bAiT_+!X4hw=4U(}oQj7#M4yHxz;bev z=+A%>>WqG8G6y3`6&lHZkVQ4rs0t7%8@QjF)<$&NMEgQk3{X$7>{9MEjb7LTqN0U8 ze$PSi|+DOc`qwL;dMRL z;o9iT4Vp$KmrVfm%E8GTsD>UHYqi+vmlw6rU4B$S8%nhorxtnEzdTeWNs=T1% WSWOc4`B-WI0000H-pPo2;IUo%#nqF{^c|&166_s7N`&aIz)1I0jejp3%#SzNclhO_pJpe( zvhWYlUj!l45&gkL4rUTnXeNjE;o4Nu`ZI7q}zOi;NY`Rk0p{p-*jWYFb7UjdmHDuaSvHGJ+-m^PEL~LrOkLs*1 zNs4hs6wCBv!f9=YOQun1lmlW&<-JeMWE)}Cv7b6G-o!#)+W{XlfGA(|taQ3(;2N;) zU99|Y9LxajlGIOPycWscDk(|hcqX7O4WkUxi{OU=Fh?rC;?NCc6Shair?((TTQ4?>}WMq@DT0V(UC*d13 zjTB$QssWcL;gxXUfZvl1w<)Dsd!%3+aU6mSDVf+o;BxGMrrGe=IM(5(d=sl}LjeE) e0000H5q$vY+tnl}KkG>V0000c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00012.png b/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00013.png b/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00017.png b/tests_zemu/snapshots/s-tx-source-omit-muxed-source-equal-signer/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00002.png b/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00003.png b/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00005.png b/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00006.png b/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00008.png b/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00010.png b/tests_zemu/snapshots/s-tx-source-omit-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00002.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00003.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00005.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd27ac78dfc31fb2566d09a63885717df0de20f GIT binary patch literal 495 zcmVH9x$7U{wnkKraNV$$%f603lq#{SzD1VIoym6x%-V?Ue!H1w}_HsRR+ z9VPF;Z`pwy;uGf(pbREGt;inJ0|)@ebL^)^>ww?3=4im2HT{KYm)6Q|@+(HOkngeH zG2F7MuCI;HwX#w6NCwd4oisAQpP?<5*M~lBa|`$D2pwr!vEE$@P$gH$*5(M{3o)%W zE(OTZ-{?p!K%X=ez_Y!76ia3&PZw}v#HGT^flyvFLY*bf^&!eeD=511&}N} zA^R7BNOff2nW(`^;uKoRImt*31=lQ6-Q*-sQrg7-a?2L%PV*`_!l7~&fWRrJq<9n# zfV`gKt8m*bmfH{-;RT3dpg;F3e(qL*WczX>h)^D`Z=rBeLuF>@5T5qOa4A5Ug6pdh zDZ*;mG)1jS;tf)SQm`ZifGSua$giAu(Bw!^Ao@^>xa24EjJg2Ijm)_e6lspC__G{~ z!)?wH)DamTlFk9EL~B9<8^wIzP>4G~2%5YI4wBu0X1*QN1002ovPDHLkV1l;{=D+{| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00006.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..991b7b1251a2b385ec2578b1d195351f5c950318 GIT binary patch literal 490 zcmVL;u~*F1((b zp=ui0tsPhiZ9OB%4K6*spcbKoZPh#UarafnQwMDveVMZ~ZKw@))BhghH}*RPOko^kcai?ZTnJn#^V z@lA*WVB&F}kg5*`HjNzi>=QsYK0FO*6%^1@l9D2aF^84w10K7F;`72_`tzcJkN^GZ zFS8w>X}H4bp9E&9bM=EsAIv19&`iD;nN&kjn#Cq<+oQ6at#Q)4Q0mrXQM$*n`J$v8 z)kiHtwqi=J^hna2#p-1osmb`bUYRjkMAbJcw_9xbYZ-%L^g~EBRKop6qm(pGbqNQI zbO4PB{qUw0$0yHlxa4jQCV zekV+Q2lSr?Ht5qdtp1j$FVAMoCxA}1X(n`26p0i`IxYHsV2}cAM7WE8XXa&aBR*r9 gl_Modk|fC#-n(jKO58843IG5A07*qoM6N<$g75p>X8-^I literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00007.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..5119e8b2b73cec659281fa6ef37991952ba8c748 GIT binary patch literal 486 zcmV@P)=prb1@C?%qzo>SUZBN#g}ti_%<b&1^WZ>O=F>h0LK*DPr&*2#~JY$-sKQXyZRGh~12mtak8 zwiMuKiw#oyxzg>^ZvZxa{Wg#+D3GTlC3&4ah8nZHyodIm3pX==E?W5bzt4U;T>wqP z6|(;&FsY90ZzgJRlGue#@|k3qhBjw`Dbdj&PBhsWCk{%9Ej%Df8kFN{^N1;hz|K2$ zPtXk|DE86{nQ-BvB#(ESLmORNQ@AOqhtQmiq7sW*nbRL)%9vAS?AJ;rD(CbDpm}z`c0r1k-Iwjwar@rFvOi>Uqcu@lQjwP|8YLxqhq75- zI=0xf*$P0q!`>{ub7p%^QPLQ~iov*w(-t(g;jkIO6tIWRyr|@Bcn>ssA~DvfK@bE% c5Cj+F1?)O@hB}#Dl>h($07*qoM6N<$g05-bc>n+a literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00008.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3f789d4d64421fe12db076c795b982df8cd6cd GIT binary patch literal 419 zcmV;U0bKrxP)2t)1q{{G6g0~w5&&b= zi#4;6p7Dkmb0`6-M-a-g9`3?Asz(<3tAyJDa<6y$1YA-xq&p_fKI6H-VHb{#82bcN zzo$A(&z|%gnKS9&0H^|;j#E}_g+e&i#OCEyC>Li0)^nG^p%LECa zx<5Yp^MHgpqwh@SAd)Li7Etq9Rk|W!p>wH&OHG}XO6m>?Ij>a z-vK*w-UKeV>;O)DZ`jba*;v900L}=j{!&0qbokf(HxrqIBuSFQnJ+uCMYurH6=eVb N002ovPDHLkV1nwDyTSkf literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00009.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14069e03a9ac5d254fe97265c8d4c5ffb89674 GIT binary patch literal 428 zcmV;d0aN~oP)c*i1x2NZwBlcSzJ5=(@O_4J&Y?kcRxTZL@V|i*XA-v&hbJ5kkz<%P-yme}P2khJQTVz|@_c!1o%)8t=)57A?VT z8ChE^#7GXrbBz2Yy_0afIGV+zn>5=JP)&V4J>p4h|-(mXZ<$TP(@(~H`wlm(7|eg^rvqrmz9ri}`#Xvz}#Cv0!(s_1zc#~Ck*F?FmH#DY=s zPuNx?5$W2%{KQxtNBkQ)y0Kat+K*IMMb9;$^x-fal2du&=HFTB{EMOm000000FC$n XnBE9>ZZj6`00000NkvXXu0mjfjqRt! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00011.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..408bb85da026c1753917023949da9140d46b9549 GIT binary patch literal 503 zcmVO0c9DpCvHrhFSw^B4u1Ssgba|U51C)R{`y9tkL;(?5L7b7stk~6XRGbnIuWL|>wAm=D0rm#!BCPN!eMM8 z4M0HJaQkG2=>YI4Og?}&l2=d_R5Enn`sgYt?J%0kC_64wPJ4Z{Bg8>}rp1}yjlPcf zfAK>|`<&|}jg|rD0-})tT1<|?nVhoLrBkPwNiHEYdz6Eg`ck#x%&=|Xr zxnuy^5XAr0C>{=nO*5z^lf<6tQiQTpIjp}!cx|9Q_R0pk3<Hie{s02PueJ7(M%1qBBNs=T{@&<3qWRNA&hSLB5002ovPDHLkV1kVP>H`1( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00012.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb276e7974d514da497912733ea3f5350d3e6c1 GIT binary patch literal 487 zcmVJ;B}v#4N-$g;=bIF94|E4RV=Ue9m!XZ0xMkWOCD z%TP2;?8XkFgtu-1S$$EW9B2)ms@RG#rArKH>y`o+>5v%sK&>)LX~KR(%Xy6yNvQfPlp@*DNJi@i3qC5RBfNoi<($SWMThp?SGj`4MY7Vz(-bxi?rbp~xvG zg(Hnntd;VYc_OJ!b8?js+@u_iYcjQ!rDDOdXtC;1GY4Sw!yUAlGd$%5N#3p*w&e!! zm{4+uNi$J4wUIi3LiwOlgr?jthSYwG#GJmI&`C7ZXKv62;Oou;{dR(irqLwD+c?A0 zJD~qGh(VvHVexm&`sS=geFAW$Q$IY83KCEv?Xfua(?Tx5&Iot&?@WIgyqKS{tjdub d$8j8I32(vKR;UG~qkjMZ002ovPDHLkV1nFb;@kiL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00013.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc220f8fe13ee4e843bb6e4cac19d2410ba43cb GIT binary patch literal 488 zcmVP)6w<+knPqr94&PE<8`BoMf<88&MJX+?$Wk+dEzlO>8{U~LL3~=aCg-4+P}{Deepv`_uSMV z&9(#1h44l>Xfd@0XL8OdQ~=*jM%7TY3b>)-46gH#l^>j;cD8V8$Y~G~Q#HBdrodI4 zgpuH32$Lcot+bzlxHjUdEUM)iOG#A_Rwd;rs5L9B#G;nx>@VSc17%2mqq1<%q^_#O z2N)lj$-?^Qze40GxV+ygIk0j;J3y!|goidaTk>4CTgS)u5$ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00014.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..1202d5d7db12d4077f18777b40e72d44d052da80 GIT binary patch literal 429 zcmV;e0aE^nP)c*S6GWf2b8gH~QjDDa_(`HJ-dheJ3%3%E(Z7HTPb z%5r=bkV^nu!p+p7vH1!Og$5Z;;5fTMvYpV8sj}8KrE$=EyLk|q&s-2N>eYU|{g(W< zp^iGeb?U7Gwu1-~8W|Hg*vW=nC@2g>R>}d|D1F)$AnZ->Uc;kldpw$z2z!=z@2XG^ z)c>h{-9ki`<~4Rv#b=8#&&uSc+-oaB^?A_KvyOQJVAm7v4e&b<(1&j6I4d~w1Sst} z;(hGWBv&q%-Dg0?=Sg6KNd<89o$wj{(TEN#qk8SzdeskGr-2OrT7RC190WlS1jc*- XOp`hgLNBV$00000NkvXXu0mjfASA$v literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00015.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb9ce10fb2e46e5d23e4a64e16c6fa725eb71b2 GIT binary patch literal 389 zcmV;00eb$4P)*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00016.png b/tests_zemu/snapshots/s-tx-source-omit-source-not-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-with-muxed-source/00002.png b/tests_zemu/snapshots/s-tx-with-muxed-source/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-with-muxed-source/00003.png b/tests_zemu/snapshots/s-tx-with-muxed-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-with-muxed-source/00005.png b/tests_zemu/snapshots/s-tx-with-muxed-source/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2a922e6208d175fde0b27517b8acd2b92900d4 GIT binary patch literal 473 zcmV;~0Ve*5P)1eov^yApY z5<4|3w4Q|uUg(j2|Ij5{N>jpA5$=xD(vdE#SV<<7w9!gGR=99d zpQLQb8H3RoXw9C~cHBy{s-eR~ zI2m7AgY!s1G$8<~?~hHOC}E45>;RNrx*yqV2G^|3*CowdX}0 P00000NkvXXu0mjfoL_Wd8Yhwj0SLqUFw!N^YdriUaYU?8B9Qj#P|lDqQoSNVQ@TX-IjH-%kz zzdnYVX=b+y$bq#R{{buvE|OkIi}Xr6#$rzVxNGbKo=TIiKdFIfqhk0pB)_`{P)ZT0 zO;63N*Cb_~8C1xGsg+unT&vJk0ca&vj-I;7x5AERTQ`dI;xb}nKq-9E^U`UudtSY8 z4tPA5c=-&wyDeM$<2^}|BuSDa7=POPUh3eP7ybYM002ovPDHLkV1k45$;jPcq(MS{-g)ytu(VQr{p<$07N9F zc6nKy^~h4{3^F4ueN3ZPT?$p9UJ2MFRgS(4Q>?;z-hC$SWqixjp2i$AfQT=8Q9h@q z;~KEMPKolxnP3LUl$3drdW~RrAt$AdGXr&bAiT_+!X4hw=4U(}oQj7#M4yHxz;bev z=+A%>>WqG8G6y3`6&lHZkVQ4rs0t7%8@QjF)<$&NMEgQk3{X$7>{9MEjb7LTqN0U8 ze$PSi|+DOc`qwL;dMRL z;o9iT4Vp$KmrVfm%E8GTsD>UHYqi+vmlw6rU4B$S8%nhorxtnEzdTeWNs=T1% WSWOc4`B-WI0000H-pPo2;IUo%#nqF{^c|&166_s7N`&aIz)1I0jejp3%#SzNclhO_pJpe( zvhWYlUj!l45&gkL4rUTnXeNjE;o4Nu`ZI7q}zOi;NY`Rk0p{p-*jWYFb7UjdmHDuaSvHGJ+-m^PEL~LrOkLs*1 zNs4hs6wCBv!f9=YOQun1lmlW&<-JeMWE)}Cv7b6G-o!#)+W{XlfGA(|taQ3(;2N;) zU99|Y9LxajlGIOPycWscDk(|hcqX7O4WkUxi{OU=Fh?rC;?NCc6Shair?((TTQ4?>}WMq@DT0V(UC*d13 zjTB$QssWcL;gxXUfZvl1w<)Dsd!%3+aU6mSDVf+o;BxGMrrGe=IM(5(d=sl}LjeE) e0000H5q$vY+tnl}KkG>V0000BBCS8CkSl@^7CKtx1u6|Dnk+ScE3T*kj-__O!> zS_jYroV!cF4}g~2B8^S0OXPJLw5`WH=2Lypy$A`r17wZo>c&p!S=a-R#O0c&F{F=m z0B?ug0eZHP-Oy--L(_QTHEt(5>1FmOs3w`&pQey%W`8n{fhEpDmfSpt^*%&U;ic2! zZTe1xpQd6^3o(#&W^E5yzTji;Gnc7=Q5RzWEVA5XzvQ`F5l(vLxdY$?>J-$F%eh9k@A|fIpg0ur%UTd870t|Ej0000o#T7@H7n^cz(tm|U#{ut z+6`oc-KMLY&gw}I>R3>ay3KfZ$}431_75(?0jDBrlci{7NtX6lQb-YA!QtfI7os$4 zga=w=+X&0wE-NThHyl+VtE7fmD*)D5=9;Q!0&S*NGB^Ne0C|&X7#Q84W`a%#zt{{8 z01Mi+ZvnK{)p(}>um>GHujnBR1&s$FTLWcjk21nkFnZa4CM|cw52kaxwc<+qr+I&y z9so(?f!@Cg#?|5d$wUmUBzB=IIXii0UZXqjsX6y=NY1*@%Ob3y-C2rizDU)N(noAU z2{n)nVDF>swY%clT3Qfl@&{GY_NBM`__xHg!+5D@setAP9mWF!BS#`-TsYE_{Ii0000~A+!|$ zUihb2224-8ET~W%O0B%57yYbS0d2~_G+Z|6$YOG?7z2|HKsr!2nSqY+4JsU!mXgCKbk*iWqFGj;J}Te96ysT=i(>h>~F95 zN%>zJ{j%HuNaP1ce;2|~=jbmcZLpKvg?92i$TuNdJM$9rfOH(s!BLvt7PX73ctF%D z7jJnukyPG>iHI6N$#b*-2+lH!<50{%AgC*lsg*Q-T66%7ez=3Y>4aZ~L8$VAckfcl zTm$eu;cPlA(!`iGMmq@%mCp=C5MrZgTF7Bpps6w0Pkv7Pxz!bQb6$1(_-u&huQ|aV!K=KGxIX|X8nm}*BL2E dk|asC@DB@udLgx`@>Ku;002ovPDHLkV1l^X+6({y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-with-muxed-source/00013.png b/tests_zemu/snapshots/s-tx-with-muxed-source/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..76faef471fd00c397aec85bfade665c3d4929d2b GIT binary patch literal 494 zcmVSs_D5y$8TwGz1Lwal?Oc>q|@ zuKh27)}|VtGyv>D2hS^d2t!4SKhk*sb!m?}?BVZPruj4Ja!35h1pW1@AIRS=`fd3D zXeu|1{w|nMSM(QCW3ZFjg?92A`#F3<;3m;1AF4!|sN*>8>-kvvM$XGyEcrng;tMWMY z=V-Uv$L3={v9B@9&|PpvA2t#gxug|9yLY7oTu9!s`?9_FO&KcB3UJXU+9Ar6ROF=| zjgk`Hk1btZdTg<^W*Y!BJM5Ds_xq7Orc~1C!txJZ+1XInq+=sOL%=?C_DUsQ(|e%N k5{bE)S`07*qoM6N<$f(iuXMF0Q* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-with-muxed-source/00014.png b/tests_zemu/snapshots/s-tx-with-muxed-source/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..175657e8a91d7cd9420d6544ad5aa3b15dda8b53 GIT binary patch literal 429 zcmV;e0aE^nP)W9mb2%;jmj&H5qIY3TOc3et95ClOm$@}&5n>MoIfUYhcq_y=hH#;eLpG>J7lCI ze5ut>9s%IwueSP*G?qG6-Zn^qy>mc>t&uLbG!RRU~GyE*?B=!#OqM zc9>P<4L%TU-Y(uXAaiCVFu`O8NY-~khR@AP5*GkGBhLCWo9BPXRrlXXL=1u;2m)h1 XkH1y0Ykdb>00000NkvXXu0mjf#E!S_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-with-muxed-source/00015.png b/tests_zemu/snapshots/s-tx-with-muxed-source/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..f31780a85428eed611b7332b87e5675945e7e235 GIT binary patch literal 493 zcmVlL7fzNR9K6a zw4zngUEu4XuFbJFMBB*4c`N5az!LRQ(H@JSN}6h_Iy8lK<;XAL*{yI&`2%|HtpOPF zHB|hO(j!f!$;tAX)-<(t2Vh3Z_-71^fEd+6-)Rgk*;R@XFPMB(1Yr9giGd>;mb0DG zKtXeO>{g`MfD^jmAsdSZf=~|J0U+yTL6G!qFF-=T=#&`%w5ayvo=wF8PhLT9YC+bn jn6m`}fj}S-2xNEz6jxC6vcQM900000NkvXXu0mjfhfUwE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-with-muxed-source/00016.png b/tests_zemu/snapshots/s-tx-with-muxed-source/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41a4293e19cfc4425aa7b375680196271de66a GIT binary patch literal 495 zcmVs022)f?`41w!QF)&H0WQ=5KZG}Lx6@}$6~g1}fIZN0d99oy#InNs8TU0A)9 zG?+=Hh?XVUWF^sH0vCwLuVsS03E;oZu`5GUDLW|)@kYCNC{8u5f&#Z7&x|OuF!C$o z-5v4)AkG-?b(&t2*n*B!iM6{TPrIzJ?u;*jX1FsT&%ti&z~zs54Ny|B?v1ng lwD^p_DuW;hf*=T%;~xgcWWo_t{X_r&002ovPDHLkV1koo4Z14TLo4=~Hj4GYHUtdSr zHSn7|kP_VL0uX&tVpN=sJXEq(?$F9}lp%$N9LKpy<{;=MKemy4t3}qTmxd=wjji(84NEz-qD`V&c z;1mXb01H7AX^J$W4&c04BT3F3+LkC!+@>a-_1>-!o#Sa%M~V;F?D75Lhmg*>sY&W> z1?+{0Mg(XvF$X)@vkL`@dyr8z6x3U8eXmBLY7k$yxv~#;G3QD^q!(}p#n)WR_&G=1 z-^63qv6NXzx-b&XpjsEQTeC|F9zxrGhF^>Q-Lthf;m&fdvA&jX$IYu% z*e>L+DB!Ia+|$YN3p-&w+5~id1G2y0lVuFMQ(;GLGYHIbTHSSA-&@e|`Y35I345wQ z9V@{11RSg8U?1i)paHdfl>Du~pgvgQA>LuU~!AR0^w0001R;P_mA9lhot4#XSv7N^<1 zU9_Z>((y^#-e{>|6dQ+VYyLR{@N<9yox0K1xl5L(7Rk?rnEqE8Yug+4wa6?+S+M%b z<;h2sw>K&>ePTvcT})X4Iy72+b5XZ}?8);n0UU5LVu3e}c#cQ|oOiLvJRpn%mOxEe zv#dqt0e%kPAzVzIHx{o%RicvS1h&1Z*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-tx-with-muxed-source/00020.png b/tests_zemu/snapshots/s-tx-with-muxed-source/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00001.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ec205a318554d64ee7d4371f0ab6cd9388238 GIT binary patch literal 488 zcmVP)Ji`!4$bfmI={;Ww!^^@3j6(nb006f8+SXD^sr(ybd|uCR zCGX>Bb9)a%c18aK;-2ju0KvSSd++g_U(^s|EC(#5q*Fvg`ya3G4Q-TCO8FvlEXs>F z6Llrxx0Cs{plHi)db(p%kQfFhQ54VPlz*45^xF=Y1^uQMIXnf0*C$<1CT9NfSy|ej z4R%jKnR%W5#p{Uc{EguoE;!xpZK$};-bL8YZ>Ho)Nq68K7GVGYfd6TH8)}|z){Z>I z3#!-}>PpPap<$b7maT0-MIX#o!s}kv>HpSkYwaymq}Sf>$NrY*NG*MH3Yt|prx7B* zQ?}Q!H{mfYciDBr-X01KG`-^RX{-=x<|$n&@xF7@Wi`bka?b8H1$=F8}}l0000000000 e00000u*@%GUyBC(H00Z|M#S+rS)*p5&{4K05IKS;k8BNcoAc4RsL@C zVms5kR^Px7{&P=UbbyG&7}ekn-^2OHG@l~&=~A}SD$e&@bzzJ65k7g9Nma8Gk(6&b zF>j|@T*Ac+XsPCMjQv)Bq|c}p@}{cARn~WaT1?838}3Ld@2cxR^*8de1lc40sbi`U zd&oWU(gCFuadq|RR66abv9F2%005X~>~3i1d9^%rTCwb&wsv@q?I!hB6^(bbjm{H) zdC2mjJl%3F%SH3gsN(1ch4otz)1-Y4SHs!wlkndzKHsYSsL{Q(-wdcO+^JIiG4O1& z4(O+EJoogJnTypHvmw9X8@_heNxZwP zn_Fv!O#0JQq9*;x=!2D5g;qKVnLZebcmV(a000000000000000fMMQ7jzr;J@-K`4 O0000ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1031d9e1ec602fac2563233d6ecd580b03ab78b8 GIT binary patch literal 523 zcmV+m0`&cfP)7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00010.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..003d3d48ffaac210da9e5205071934b599c0a6bb GIT binary patch literal 355 zcmV-p0i6DcP)9rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00011.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00014.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00022.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00023.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00000.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ec205a318554d64ee7d4371f0ab6cd9388238 GIT binary patch literal 488 zcmVP)Ji`!4$bfmI={;Ww!^^@3j6(nb006f8+SXD^sr(ybd|uCR zCGX>Bb9)a%c18aK;-2ju0KvSSd++g_U(^s|EC(#5q*Fvg`ya3G4Q-TCO8FvlEXs>F z6Llrxx0Cs{plHi)db(p%kQfFhQ54VPlz*45^xF=Y1^uQMIXnf0*C$<1CT9NfSy|ej z4R%jKnR%W5#p{Uc{EguoE;!xpZK$};-bL8YZ>Ho)Nq68K7GVGYfd6TH8)}|z){Z>I z3#!-}>PpPap<$b7maT0-MIX#o!s}kv>HpSkYwaymq}Sf>$NrY*NG*MH3Yt|prx7B* zQ?}Q!H{mfYciDBr-X01KG`-^RX{-=x<|$n&@xF7@Wi`bka?b8H1$=F8}}l0000000000 e00000u*@%GUyB?Kz&DJ@6m4@dG^55GR zbpQOkZka|y#}SFm=cM=T{ygn+Nyiud=|+BQ3-{QsXaC+I|8Vkpqu{i6E-s%}+xtA8 z(W|#ig3&ZBZri^2)$R8tyLvd!?2Y@wJ;7Hk^*rzX6CqKnUa$WpKP#2%mH)?uhh}Kb zQ+%H_jcJO>(PwWiW@H{Y`K#_42hcCeGuM1O<*gp2GVyL$o$2*WyZvJ#l3&Niz50LQ zp8OXZrM<^jGyHQGRF}DR>ea_%A<_w^@BMzP=)QgHjYL+&)@d?~s-LISbMk9CG?zWU zTldx|(l(u|s$+Ir!Q+6>cZ{y^Y^n}hb$WTu%~|LE^&Y)cYHc`uwnKP`uhC8UV;-hA r<$I(mlEgk8slFlnk`)*>$RO`Cf6nXpk0GZy#X-WJu6{1-oD!M<9X7JT literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00004.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3740dc71fb04d59033c8435551ee52ea210e5f GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2#EZ-po0k?}6 zcL;ymuk!7Yvv5ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL?=YFXP&-i%opn`hDM(Pv!H)f6siDT+8gd zW`6Ys7e<#O)$@7c%4N<)FZ(ExIbUzr{Gi7*`K!6Nf3V*EeCgy0SN0|5smFWYaC>e=7}cc7&g> zjabSM)nT!_DkMtluS&9gCJO_@0p}32%3q81bcH)f4F zk~eYVe^$un}1#P3@?u~&tEHH^wNKF=d3U4i`k|{wCa4c&*`jS1O^5Y aXh_^wytr`Xiq#yyK%$EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00011.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..8f29aba58da8825776a1635b29e8195581e65b3e GIT binary patch literal 501 zcmV++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00000.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00001.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..36f530e6ec8c456c655fea1f15caf1250caf82a4 GIT binary patch literal 920 zcmV;J184k+P)JpFC0 zb={8Jh}(7V@fC@d(&B6xNO1>$Rtl47eDFFSgA5>Y+vr=r*7`h8-|mZj5YPbxaX8P8 zadE7bcl}G(C_IHYGP)L9|G?Dzy>8+)BHDE+rPkV4UQFah$Ti43EJ%EbuF1@6d8RN1 z35Z;RNH>5)QoQw3yY3mzajg}Gt})`;7`|Y}FF{3mi4_=h-v_(nSz$+b0ZULrtS7EK zuM*F1Y(96vDVrf?djhth;v{`xc?skEVoF<-v|VFgcIaB%bYjcI_?0c(|3JTexMktn zS?_?TNRlK;lCNX14F!8Il33t|66lNMk>z%{(;eF9Y8pu)mc>%Qk(g&1?G>+yh?)Yy z^J`D}^-$Hoil$~CCvtTQ6t|~{M1BeT5cQvb$o?WHI-qZYp|WOHJ;L`OIf8=na8F6FOAuM9GwF8V3S#v3>D;VtV6Q)tf;z~w$)J(554OUacdUkDxlv5VYUNNpo$@Fa0jGDg=q{!M@at{|_U>%@5)W)skW@lRaz@Av{&c8GBOYn#DJC<8}q$Ej_B)P-*FG^fN zBp)(ZR>Y#Is9z36Q0*w32f)QktqKk~R#ZJLqU8bf>6`*r!S`+NDBH79jME-1qSaPhmuJcCizvj`HQ)5;^YI2t7+Gx$x0c3R82TQmpW^7ZQ(^!SrfGq?c$V?47u|=>5 uN*saqa<75LNHlySHA#{rNs=T3_wwLDmU@{kHlTFphD3S0xSl1;{R4@VnAj##{mEU0BrXf$s9t+f1c+#UXHsE zch#xJ6o!Z)rpHA6OkRS+mpf;2{_a5!O*Xr3hVFrW{Qk3~{PCtu@x)AYq<>6*VQCG3*yp|E2aatzK06ol$ z)6)tu4dHw^=bDSG)dbC|HPI`@PMXzo(flRocn{9n*~IhtTv-}VMNjS1Bb=}VCB^rw zzr3~G^_MW7v7XEEQkP6Ph8AaN)UyfKpD(7QMM(#6X%nt&Hezqrg^P@v&u{-ketfvM zkms7x0aGFY06fmnF|?m`fD?y2ce*HCe>^u2$IYnzFzcKk4sh1Z!PWHf6vrKg+srRv zhvMbW?P64W#{QDKpm8gDrRP>^zug_6KirE;cI5(~QmoFa6F+Uj?e2g@YtGz3ZEgE2 z+`I=wpSct4A!opfKJRH?$20vG-Fe28OV_AJeQ|jl(J1Y)!*J(|n{_?5^`o2n;Nh*m zAAN8qR-rpJ8ks&=isl6X000000000000000005Tx0pkp*>z&CrTmS$707*qoM6N<$ Ef>?Kz&DJ@6m4@dG^55GR zbpQOkZka|y#}SFm=cM=T{ygn+Nyiud=|+BQ3-{QsXaC+I|8Vkpqu{i6E-s%}+xtA8 z(W|#ig3&ZBZri^2)$R8tyLvd!?2Y@wJ;7Hk^*rzX6CqKnUa$WpKP#2%mH)?uhh}Kb zQ+%H_jcJO>(PwWiW@H{Y`K#_42hcCeGuM1O<*gp2GVyL$o$2*WyZvJ#l3&Niz50LQ zp8OXZrM<^jGyHQGRF}DR>ea_%A<_w^@BMzP=)QgHjYL+&)@d?~s-LISbMk9CG?zWU zTldx|(l(u|s$+Ir!Q+6>cZ{y^Y^n}hb$WTu%~|LE^&Y)cYHc`uwnKP`uhC8UV;-hA r<$I(mlEgk8slFlnk`)*>$RO`Cf6nXpk0GZy#X-WJu6{1-oD!M<9X7JT literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3740dc71fb04d59033c8435551ee52ea210e5f GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2#EZ-po0k?}6 zcL;ymuk!7Yvv5ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL?=YFXP&-i%opn`hDM(Pv!H)f6siDT+8gd zW`6Ys7e<#O)$@7c%4N<)FZ(ExIbUzr{Gi7*`K!6Nf3V*EeCgy0SN0|5smFWYaC>e=7}cc7&g> zjabSM)nT!_DkMtluS&9gCJO_@0p}32%3q81bcH)f4F zk~eYVe^$un}1#P3@?u~&tEHH^wNKF=d3U4i`k|{wCa4c&*`jS1O^5Y aXh_^wytr`Xiq#yyK%$EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..8f29aba58da8825776a1635b29e8195581e65b3e GIT binary patch literal 501 zcmV++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00000.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..afb59c82bdf66ce527f79cc590f0c208dcfcd832 GIT binary patch literal 933 zcmV;W16urvP)RvHU!=Fsna8)5>9pN-!7wbtV}db=-5@~}_~5zkKLu%YM+b}d$3t20DW zNr#;-NDPBhD4Mr%YR^648n>(vcI^Xw<93I+-vt%4i4|ArehjYGXN4=&+u(v4@IC#P z*RQ1OC(SqAa7gABu{|5YP`F4>GMlhpAC@$yWJQgA+pudGbo!Eo@JB+pPoNJUo|5p} zSs#F1nh-(=`E|r$Xfi=~Vx_1=;3(=_l}i*>mM&y0Zqy6AunH|{p;mrk6|y-Snok?# zQ*z-6OOHCV6jY|48M>`i0=1gsl2pV-u0G?yGuNG@20+i0?eXuHcw8TJ=ggWJ6784f ztn`)@;2ioj+651Jwxlx7&Q$JqL60w0p-fmOzs+O@FDY%pN;|WmSMY|j{;q`ukt<-L zGnj4^9&qjj>emIVFJ$P-p|2^T8Y>KiU1U0is(SU`Fx@^L)5x^`Z2(i#`ZvQdcoKS{ zCkc$qF}M_M-c&Z!IS~43MeB?sVmO`t)cG$f?P~o6JGFvQDA^CA{gkb*@BoMUTt{3( zx97}*C0{&bB#i!*sh_M+lo2w$Sj?P+VVbF`uU0<;YbEWH|CVIjNis9D-plzg(S@Vf zoX*|~=x-#nM_b>nuU;r6a31Fm(Bv#2f&_B(58q2bn(L_Ow!PR}h}BEd7iIRp4KXMogb+dqAs6u<+cW_#IwKxd00000NkvXX Hu0mjfRK~si literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..34178afd8358551c6c4fc34a57629e6da9f47bbe GIT binary patch literal 614 zcmV-s0-61ZP)}9H;)NJ9{lBM_DiBn(*lhy<00000U^+h|ol7bFFZ9fH=<<3v~Xin6HCZ-8{NL1S9ebjb2_)q zadV;_A4L?jL>Q_x?R|Ci>P%Pxr4;g#PiOjQ3bhjP95g=dC~TRgxs?$r{q#s!0eYI7 z%hPj_rZAt*oYN%hh2Ye*MvRI%NLeFyke`CKPv^XyO|<80@9^F8C2 z_qMxw4dWf-UL7yhM8YxDT%iXwn{eFTlu%OA4m54T!Db`&cCB1=oP2)!C-CFLy-L29 zlmSTb1ONa4P?S%&TsPR%rbI$5*BZ2G)1SqKUc`E6`hBmz5+T-J2Ik`7Tv_Nno1~Q@ z3ai+dzhZz%W+@_u7uw3$CC2(t{uzDE$`oWa3-U>@mV@U<3q2B2kRIp4YBl_;AT^mv zOk0l-)^kZYx)pP&#)Z7ah4sj4=;=(D+ z1#XZL{b?AXM)W6xF}M?Cp*uMVGRELiba;m@<;OA4tn^HB@7|nu)bii}?dkbCylRA~ zWQ;dHmEXm@Vq7at6Z5&V`2JGFYEyDD_YXku&!;Sc3ZN;U$+{^h5ii6mB(8M_plLNc zH;>^My2LsF00000000000000000000002NbfANC#0Db6lj{pDw07*qoM6N<$g7Nhm AVgLXD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9d65b3196dba58168876c2a69cecd733e9f80d GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{!ba4!+nDh2V;HG8;9*4kR z%d8Xsd!LHC*M6C&wPD57hT`+#-DYJ%4hk$lO$j@uKi=$`@>?Kz&DJ@6m4@dG^55GR zbpQOkZka|y#}SFm=cM=T{ygn+Nyiud=|+BQ3-{QsXaC+I|8Vkpqu{i6E-s%}+xtA8 z(W|#ig3&ZBZri^2)$R8tyLvd!?2Y@wJ;7Hk^*rzX6CqKnUa$WpKP#2%mH)?uhh}Kb zQ+%H_jcJO>(PwWiW@H{Y`K#_42hcCeGuM1O<*gp2GVyL$o$2*WyZvJ#l3&Niz50LQ zp8OXZrM<^jGyHQGRF}DR>ea_%A<_w^@BMzP=)QgHjYL+&)@d?~s-LISbMk9CG?zWU zTldx|(l(u|s$+Ir!Q+6>cZ{y^Y^n}hb$WTu%~|LE^&Y)cYHc`uwnKP`uhC8UV;-hA r<$I(mlEgk8slFlnk`)*>$RO`Cf6nXpk0GZy#X-WJu6{1-oD!M<9X7JT literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3740dc71fb04d59033c8435551ee52ea210e5f GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2#EZ-po0k?}6 zcL;ymuk!7Yvv5ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL?=YFXP&-i%opn`hDM(Pv!H)f6siDT+8gd zW`6Ys7e<#O)$@7c%4N<)FZ(ExIbUzr{Gi7*`K!6Nf3V*EeCgy0SN0|5smFWYaC>e=7}cc7&g> zjabSM)nT!_DkMtluS&9gCJO_@0p}32%3q81bcH)f4F zk~eYVe^$un}1#P3@?u~&tEHH^wNKF=d3U4i`k|{wCa4c&*`jS1O^5Y aXh_^wytr`Xiq#yyK%$EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..8f29aba58da8825776a1635b29e8195581e65b3e GIT binary patch literal 501 zcmV++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00000.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00001.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ec205a318554d64ee7d4371f0ab6cd9388238 GIT binary patch literal 488 zcmVP)Ji`!4$bfmI={;Ww!^^@3j6(nb006f8+SXD^sr(ybd|uCR zCGX>Bb9)a%c18aK;-2ju0KvSSd++g_U(^s|EC(#5q*Fvg`ya3G4Q-TCO8FvlEXs>F z6Llrxx0Cs{plHi)db(p%kQfFhQ54VPlz*45^xF=Y1^uQMIXnf0*C$<1CT9NfSy|ej z4R%jKnR%W5#p{Uc{EguoE;!xpZK$};-bL8YZ>Ho)Nq68K7GVGYfd6TH8)}|z){Z>I z3#!-}>PpPap<$b7maT0-MIX#o!s}kv>HpSkYwaymq}Sf>$NrY*NG*MH3Yt|prx7B* zQ?}Q!H{mfYciDBr-X01KG`-^RX{-=x<|$n&@xF7@Wi`bka?b8H1$=F8}}l0000000000 e00000u*@%GUyBC(H00Z|M#S+rS)*p5&{4K05IKS;k8BNcoAc4RsL@C zVms5kR^Px7{&P=UbbyG&7}ekn-^2OHG@l~&=~A}SD$e&@bzzJ65k7g9Nma8Gk(6&b zF>j|@T*Ac+XsPCMjQv)Bq|c}p@}{cARn~WaT1?838}3Ld@2cxR^*8de1lc40sbi`U zd&oWU(gCFuadq|RR66abv9F2%005X~>~3i1d9^%rTCwb&wsv@q?I!hB6^(bbjm{H) zdC2mjJl%3F%SH3gsN(1ch4otz)1-Y4SHs!wlkndzKHsYSsL{Q(-wdcO+^JIiG4O1& z4(O+EJoogJnTypHvmw9X8@_heNxZwP zn_Fv!O#0JQq9*;x=!2D5g;qKVnLZebcmV(a000000000000000fMMQ7jzr;J@-K`4 O0000ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00011.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..003d3d48ffaac210da9e5205071934b599c0a6bb GIT binary patch literal 355 zcmV-p0i6DcP)9rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00017.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00023.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00024.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e3760f173a82de5b7f9e5d26f9ed652496714d GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2#Am1Sc0oRKc zcL;ymzvO1Oyh~2wtgek`vfux_)FJp>bjB)4pe6`tFt~H~?(w+Zmv+@m%DY0RY1gWW zIe2N>uQ(MuZyKZ45vC1sY`d0kGM{(D(ViqU&3s`dzE1uU!vtC zMjijVYxjAy#xdlcSDx!A>+s?IhO33I(l&4%xT|`r^PP%n+P}^_TZ^?q>g|kX^z%GZ zW{&Y*6Yo6z^?U!^)PEfowy%@FvD{lU^_fH?(~DQ@I%^K!xF@>3nLi@PzUyCfK-I=l z)7!JZZE9Hc@$UBH3%4-sle+dVQ8M@i!?fjx3S^Vt*|>hu%~-ze)WO$rF8R)@x%c0? ov-()(dBvKuaojMUGB6k%7Jec)@~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00025.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00000.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00001.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..afb59c82bdf66ce527f79cc590f0c208dcfcd832 GIT binary patch literal 933 zcmV;W16urvP)RvHU!=Fsna8)5>9pN-!7wbtV}db=-5@~}_~5zkKLu%YM+b}d$3t20DW zNr#;-NDPBhD4Mr%YR^648n>(vcI^Xw<93I+-vt%4i4|ArehjYGXN4=&+u(v4@IC#P z*RQ1OC(SqAa7gABu{|5YP`F4>GMlhpAC@$yWJQgA+pudGbo!Eo@JB+pPoNJUo|5p} zSs#F1nh-(=`E|r$Xfi=~Vx_1=;3(=_l}i*>mM&y0Zqy6AunH|{p;mrk6|y-Snok?# zQ*z-6OOHCV6jY|48M>`i0=1gsl2pV-u0G?yGuNG@20+i0?eXuHcw8TJ=ggWJ6784f ztn`)@;2ioj+651Jwxlx7&Q$JqL60w0p-fmOzs+O@FDY%pN;|WmSMY|j{;q`ukt<-L zGnj4^9&qjj>emIVFJ$P-p|2^T8Y>KiU1U0is(SU`Fx@^L)5x^`Z2(i#`ZvQdcoKS{ zCkc$qF}M_M-c&Z!IS~43MeB?sVmO`t)cG$f?P~o6JGFvQDA^CA{gkb*@BoMUTt{3( zx97}*C0{&bB#i!*sh_M+lo2w$Sj?P+VVbF`uU0<;YbEWH|CVIjNis9D-plzg(S@Vf zoX*|~=x-#nM_b>nuU;r6a31Fm(Bv#2f&_B(58q2bn(L_Ow!PR}h}BEd7iIRp4KXMogb+dqAs6u<+cW_#IwKxd00000NkvXX Hu0mjfRK~si literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..34178afd8358551c6c4fc34a57629e6da9f47bbe GIT binary patch literal 614 zcmV-s0-61ZP)}9H;)NJ9{lBM_DiBn(*lhy<00000U^+h|ol7bFFZ9fH=<<3v~Xin6HCZ-8{NL1S9ebjb2_)q zadV;_A4L?jL>Q_x?R|Ci>P%Pxr4;g#PiOjQ3bhjP95g=dC~TRgxs?$r{q#s!0eYI7 z%hPj_rZAt*oYN%hh2Ye*MvRI%NLeFyke`CKPv^XyO|<80@9^F8C2 z_qMxw4dWf-UL7yhM8YxDT%iXwn{eFTlu%OA4m54T!Db`&cCB1=oP2)!C-CFLy-L29 zlmSTb1ONa4P?S%&TsPR%rbI$5*BZ2G)1SqKUc`E6`hBmz5+T-J2Ik`7Tv_Nno1~Q@ z3ai+dzhZz%W+@_u7uw3$CC2(t{uzDE$`oWa3-U>@mV@U<3q2B2kRIp4YBl_;AT^mv zOk0l-)^kZYx)pP&#)Z7ah4sj4=;=(D+ z1#XZL{b?AXM)W6xF}M?Cp*uMVGRELiba;m@<;OA4tn^HB@7|nu)bii}?dkbCylRA~ zWQ;dHmEXm@Vq7at6Z5&V`2JGFYEyDD_YXku&!;Sc3ZN;U$+{^h5ii6mB(8M_plLNc zH;>^My2LsF00000000000000000000002NbfANC#0Db6lj{pDw07*qoM6N<$g7Nhm AVgLXD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00004.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..45b232ee0b376a3e717357408eac8d4761476839 GIT binary patch literal 420 zcmV;V0bBlwP)C(H00Z|M#S+rS)*p5&{4K05IKS;k8BNcoAc4RsL@C zVms5kR^Px7{&P=UbbyG&7}ekn-^2OHG@l~&=~A}SD$e&@bzzJ65k7g9Nma8Gk(6&b zF>j|@T*Ac+XsPCMjQv)Bq|c}p@}{cARn~WaT1?838}3Ld@2cxR^*8de1lc40sbi`U zd&oWU(gCFuadq|RR66abv9F2%005X~>~3i1d9^%rTCwb&wsv@q?I!hB6^(bbjm{H) zdC2mjJl%3F%SH3gsN(1ch4otz)1-Y4SHs!wlkndzKHsYSsL{Q(-wdcO+^JIiG4O1& z4(O+EJoogJnTypHvmw9X8@_heNxZwP zn_Fv!O#0JQq9*;x=!2D5g;qKVnLZebcmV(a000000000000000fMMQ7jzr;J@-K`4 O0000ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00008.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..003d3d48ffaac210da9e5205071934b599c0a6bb GIT binary patch literal 355 zcmV-p0i6DcP)9rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00013.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00018.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00024.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00025.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00000.png b/tests_zemu/snapshots/sp-fee-bump-tx/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00001.png b/tests_zemu/snapshots/sp-fee-bump-tx/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ec205a318554d64ee7d4371f0ab6cd9388238 GIT binary patch literal 488 zcmVP)Ji`!4$bfmI={;Ww!^^@3j6(nb006f8+SXD^sr(ybd|uCR zCGX>Bb9)a%c18aK;-2ju0KvSSd++g_U(^s|EC(#5q*Fvg`ya3G4Q-TCO8FvlEXs>F z6Llrxx0Cs{plHi)db(p%kQfFhQ54VPlz*45^xF=Y1^uQMIXnf0*C$<1CT9NfSy|ej z4R%jKnR%W5#p{Uc{EguoE;!xpZK$};-bL8YZ>Ho)Nq68K7GVGYfd6TH8)}|z){Z>I z3#!-}>PpPap<$b7maT0-MIX#o!s}kv>HpSkYwaymq}Sf>$NrY*NG*MH3Yt|prx7B* zQ?}Q!H{mfYciDBr-X01KG`-^RX{-=x<|$n&@xF7@Wi`bka?b8H1$=F8}}l0000000000 e00000u*@%GUyBC(H00Z|M#S+rS)*p5&{4K05IKS;k8BNcoAc4RsL@C zVms5kR^Px7{&P=UbbyG&7}ekn-^2OHG@l~&=~A}SD$e&@bzzJ65k7g9Nma8Gk(6&b zF>j|@T*Ac+XsPCMjQv)Bq|c}p@}{cARn~WaT1?838}3Ld@2cxR^*8de1lc40sbi`U zd&oWU(gCFuadq|RR66abv9F2%005X~>~3i1d9^%rTCwb&wsv@q?I!hB6^(bbjm{H) zdC2mjJl%3F%SH3gsN(1ch4otz)1-Y4SHs!wlkndzKHsYSsL{Q(-wdcO+^JIiG4O1& z4(O+EJoogJnTypHvmw9X8@_heNxZwP zn_Fv!O#0JQq9*;x=!2D5g;qKVnLZebcmV(a000000000000000fMMQ7jzr;J@-K`4 O0000ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00011.png b/tests_zemu/snapshots/sp-fee-bump-tx/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..003d3d48ffaac210da9e5205071934b599c0a6bb GIT binary patch literal 355 zcmV-p0i6DcP)9rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00017.png b/tests_zemu/snapshots/sp-fee-bump-tx/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00023.png b/tests_zemu/snapshots/sp-fee-bump-tx/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00024.png b/tests_zemu/snapshots/sp-fee-bump-tx/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00000.png b/tests_zemu/snapshots/sp-hash-signing-approve/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00001.png b/tests_zemu/snapshots/sp-hash-signing-approve/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..61e944eb510d87ce2b579484a5545281dfc5fc5e GIT binary patch literal 459 zcmV;+0W|)JP)CfIRlSPXe#5Q2?(qz$D#o4ZIfMGF%p5bG$p91TG73C10}xcv*X-hY&s%$q>G0 zKnTHI#tml$c=|{0?oRMMJAhN%r5gYM$l|%;t)8S;D*NSb*MXfc+08N&)mnbweO2i~ z2%)UO??TK`_RHvV%$oIkjCAEosE4@ihKdiL1{baAIzngN&@@NuF}`;b1^@tn zCYASs%yZb-r_0wxHYT z+xtR&s)-~Du-VqX35fzM9W@wugO$2h&%XzBZbA&qmq_Z9`2{eW5PR7fxVfmgPbtbg zp`LkQ9eApNRPF({rLq!ksCV8KP6Yq}0001v_yNuI??;B-2?GEC002ovPDHLkV1g6^ B%?1Df literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00002.png b/tests_zemu/snapshots/sp-hash-signing-approve/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..efb147a70525a4721c1801da8ba4176db0d18cc5 GIT binary patch literal 895 zcmV-_1AzRAP)S@#3`CVoI${4Msh50s!a;Cxc}a@1@5`nr0=z(Q?c*SX5JCtcC29;^%GECmplCx(`{vBeI<2}_yaQR-XyzrfDE{*P%SPbw$?gPrf4fP z?N;0rK$?(+SDw#r#e6*6eNB0P{>rI92qEOZ@R2`8QpPCRuV14^+{&tc)PlTiByU+0 zQDM|t)2rrva6EGb6X!@O82jpGdr1b8XYqMCVkoa{O;`ylPoJ(?C^$aXqS{2-D_0dW+hLn zq()L}^vE?DC7^E0dFq_Yw4hfbw+dI-13$Q}*$-XvB=`tdIzcJa?NqbNOP6`ZQsP3QowVETJ!&YZ#>`uJeHbv2IEE`uh@r*=v~SM8 zB!AR&rkQaLpBA_OOhO1Dgb?ya$^IJ}>3qF~1Hz%wAe$1Sm0c4nN_n;UDB^$eOMQ|q z_u;CH?$@MHmPd_%3TyNA#FMB&+vadV*4?-X&j^ag?;V{`yg!$9 z4OS8dY~-<~Wtg&iE|;k%C$+7H&X~b9XIE*!jYgq=xIxuyF2I57%;nJ`Xt~ld{}WTR zjfP!%^aLDN&B2YJXTSjN`H@Enml`_UpW2W32#KtKu?RW;Y@J-SC4>+{2qEMVd;??Q V8g`Q7WUT-I002ovPDHLkV1iZHt0n*d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00003.png b/tests_zemu/snapshots/sp-hash-signing-approve/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f6dbf945fdeb1a0de5ddd245471ff7df9335d GIT binary patch literal 478 zcmV<40U`d0P)ENb5Oic0%#tf+t17{^*`(VEwvAIq%h&QE%c4z&a7Osut9QHY;WSw96YPnW*} zL_o!A5Pefm7Gut;ffm<}XRKSyvKGyYR;>Wh+~C|lRzn}$V7NuGsmYOR$sSM^Y^t?W z_JZ!;I?}MycCX|C*xKEvf=5mt3r8lGpUrpkPrT;CEqu{eZgqZ6P&YbjJGEx?flb(X z@)5iJcsr+6h)T(atKU>UT*?5Xv;+Wvr{u@bxb5XYJU)t-hVi@5cD@Wxmg=LeQ|);7 ztlqr=^&6aXFn(f+)L@l&u07eRPZ6{F8Ty#8*8B5e+e*5Xy9~gtK78q8lU`xmss9I9 zQu;q;`R!P&t^bwlEq=as4%7>+KOw9-Px!Af=xtJvV`@_0Z6}Zea7p9ZpQ7!?vo-9x zFa_R@Z;c=z?&U0Jo&Z@H zuKyH~yW8Gc)R^rh*(!oMfUTT)0)`&^F0*OWIIDuEdBq-ZX92AA9jo&BEm!i22>|3O z35XUnKE^91;I2sOkug{$aQT*Y^)!6EB7JWXFBZ!q{C4IiVAV(nA%qZz4}4jwE~*YA zPj8X)oZBkl;NAidoksgr!;WfJQSdq1{Q&}6&OwJEbvj~^VZrT0(t>$T3&P8xz3rfb zbW4bxk+56wC%}Ckuj_J4L9G?PseT3l5nP92ln7i!BVjGNhE}2q%#1$)cjDTNm#;aM zK8a_49yOpv{WNVRhYd_3K*YG(goI0q+T6*`HNWX{1>WO^Mn zbfz1iKDM5g@?#y>g6By0^f{zxj-Fx@2k2#3qNeJpUbXDFBlS{Ft?YcPK_+^agrtae z+SL`UCf!{lT{K{K*InZED#DPYy1e&3x@E^pzBa_$s?P2Jx>k7QS_5-M!^ph^AL5b_ z<3@MsO`@A6nRHjBTPIa^ZPivCuJmj5u98thCl$x8u-31i3Zz|)0RBY^`rWiE&V)Vi z?`U^Pmci^t*q8lDLLX$hO{QD>(xGL3gL0Kr>0l|5AV_ei(kIwEA%qY@2x%EpL#@-a z^;*~&fj(*-3L|nRwhT$I#W*|Sms|Dxy8a{z)D>5CQSA}SkaMKDYfM}PZmwPseG{%D z;-wtZ!50&-Jl!GT$yjnbQ8_yC*`$3f?A&s1p=vM1d+^nAB#r7nh}^nr70fs%wIEf7 zye-!1lgX8tO(;J@5~jqJNG+oOjvf*(=anz@HeM^JN#fHG{de>oZdANn#W%|S5C=*S x5ESv2kdrfmMmYxSaFII@6G8|fgb?x~{sEv4Gl~$f%g_J-002ovPDHLkV1jakli~mX literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00005.png b/tests_zemu/snapshots/sp-hash-signing-approve/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ab081997ee0fbf297fbf3848326a5dd251a6b1 GIT binary patch literal 440 zcmV;p0Z0CcP)$;>$JWaVm&nb1UvylPyL<9in7(JR`uMp_;+k-PAC^2#YGesuSxdUvWzwU6_x zt#u>iSxFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YaC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00000.png b/tests_zemu/snapshots/sp-hash-signing-reject/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00001.png b/tests_zemu/snapshots/sp-hash-signing-reject/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..61e944eb510d87ce2b579484a5545281dfc5fc5e GIT binary patch literal 459 zcmV;+0W|)JP)CfIRlSPXe#5Q2?(qz$D#o4ZIfMGF%p5bG$p91TG73C10}xcv*X-hY&s%$q>G0 zKnTHI#tml$c=|{0?oRMMJAhN%r5gYM$l|%;t)8S;D*NSb*MXfc+08N&)mnbweO2i~ z2%)UO??TK`_RHvV%$oIkjCAEosE4@ihKdiL1{baAIzngN&@@NuF}`;b1^@tn zCYASs%yZb-r_0wxHYT z+xtR&s)-~Du-VqX35fzM9W@wugO$2h&%XzBZbA&qmq_Z9`2{eW5PR7fxVfmgPbtbg zp`LkQ9eApNRPF({rLq!ksCV8KP6Yq}0001v_yNuI??;B-2?GEC002ovPDHLkV1g6^ B%?1Df literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00002.png b/tests_zemu/snapshots/sp-hash-signing-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..efb147a70525a4721c1801da8ba4176db0d18cc5 GIT binary patch literal 895 zcmV-_1AzRAP)S@#3`CVoI${4Msh50s!a;Cxc}a@1@5`nr0=z(Q?c*SX5JCtcC29;^%GECmplCx(`{vBeI<2}_yaQR-XyzrfDE{*P%SPbw$?gPrf4fP z?N;0rK$?(+SDw#r#e6*6eNB0P{>rI92qEOZ@R2`8QpPCRuV14^+{&tc)PlTiByU+0 zQDM|t)2rrva6EGb6X!@O82jpGdr1b8XYqMCVkoa{O;`ylPoJ(?C^$aXqS{2-D_0dW+hLn zq()L}^vE?DC7^E0dFq_Yw4hfbw+dI-13$Q}*$-XvB=`tdIzcJa?NqbNOP6`ZQsP3QowVETJ!&YZ#>`uJeHbv2IEE`uh@r*=v~SM8 zB!AR&rkQaLpBA_OOhO1Dgb?ya$^IJ}>3qF~1Hz%wAe$1Sm0c4nN_n;UDB^$eOMQ|q z_u;CH?$@MHmPd_%3TyNA#FMB&+vadV*4?-X&j^ag?;V{`yg!$9 z4OS8dY~-<~Wtg&iE|;k%C$+7H&X~b9XIE*!jYgq=xIxuyF2I57%;nJ`Xt~ld{}WTR zjfP!%^aLDN&B2YJXTSjN`H@Enml`_UpW2W32#KtKu?RW;Y@J-SC4>+{2qEMVd;??Q V8g`Q7WUT-I002ovPDHLkV1iZHt0n*d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00003.png b/tests_zemu/snapshots/sp-hash-signing-reject/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f6dbf945fdeb1a0de5ddd245471ff7df9335d GIT binary patch literal 478 zcmV<40U`d0P)ENb5Oic0%#tf+t17{^*`(VEwvAIq%h&QE%c4z&a7Osut9QHY;WSw96YPnW*} zL_o!A5Pefm7Gut;ffm<}XRKSyvKGyYR;>Wh+~C|lRzn}$V7NuGsmYOR$sSM^Y^t?W z_JZ!;I?}MycCX|C*xKEvf=5mt3r8lGpUrpkPrT;CEqu{eZgqZ6P&YbjJGEx?flb(X z@)5iJcsr+6h)T(atKU>UT*?5Xv;+Wvr{u@bxb5XYJU)t-hVi@5cD@Wxmg=LeQ|);7 ztlqr=^&6aXFn(f+)L@l&u07eRPZ6{F8Ty#8*8B5e+e*5Xy9~gtK78q8lU`xmss9I9 zQu;q;`R!P&t^bwlEq=as4%7>+KOw9-Px!Af=xtJvV`@_0Z6}Zea7p9ZpQ7!?vo-9x zFa_R@Z;c=z?&U0Jo&Z@H zuKyH~yW8Gc)R^rh*(!oMfUTT)0)`&^F0*OWIIDuEdBq-ZX92AA9jo&BEm!i22>|3O z35XUnKE^91;I2sOkug{$aQT*Y^)!6EB7JWXFBZ!q{C4IiVAV(nA%qZz4}4jwE~*YA zPj8X)oZBkl;NAidoksgr!;WfJQSdq1{Q&}6&OwJEbvj~^VZrT0(t>$T3&P8xz3rfb zbW4bxk+56wC%}Ckuj_J4L9G?PseT3l5nP92ln7i!BVjGNhE}2q%#1$)cjDTNm#;aM zK8a_49yOpv{WNVRhYd_3K*YG(goI0q+T6*`HNWX{1>WO^Mn zbfz1iKDM5g@?#y>g6By0^f{zxj-Fx@2k2#3qNeJpUbXDFBlS{Ft?YcPK_+^agrtae z+SL`UCf!{lT{K{K*InZED#DPYy1e&3x@E^pzBa_$s?P2Jx>k7QS_5-M!^ph^AL5b_ z<3@MsO`@A6nRHjBTPIa^ZPivCuJmj5u98thCl$x8u-31i3Zz|)0RBY^`rWiE&V)Vi z?`U^Pmci^t*q8lDLLX$hO{QD>(xGL3gL0Kr>0l|5AV_ei(kIwEA%qY@2x%EpL#@-a z^;*~&fj(*-3L|nRwhT$I#W*|Sms|Dxy8a{z)D>5CQSA}SkaMKDYfM}PZmwPseG{%D z;-wtZ!50&-Jl!GT$yjnbQ8_yC*`$3f?A&s1p=vM1d+^nAB#r7nh}^nr70fs%wIEf7 zye-!1lgX8tO(;J@5~jqJNG+oOjvf*(=anz@HeM^JN#fHG{de>oZdANn#W%|S5C=*S x5ESv2kdrfmMmYxSaFII@6G8|fgb?x~{sEv4Gl~$f%g_J-002ovPDHLkV1jakli~mX literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00005.png b/tests_zemu/snapshots/sp-hash-signing-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ab081997ee0fbf297fbf3848326a5dd251a6b1 GIT binary patch literal 440 zcmV;p0Z0CcP)$;>$JWaVm&nb1UvylPyL<9in7(JR`uMp_;+k-PAC^2#YGesuSxdUvWzwU6_x zt#u>iSxFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YMjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00008.png b/tests_zemu/snapshots/sp-hash-signing-reject/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00000.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00001.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00003.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000t8%mH;UX7{Z>}%lfTYZ(kVZm9h7#w!x$Yn`_D`Da9wgzWQpgpdOqqeJnKXC(jVDwYsCB~pzPLt zD=oWUu1;l8q6m=plryKbzqhj-`z$_sP(08)Gl-nL$y#RwrLsc(XNPQi&FJ&}; zyW5pnYksX%zx99JZ1&Tt{<#}=BKv(|di=naK2-Dq)MGOHQWoNxa1^ODWtOsm-Ekq00000NkvXXu0mjfA)(>B literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00007.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..924a0fdab5262e278ea9a8b7aa45445af3e5d6ac GIT binary patch literal 951 zcmV;o14#UdP)#q9}@@D2n2B{zQMA=XpIG z#}TDG$7SmULnP;UN@uKlGR5t>s4ah=ad?W}fd25BUDu*YjJ%S)uSNot`eEEUjwAJ~ zo9vn0Qr0tmn!Dzr6t!@rSGG~|881GvA9%)BKzCHNJnHmj=7{Y?@Kctu_2AhT`7b+5 zItikU`j-T_l&=6693_B@WOzvjl}!0+yW;n-WB{UdDl?3^hzq_P{nv8Kc`5{r^}Ech zqEKo`7I7!?Sjt1VhDhtrHp>d zmjf_=yJHbD=?vJJ+Rf(ovUcNGFq~*tM^~S>FVnJm#H!Ml8QoKl5}#7!K2vjMc;<DG*o&RC`;y&AbyxWXR!;MQgzZpoA6U%b*uN}+C}(k7?2 zI_M_sUc~xEX$L8BA<;^D+U_@MD5=KGTe%(vOaRAt#fdRQeVRDgM^8_s=%UXXUE-nI z)kv-PwitK$%8R4>2dn7p&^G|J$3)E;Yi1sTW`t<#u9~MyR@icuz0@V3_JBSHY2Sgv z-z{xjRf7LYok>re!@I@juStrcD2k#e{!`Gmp^?saH*r8XR2pO|F^cD;{X5v005ZIhbg_T>mHov=}F$> z-fO}}ja=82`a#-kde1w~=L-h^h+=&iOxxGoQ3_2j7o=Rz@s9JAnsuIMYFXK@Og2|( zv)a?#+|H9!2`jDAhmzy?Q#s+Oxh)GPSN}(}*!IZ&yae_6 zT~4m5P`Z&^VkUB*WFRg1)M!BG9Z;%-_jo8&bJB%owDhV#a##f+b%#`_g+-4%)Dad# zscON)x;jZ3r)?Qxd7xyw{{g!(Ds4SI_CMhvR59P@pDh3Y+`M=P#FVFD_3W#jj8%V0 z$`AES)IG~st=@gq>3#w63tA6!o2W&DH@~HsF^65Ap)y17gdN_@@!Gm;*(CreRnvHE zY~JhKrSx<|hco2-y2_Vv^=tJ9m)Hg(|GrkXI@@q;^z@wzz?Ix%Lu*5jo z)YP}}Qw=E#OHg9rR;lqc_+&W5cP zzMb^}sEPyt0KnHHAM5Jol2vmG9aHR5>QstxX{cQBKiXfx8-PU_XOpP|JP{6uEi$MZQ;_5G z`D3b=eyH(gtyy5FzWLo&n-uJgCxtbAE zfg-RIjKP~A3%$vplQ9Nck=;A^Hk59gt@@Vbwh6mDP+*~KLp*rp(-bl*3h0qd(lP5N>h zMpe~MdlE!ffT|V8-N;GtlvtT$(PQm9NGrjfNO$L-nK%jlGK!^*>&eiMdz zsx%TY>rnq?+!Tqgwf0eUs@f$*H2aIm7nRN_{3hhi_KABb8^t*5(jr!C)x12bUYuWu z8$V5qG{%{dPJPQ`u%^YVg4E?K)pgKXXaLykh)C_(a uMNsC*>92GS3`Sy+o2dW*000009OW+<&Qu}gpm@vx00006%X7RLGZ223d>5y~JrXZ}dBbG;F6P5ic+#^qXPHWftlZ=D~GeC^W>Rn$Wr<$adeWkfNr5a0uo8S^eDj-pIX2We)+1OxIG_Zr zTM0xT=s&z3Bpk)+Qc)$eW>+rkG(2hxRh_2@8<&zr0~v74BqRHmQAstje=+ETouCTs z1ncllbb3AChK9$%Ka1l!vs>@14lufo4uzB7cb;L%S8w>oRUpg7j$*y=FV`j1u&Zc}54EKlK&pbJkr| zX#X0}<;ad$Gpa%|_NGDt00000000000000000000004kD@CyUu8r4MX$cF#`002ov JPDHLkV1f!X5SIV| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00011.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00012.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00013.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge/00000.png b/tests_zemu/snapshots/sp-op-account-merge/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge/00001.png b/tests_zemu/snapshots/sp-op-account-merge/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge/00003.png b/tests_zemu/snapshots/sp-op-account-merge/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000t8%mH;UX7{Z>}%lfTYZ(kVZm9h7#w!x$Yn`_D`Da9wgzWQpgpdOqqeJnKXC(jVDwYsCB~pzPLt zD=oWUu1;l8q6m=plryKbzqhj-`z$_sP(08)Gl-nL$y#RwrLsc(XNPQi&FJ&}; zyW5pnYksX%zx99JZ1&Tt{<#}=BKv(|di=naK2-Dq)MGOHQWoNxa1^ODWtOsm-Ekq00000NkvXXu0mjfA)(>B literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge/00007.png b/tests_zemu/snapshots/sp-op-account-merge/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..924a0fdab5262e278ea9a8b7aa45445af3e5d6ac GIT binary patch literal 951 zcmV;o14#UdP)#q9}@@D2n2B{zQMA=XpIG z#}TDG$7SmULnP;UN@uKlGR5t>s4ah=ad?W}fd25BUDu*YjJ%S)uSNot`eEEUjwAJ~ zo9vn0Qr0tmn!Dzr6t!@rSGG~|881GvA9%)BKzCHNJnHmj=7{Y?@Kctu_2AhT`7b+5 zItikU`j-T_l&=6693_B@WOzvjl}!0+yW;n-WB{UdDl?3^hzq_P{nv8Kc`5{r^}Ech zqEKo`7I7!?Sjt1VhDhtrHp>d zmjf_=yJHbD=?vJJ+Rf(ovUcNGFq~*tM^~S>FVnJm#H!Ml8QoKl5}#7!K2vjMc;<DG*o&RC`;y&AbyxWXR!;MQgzZpoA6U%b*uN}+C}(k7?2 zI_M_sUc~xEX$L8BA<;^D+U_@MD5=KGTe%(vOaRAt#fdRQeVRDgM^8_s=%UXXUE-nI z)kv-PwitK$%8R4>2dn7p&^G|J$3)E;Yi1sTW`t<#u9~MyR@icuz0@V3_JBSHY2Sgv z-z{xjRf7LYok>re!@I@juStrcD2k#e{!`Gmp^?saH*r8XR2pO|F^cD;{X5v005ZIhbg_T>mHov=}F$> z-fO}}ja=82`a#-kde1w~=L-h^h+=&iOxxGoQ3_2j7o=Rz@s9JAnsuIMYFXK@Og2|( zv)a?#+|H9!2`jDAhmzy?Q#s+Oxh)GPSN}(}*!IZ&yae_6 zT~4m5P`Z&^VkUB*WFRg1)M!BG9Z;%-_jo8&bJB%owDhV#a##f+b%#`_g+-4%)Dad# zscON)x;jZ3r)?Qxd7xyw{{g!(Ds4SI_CMhvR59P@pDh3Y+`M=P#FVFD_3W#jj8%V0 z$`AES)IG~st=@gq>3#w63tA6!o2W&DH@~HsF^65Ap)y17gdN_@@!Gm;*(CreRnvHE zY~JhKrSx<|hco2-y2_Vv^=tJ9m)Hg(|GrkXI@@q;^z@wzz?Ix%Lu*5jo z)YP}}Qw=E#OHg9rR;lqP)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge/00011.png b/tests_zemu/snapshots/sp-op-account-merge/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge/00012.png b/tests_zemu/snapshots/sp-op-account-merge/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-account-merge/00013.png b/tests_zemu/snapshots/sp-op-account-merge/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00000.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00001.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00003.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000O&azJ#%vl)xR`0GqdRyRUrjQy?`U(egF4P z##uabn?41pRa|-r(~>M1sx=*k{^ZEx4!ysfc)6fd!yPw_vY)VO{sT)-$GE4D@knslsMLnQc3SBh_SoG3MY&oI+2!NHTNaiu3{i000000000000000003@&0Tr{Ee;cNK Q4gdfE07*qoM6N<$f+cO*XaE2J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00007.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00009.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d7877240e5e78a0435d47f0d9efdc7ba441e712e GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t1ba4!+nDh2#EMK#NfLq|L z67@Iro^O`&tF`dhE4^x;QGIXAwTY54yjJW$O($xn9CYG1XZe1w!l`BI)1Ix$s@vpY zsIS=adGXrR+&nY(7hC~T&R=`<$JF|A)Gp=AcVyR#ro#ixn|zt5=QUD28?qj{oQMc2X3VDh8fSE9lT zb6%f{=n|Xq?f#y%+kc<`8S^B4h3PuY{=B2v8UF2s?sA9H(l_>hm$@U)4Rqx7N$cAB z471AKW}&ZZ@vQU z<#n5D7{k)zo%MevRPQ{;dhYrDws%Xuv!37be6`xlH>X8{e7_xCanPq^;mop0KD>FZ hRg6HpkU+!jKaA6!J+(~Fh&=@o_H^}gS?83{1OT}7t_lDE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00010.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..7a54b4da312b1dab38be6102a3bdf6009c0ca0fd GIT binary patch literal 741 zcmV>sR<}`W-I2D;x1+4qr0cruW_UF{y9iY-|&3+W&hE{HuNKsT~<5h*0-?Ft@ zvGu9fx{95za8Zh}>SyyVMJ|Y{tBj89%#Ln+$Hn(JV4Pb9VB2iz2 zy&Zf6%=aLf;Cz)ZyDZO3%e%eFSDR}Z?kHA<=KX*Ul^#Sdm?#g)!TN zjDc9oT*}YN%FURz=OHPUKKi!C8zc?H{tg*OfXYKNgL-5rauB3*K<~WiLk3b$k@k{< zPms<5B|+vgGAozS0c-2+n{vzny)B@6-n5LIv3%B(tpS<8Bmj>P5r`oV3IG5AfPDN1 X^2~5iTF)UO00000NkvXXu0mjf0#jI9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00011.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00012.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00013.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00000.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00001.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00003.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000O&azJ#%vl)xR`0GqdRyRUrjQy?`U(egF4P z##uabn?41pRa|-r(~>M1sx=*k{^ZEx4!ysfc)6fd!yPw_vY)VO{sT)-$GE4D@knslsMLnQc3SBh_SoG3MY&oI+2!NHTNaiu3{i000000000000000003@&0Tr{Ee;cNK Q4gdfE07*qoM6N<$f+cO*XaE2J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00007.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00009.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d7877240e5e78a0435d47f0d9efdc7ba441e712e GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t1ba4!+nDh2#EMK#NfLq|L z67@Iro^O`&tF`dhE4^x;QGIXAwTY54yjJW$O($xn9CYG1XZe1w!l`BI)1Ix$s@vpY zsIS=adGXrR+&nY(7hC~T&R=`<$JF|A)Gp=AcVyR#ro#ixn|zt5=QUD28?qj{oQMc2X3VDh8fSE9lT zb6%f{=n|Xq?f#y%+kc<`8S^B4h3PuY{=B2v8UF2s?sA9H(l_>hm$@U)4Rqx7N$cAB z471AKW}&ZZ@vQU z<#n5D7{k)zo%MevRPQ{;dhYrDws%Xuv!37be6`xlH>X8{e7_xCanPq^;mop0KD>FZ hRg6HpkU+!jKaA6!J+(~Fh&=@o_H^}gS?83{1OT}7t_lDE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00010.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..e02cf4d265c37fd10bbfdc5250e66d6fd5d3d0a3 GIT binary patch literal 496 zcmVD_bv*%{+7XYOb31+`b#;Qx=b!Ph^1481%s53~I^dR@RfXMOG+ zX72>ZLOYM_=eno%fWdm}vURJPRRjzAAQQ~~0Pv9HbK1TKs81!4nqSJEM&ALB3#2{) zJ+G*7na)eo4~v7}J{McqtJ;e8{Ppqyx`WKHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00012.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00013.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00000.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00001.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00003.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000O&azJ#%vl)xR`0GqdRyRUrjQy?`U(egF4P z##uabn?41pRa|-r(~>M1sx=*k{^ZEx4!ysfc)6fd!yPw_vY)VO{sT)-$GE4D@knslsMLnQc3SBh_SoG3MY&oI+2!NHTNaiu3{i000000000000000003@&0Tr{Ee;cNK Q4gdfE07*qoM6N<$f+cO*XaE2J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00007.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00009.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d7877240e5e78a0435d47f0d9efdc7ba441e712e GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t1ba4!+nDh2#EMK#NfLq|L z67@Iro^O`&tF`dhE4^x;QGIXAwTY54yjJW$O($xn9CYG1XZe1w!l`BI)1Ix$s@vpY zsIS=adGXrR+&nY(7hC~T&R=`<$JF|A)Gp=AcVyR#ro#ixn|zt5=QUD28?qj{oQMc2X3VDh8fSE9lT zb6%f{=n|Xq?f#y%+kc<`8S^B4h3PuY{=B2v8UF2s?sA9H(l_>hm$@U)4Rqx7N$cAB z471AKW}&ZZ@vQU z<#n5D7{k)zo%MevRPQ{;dhYrDws%Xuv!37be6`xlH>X8{e7_xCanPq^;mop0KD>FZ hRg6HpkU+!jKaA6!J+(~Fh&=@o_H^}gS?83{1OT}7t_lDE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00010.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..e133cbef71279588f2ae1175e44f2ad6e0f98003 GIT binary patch literal 515 zcmV+e0{s1nP)_jA;k5&ZN_mMk_{+f6`DAK?g~rH3RBoRc!Da=R3gY>JS|vO>4ED z7w61wj2-F#=LtC0?tY7VdvPhug)Q<)L20r!GG;&By=I5AaoM-KW|?!5+a3_i&S%d> zvbdUCMdxx$6OM#UuQIe6?B-1bgoA9*z2?C44!{KGU&5cQ_B;vz|CG-jkUeF}+gkb1 z+hXQ5>ee!K?RcklYGjv$SM33{gCPCrmc2F(dFI~Mez?}I)%pFNHq6=n7+O54e68j| zy1VVi(fb^jSA8Dt?!*M#H$gFF>yL)QrU84Z*aNCta^P-w><)M&FWG+#JhG`CI*QOc zLG~BQNw3?OvF@>RK z^bcbWo literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00011.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00012.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00013.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00000.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00001.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00003.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000yF9I*o8R?cL0M8&1fL5FPGb1 zQk2tgyD-7J37{wgbhVrpgyd>2YmUoPP)E!jDQ<5|?C6K9iY`PapfA;as1P%zVy`%~ zlpo*QrDBe~UD$=);~N+QUeJYgDF}#Q0zTAbFaQA9mXI1ct%KSxt41-Wh`LL44i#7P zEB{ZWM2cX`cHAg^WqD=AD|=B59W50zu|$vaU;YUBq7i7}#D_y#@8Zo!X~6g%veRlWbxg2WD!2)gu8FNs|IJ^n(hAItI=j+6$%R?}3psamXEypgP{3gsaqJ9YL zm-x}(7%n&y_Z_{uqSvxZUrIdd5Eaew^VQ0AX_>cXw<4%l>`akA8TmV)A}=c)*5wLX zq8oSv$hwi_Pr#b@57|%p!+#V(y+PhOoaQ0#1z99(qpbZlvkY#EPQF5p7Nev}y50@1 zW;xmiMbKM^000000000000000000000002kkUt!!iw9k952647002ovPDHLkV1fjk BH#h(Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00007.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7f2d8e831d78662cb2d477d75f46624018282b GIT binary patch literal 930 zcmV;T16}-yP)3`Lz(ZqoNZ5_ieM2}Nn*3j{c6y;T|`BnDyp?Oa!qBuSDaNs?^m!&SSKQvZIv zUeUn>a7RdDYYW>h@S3%LTh7}Q8>|(Gxy>h7ul0I^8$OWQ1u`GJgjc97T>8{%R-7+1 zWC?9GX^VoCi}_^RB8Gv8ZN_c`jtt=L#UPADA%@%L6SAP%M65r>oo4{j&RDK%xh3M5 zfbLo=rF1jeu(ECMv8W}juN7-wqkE6>;>&>8eCM|{m+eFDMw3H3F+=`K`EWgy6h;6OI$m}r!=fZ09*}tnxyt|6+Uy2nw{I6}I)@>CASEK_kD;x?^B3EnWXA*$5$(8oV{=E? zoi=1r$>X{R`aS@BydK;2$QFDx^TaO=IMNy!29#S6fdriZFp)Kvl<>R}p&7s<5Y5Dc;3U-@>2}mW1m2Cs4Umk9nDm{FJo&V+4!qYP zr!J48A^&MN zZm7IkA!)p@&-Yp{<7a3@|1*-tHWv-O9uZ*`^yvDD#9%nBoK!=@A2RJH$0w*4oP`s> z_k`Hf^l&8Lr7^tH@6^}P6-1fvemezvh zllOr6Y!Eknehh1c)u-JF#@`1FymD!+Ui!zT^B!YgLuwoBj_q#$Ju{yKf7pLwIdw)# zk|arzGxYyco-2stLB^I9ZP8TJFS{bB_9~nQz{N|g3j=bjsCpuztQ%47Lu5;SwJR># zt#vDRYua7t>Z!aDq*;R)DPov`54P43^;ES=iYWR=lLwVf7j_rMp6v&0TNa9O+NDXf z-irIOSH0Muh^xf7Dt_4*OVX&Xc?4@}con27XNj)C)}RR>s{>yw;i4Egro1NDh1h@* zf?vqE7M(aEwg^fb8RIp)2ZE7kjIGopNs=T+wJS zQsSJ;c?-HLWL0Hl>9aAB#KB31-bxE1DwK05o&W zd#_itK1v@OJRT+KS}Ss2no-P>nobuT6)?BnQ*(PKbP3~@C|C>|^oA(_mNkm*&>fTx zv5c*4Voloy$(ERFhV>dMPoAzrI6T_VQl;dZhw#WXR9DuG$p$XZjN+#M?M!*8u1WfC zK|jx|wB7Nk^ph0;0PrX}x}hV~u4~zq?zB9cTy{Pz9VC5~FUHutsC5^5<>QiVeU9Vu zYiQcxxevjrJ-L6r9lewlQIVh7cVKq_a< z7OjYTo&g>0RR91000000000000000000000G9CqphLO4wz9%~00000NkvXX Hu0mjfq0s7d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00009.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00010.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00011.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00000.png b/tests_zemu/snapshots/sp-op-bump-sequence/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00001.png b/tests_zemu/snapshots/sp-op-bump-sequence/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00003.png b/tests_zemu/snapshots/sp-op-bump-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8Ji{;u3&O*K_@1v6V<3{jHmP#}006+_er&rBA*6qL?^k!R zsF!ZP)&p>EaYVfLvHkS(CjP7kP;gzd-uw9BDojh_bsdkUEwn^AYr)DEGawDLUM)?A ztk53HEVUnvcCIZFFg*}@Q}U=`4z@_Zn|)^j^tDJHHM|XMk$~a~aJSHZ+D=ir=hT>UngG}@vQwTNDe;7Hi z#42Q|5@d3)lnk%&|Avmx_c-yKqi5}_cSAA3(U-qt24KkPm%n2Mm?HrI0000000000 d007`S{R7cxuy>aItYiQH002ovPDHLkV1oFv=E48~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00008.png b/tests_zemu/snapshots/sp-op-bump-sequence/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00009.png b/tests_zemu/snapshots/sp-op-bump-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00010.png b/tests_zemu/snapshots/sp-op-bump-sequence/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00000.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00001.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00003.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s>M{9=G(W zUBch?t9-x2ey$*+L13y&_WRmT>`YI%1wMWS>0;n`{x+rj_O_zAL0bNwN*PMoU*+BD z&F5cyaNoO40j1X;?%-Guz_ht6;IE3kkEW*Tag0#5*Y1cIHhg*b zwff1;V6Rfa2g(zpbW*csmv+ldR;Xg*=y`YH^*hs~kI6T*s+KY=?#y2k6!BVZ5EI=Us1u@@8nyMDKhtzo4TWX5dOvP>b*S@T z@uO3=4);TD*M=UHc<=S~aAQr8&*~$VXY;F-FI{-~T6DJ8tQ+54wp{X6o%-ZP z-Rdv#BGs?gKd$^U^ZbRA{gw~*+RKJN{+n>&fmho)w`K-4KR4#^0)0@-po0c!`%Hy{ UP3yOJZ3ansy85}Sb4q9e0H}uX1^@s6 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00007.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..25afd4f291d923322c2ecc3092eca37134a0fe7d GIT binary patch literal 494 zcmV{ALtsDZXMc=1Z69v?LA%|H*xOu~jB~C>BRAR5gt!zA@6Y$l=vfnR_O9<7L7n?8W`m1u z6`RnPL?~zLog1A|BAiY@_EG5{eJ7)OXXGAL=Z@OrhEVYg7(V({Z9SDdh8~ydR$`nQ zvn9pq;;E4RHG4w!9E+HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00009.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00010.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00000.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00001.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00003.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*rFo}91VB< z@+bY4Ke_wMLCJQeO=^PXZ)@&Pe$DUbaBTueI|IYE&r#azuHCwQyl{$DC2B zLD{+0?|RiYxXfH4TdP0a;*eZl)ayc-wfoJxID)QTPCpfBxnvsqtQ*fywTa%S*OGnr zd8=1|&-Lis^*5c&-Uw}f+ZT2F=&wCXPrupqbzbO_ISl3@r@w5wJM)_J^j7n1y(2q+gq*Q>vcbx_ZmxBs0;+NhuO})t3vK%heX8PJLvzlh0yl#_d0U zg>4@nbzjmKx5*m#{_t+G}_g?>Ri&H$}e|*mKgq8XZhw0ZV4zh>c(w4jD_NVK^d_IV0ZDnf`njxgN@xNAUPbkR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00007.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00008.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00009.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00000.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V_}@1nyBJPvpL z@(=y(f3myeA?IQ*1rCKrOWv=QNouiEV6o!^YGP=3Tf=(N_PnwE@+n29zwTjN*%0zL z?~e<|-8Zk5xEIT1`FSwNd^$3PZ<20!ve(JV&6)=#ZN2sEA{u|D2T1I@-j%(G$AiCb z|FrmdMY~pW#&J(t`dn5sxKCmuN7;G?*X7oK_MPW?`SI~KonNOIu87s8Pd^i7zH*DO zZ1Y{s4569qk79(Uez+|Co(^lR zT%h{HrzN$gWwxy6vmWu3Ul!8#Tl?_Bs#_&>ckb+X(zm32 zW%CT1mE!gcE4clZch~stbP%(dTh6?7-?okIxAv|vbhJ5Dm;ST!%&s6+|JmN@B^Ax06W$;C zHmB~XxzcL4x6ci#Sbvn=ntSc~vA~U)2R_)P*{5HVdfRbL+n7z4U7R$* zEo8O1?wR%#w>F*fV7jm*;hYoqb*tBt*Zou7Xvi@CgANNHuexw^K!H9eYS4j$#Quws Vmlwp$XITl7@^tlcS?83{1OT11+T@3$zL>FI_?9HNa|K+8|JM)0;lZ=+g^V)s(vNAFieg3!j%2PXdC|*+c z7|$9HUIx|@x&26&b!S1vg8|j`_IxLr8r5h6jOQ+IhN+GhY&nzMtM{pBM;ky+l=FIu znyHT;GL`EYD^Qn>j-w5#pAPmurO-MMYXoB7R5i01!tN%H|i14JE+@JCbtu^ ziduEW*;$2W&q8XhZ;7)j@*DCV^?N|DtoLogs?gSKF9rYrz+|1r(DSv({i@D?!O5@oCe?V0{i&t$+P{#`HnXH| zKTCoL%wTf^Zh3sAn+ynQ2$BaXGZA0hShM?Ut^M7Jjg@c0Zn8{<;almQJKVwBGNRS1 zVxP}@IrcjdG3ct^1Q;$PzSR zOxcaGyVq3^C(ntMdqBLY+I=<9INpQXy9e^kNuZCR?fu`FgM8~4diiu)TX0OYEm2Q# zkCMURxczI;es$R+{&~KCpE0fmdCr*+$qhBppNu|OsTykfV1kPv(+5KlUH||900000 i0000000000V3;3F3!d~1omc1p0000pI9^fuS2hfS<9tciWh(XnXyG@M}pnyZM;Bj9N&NBS_o>^`)c}%toN#w3}&C% z{ou)Y{ALtsDZXMc=1Z69v?LA%|H*xOu~jB~C>BRAR5gt!zA@6Y$l=vfnR_O9<7L7n?8W`m1u z6`RnPL?~zLog1A|BAiY@_EG5{eJ7)OXXGAL=Z@OrhEVYg7(V({Z9SDdh8~ydR$`nQ zvn9pq;;E4RHG4w!9E+HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00012.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00000.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00002teJkoAmxi@-F)@F$5^>6q;^(@5@?6K&47s0{{R30C=2_TyeekSw4;&#;@L_kJA5sGo%<7OAS4E#+JJN_7u3vE#~u6*wQ2 z4*Ps&35uC|EAxggWWjcE%kEq2yI7w~rp&3^tjVHe2e?bM-8S28X=i9z_~4Eo)7QJD zWCF&XwJs~QBv-f!J9U~r5rP)9w_Ri?kPEZUHR;jDrD_6HIG&I9&l2v3H*UFeP*KZV zN>g+Hp3@xw006+hz`dRB3uzm-*)I60Cc$toJ!sacwLG=5S?+4sG4@A&w^9-E@^Y5! zR4vcC$Y#m~>V9-ThhzKN$~(A8+2$p?l=8_J>0q6@D>1IzdF!gQql}dq?5(rMwLtn% zI=YVe4M+T@3$zL>FI_?9HNa|K+8|JM)0;lZ=+g^V)s(vNAFieg3!j%2PXdC|*+c z7|$9HUIx|@x&26&b!S1vg8|j`_IxLr8r5h6jOQ+IhN+GhY&nzMtM{pBM;ky+l=FIu znyHT;GL`EYD^Qn>j-w5#pAPmurO-MMYXoB7R5i01!tN%H|i14JE+@JCbtu^ ziduEW*;$2W&q8XhZ;7)j@*DCV^?N|DtoLogs?gSKF9rYrz+|1r(DSv({i@D?!O5@oCe?V0{i&t$+P{#`HnXH| zKTCoL%wTf^Zh3sAn+ynQ2$BaXGZA0hShM?Ut^M7Jjg@c0Zn8{<;almQJKVwBGNRS1 zVxP}@IrcjdG3ct^1Q;$PzSR zOxcaGyVq3^C(ntMdqBLY+I=<9INpQXy9e^kNuZCR?fu`FgM8~4diiu)TX0OYEm2Q# zkCMURxczI;es$R+{&~KCpE0fmdCr*+$qhBppNu|OsTykfV1kPv(+5KlUH||900000 i0000000000V3;3F3!d~1omc1p0000pI9^fuS2hfS<9tciWh(XnXyG@M}pnyZM;Bj9N&NBS_o>^`)c}%toN#w3}&C% z{ou)YHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00011.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00000.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00001.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00003.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000b@?P)+3`2#G`3aNsy;XvR011RGI1T^+004mHe2uFJA*6rL^BmV% z*=S!|qQl*KwjhL%jz|3UYiL7-ef;>TF0G8T{3;9~oaY%QwJMO-O@)Qdv?Nt!&v8|o z=!rdqZoWq<*C6^A$EI2~RuKYGNi0`&3O$z(>N|PW&4XLz5c+Uj0Rmx~TtJ;)O=@F_ zQ%t`dLI>*{kYX69G@Tc8sj0bHK6Vd55jA>DQF~ibkNtAxF@#YE#HkuzD%6N+$Quf4 z%8$Rx#ly#~L)eAg`RLwGm+Mn%7Op=n>jt(#cu zcIU1CDQ2c3ZW9ctSj^anM@IhAL%*8Wv~#GH8P?TQuG~C&s2MJ!qPKoqz9#xLu_zhm z{XIE1;ybmavMw9yo#5=&-&%2QcS9$l9)GK1d*xvUc;;S^LErVP z_hmZ=9U(S05RLe{F zb9BzTUO*ZHvF0j%$$4$(Jp#m5@~x?E8w>Wr&h*XxHM(2T zCNIRkS-Nd3SjJSFPU4GR{d(Ef;@!|G%7)Kjc)(z6qTFW{^%}C2Z9QfH%I(kgmQ|k< zmar=FO!uZdW&lJ!JDq1*8J2za034_HO0#NZ&u6r8lD%B^@dI#`asioLPtKIBAIi5Y zW>x$0BZ>0F(O9s0p(o*JuD!iP53g0)@c1mLAFi8ZvhPMnHQ9H@7_7u9w9+8SjKQro zO|P=EIJGeu3wq7?N8hq;Kb0kD zSo0FQ%mC4Bf{feFFVuXWeFwmv%`=rR_a?s$eXd<*fbx*bezqE~x8gr{0000000000 e0001hH}ebmj64JzTigTy0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00009.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00010.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00000.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00001.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00003.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000P7R;wZi@000000055jH7}8Ku0N)f z<~5Czj?G039@Ys#&beL>`M7VQfP!QE?2~StjJo}9%sHo&%BB`O)MM+;M6+(GrSv^6 zsu4@{B@FXDGuQ&LudGeN<&rHe zn{s-02?Lx9K#k&{)^`7@^F>d}BqeWq?(z!O{uN|_o8aiLX>?)AtcEC38K(B4S zU&7vkZE@DH<65$lw#9*-0L4xB%9Sq}mkV0ou6)MUbo*@62P(644esp1mu{kW(R4Dr ze+*0GB zm#*9hH+Q=kpn3a@XqJfXIBI;}wIfm88dpYLh4oYwNDDe%zuKI^?um7NRTT{ER-@AK zyr^kNb#}~t1E`~^w1;}yG-eO=Yn*cZbZZ|?hXOXzHzT9=%mSz1pc-0NS#swF>fT+A zo6yA91|UuYG;{9!+LHOkZV*{fZ+#AAGyDin15C~a&*8Db2d5yp2FQLSZFcSV7hpxb zB6ck`ZcjHJ0k3g%5hjEXLJ0XxhJPuKzuh*j4CyeEr zOV>&7maA}#inWI4##_%Gky_nDHL8Z5f8eJlS=`ppoBrs^qD|Q>v9{;!&Qld4TB%*e z9RZ;1ZhKSh)e%szAH)s5XM^NKlJ-maZBB1lt&+|NZMgqB17J=fpC+aVTdFo0kp8!- zuZ<>GUAM#DV!Zd)(Ya#nEz+;w0InXHwLrN&4zCCiYjK(kAkHa;5<&+DMJJZ8Ohjb-diP%ewIKukZl7100013&X-3yrBr_1_g$A% z1VSjiSYk^lpB%3x%E$2ghdz3{q4`ko>WYnHjWJxM zX*gHC?olj0WlIPlxCQCW)FNQvif&*D=8D1xw4jTqv%Fxp7cQC}W5WpB0}k@k?oF1V zKu=gK9is)ISX&m4kmdCTC={Rk9{600C0t&&DLpm*t*JJvg1~t)DXSp=Zsa+lxVQQ5R$QAPQke5!q{bDtAh;9xu;F zn<%H4L*1tMBB|OmPkChcCkR>Z^ZnR6*}9CJi50a3t(w*%^k+R z?UY!yN~a4&*Z625mh-q~d3{g+K)OjL`^#vgn(Qxz8r%t8=uQSnrUsWndI4T>{X6=0 zJU`9A%T*U3YkA^Xke#HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00010.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00011.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00000.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00001.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00003.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000Q31IlGsZ>7+KUfKp+NG-SaV;L13OC33FWl006*pU-KbijQP(H!hFom zO2_I_4IYkjgcxJqANA9(q5}ht`SA;VcV*=1DKW+vLXbsmX2{FtnN`d@B@b0!<7PC~ zl6n`0ea{r`q1q>XGe=g6s0JL{QU6`E!S*r3-VeXif{FQ(` z>DS-O#bb`2cHtDKx35q(ctID|Z9yvIVsppk{4afeOQFqs}#=GhkXbkTO&&B`V z?I1Jy%NRq==r6_`?8Gj#Q)7^s16K?$0000000000000000002s<`3`I$*Z^HeL#9gwWno`h!0ApzPe=D0o2qXr}ga7~l0002M?fi6=PAQe=7-LDv z&jZX?ItF>Fv-hbbg!ag#270}oJNNMn%MJ0d!`j>E=|$o({zt#XcFuKDJ5!1 zu69#%gI`Y}C-F^?hP%MWtJ0Orp|wgDP1mT}5+ygA4sRQXl6jX6`J7cVK+9^5m$+y& zJEOT-em?bTz-q30m+v%-MdF#xde$+)4xj83Om!o8dEjl`V5~< zIt);{nlW;Fl@NC`@f@kO9!#fpYS`5Uu1`}#0000008r?QhOWbi=kP2~ik3AHu6aIr zQ0#+z*Mq0}AuRtA_VCS~cx5o|KuTy&44|H1_=g*S#zFIgxEXBZh$ZNofdLL<aye?(>_xnk+)-;N$yz8nD4mK42AkFdwrIKN3E? zQ_;}$|GE-=tv>g~KkQs5;#=`S}^`vEtoJ2Vsc;^1$8T zytD}#@1#4B$BNp8)anLtS>pI@;^CeyT!L=!DZVidTfG{@+vddnJ;2^n`Mzr4^mn8B zupV zXS&9j6;MjiCY>=cYoXY8B-@OwFz$CXXI2338m;AtNtxddw8EX7Spg4WbGjFK)&OWL zW1anU7g3%y0555aGH@YBOm6i<`#I_t{6X&RM=ZQM^8=6-2><{9FbdxfknLIvsUsE| zrpQm8uU+q5`&|DpV%DxQ9Eo)}<5C3Ccv}&M7up!|&Mm#!2dG*>6N{XYXukY~19cv8 z5Nid_|7d>(YXI7~{nL51sSVr_c8AR~s0&k&;qv|v6%q=2m{k*tmIVBcj8ry;Q!?r5 z+noU*k4mDEO`5W&*b|n~d~#cL4;YAyUy}Re(i0L{DCz5lLsvj(>ry|b_Ynyrt0NNc z#$o~_eZm)grxlOgDy+ue@cAxMExc#%+gp^enjTY*BCryS!AX#XPSWXQjKNZP_jcY5 zZMRK)ldhGEJ5;`J)2f9$YCF8Hg2s)A?zBQt@8c)U=-HEEXsxyk>$zOhZ$lp2Lb2TM zG4$0FgW2Pr9m}ab5&!@IaEAUr<+*}L4l=f^Xp5$ze%Td4wddeG04`o? zO&E}4Mb*@t8F@{7?CTx3$)hb*fq=MHKyw z$%9H~2)hYmXZwL`TNa9O+E0^ctrhcfRK3{05Es6h=xK~GC5`%;M`ulqsDf1GEYY>o znri^a?C?*PbWzONr@W@K3Aq7#NPZv_nsj21*di!#Wc1f?4s=GMF*Z{H000000NBbm X6Q$*OyU>O*00000NkvXXu0mjf3`CBO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00009.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..110b0c580a64c99e2f20c5ba981cccc79d3022be GIT binary patch literal 547 zcmV+;0^I$HP)BlR$zQLI3~&000=y*T~LdjQQ=hZO!%X zI`_UrFG-$+x=pTO4BsO=OKfl2s?EJ?S~(v;p^a|em7kHFY0`{4Gb{Ht-qgujD|W*g>#d^jT{iH{mF$F#YMU{H=u(VpvLAnf^-m$L4_!s;pl2v< zy`w5%9Cnl%OgtMp?P%ipuN7gVg0S3Cc-vQhW9Ls#jJ+lII+o&b!}C0?n6?7;iGNt_ z={kn;k<$U(A_VDbPk79BV2u#;k6FV3^;KViuCvaHLi2OLA;~%-XPCm^>`jFP00000 l00000000000001002ovPDHLkV1oa3`MLlA literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00010.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00011.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00012.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback/00000.png b/tests_zemu/snapshots/sp-op-clawback/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback/00001.png b/tests_zemu/snapshots/sp-op-clawback/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback/00003.png b/tests_zemu/snapshots/sp-op-clawback/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000Q31IlGsZ>7+KUfKp+NG-SaV;L13OC33FWl006*pU-KbijQP(H!hFom zO2_I_4IYkjgcxJqANA9(q5}ht`SA;VcV*=1DKW+vLXbsmX2{FtnN`d@B@b0!<7PC~ zl6n`0ea{r`q1q>XGe=g6s0JL{QU6`E!S*r3-VeXif{FQ(` z>DS-O#bb`2cHtDKx35q(ctID|Z9yvIVsppk{4afeOQFqs}#=GhkXbkTO&&B`V z?I1Jy%NRq==r6_`?8Gj#Q)7^s16K?$0000000000000000002s<`3`I$*Z^HeL#9gwWno`h!0ApzPe=D0o2qXr}ga7~l0002M?fi6=PAQe=7-LDv z&jZX?ItF>Fv-hbbg!ag#270}oJNNMn%MJ0d!`j>E=|$o({zt#XcFuKDJ5!1 zu69#%gI`Y}C-F^?hP%MWtJ0Orp|wgDP1mT}5+ygA4sRQXl6jX6`J7cVK+9^5m$+y& zJEOT-em?bTz-q30m+v%-MdF#xde$+)4xj83Om!o8dEjl`V5~< zIt);{nlW;Fl@NC`@f@kO9!#fpYS`5Uu1`}#0000008r?QhOWbi=kP2~ik3AHu6aIr zQ0#+z*Mq0}AuRtA_VCS~cx5o|KuTy&44|H1_=g*S#zFIgxEXBZh$ZNofdLL<aye?(>_xnk+)-;N$yz8nD4mK42AkFdwrIKN3E? zQ_;}$|GE-=tv>g~KkQs5;#=`S}^`vEtoJ2Vsc;^1$8T zytD}#@1#4B$BNp8)anLtS>pI@;^CeyT!L=!DZVidTfG{@+vddnJ;2^n`Mzr4^mn8B zupY{=nDo1vGb=!Ljn(qNpe&yUR^m?1tbm8GIozu}YXGd3 zvCe+Di(Z~J0GGB!87L@GgIoSl{_gcl{-~bqM=ZQM^8*l76G8|fq(MUsRmDq7(NvX| zrXE?{LM|OgvZ|H^DKuGiwn{mU)I8mQd+KTvEfZya>#qE5*=$zEx9=y)lYvtlPf1R3Ub!In?w+uWLW0|p5HwITStRzgB~qnop@gp+m3jrp8mPt8jo>8NUDfQU zjtG1js{yd;6Lrxy8uH}b!aDF)hxCtW;mrDytk|MTc1gb{p8@l$K@IwH8&(RdPkR!KzYiFA;ib=`r>- zq!nOyguDIEOr8XP*uP^rwMQa^5JJw-{-?ZD5UYcXFDv?@sj6Q#MNsQixU7H_FRdmF z$g!&GiHNe@sA?Y~TgtmlanZNd%-qcBH=(JgN+XC_hr|DrANXKv9Z{#MRZ>KY?mwVNV{R?rG7?;H_A7@HB`7MuNPK#azDa%=^YtR}r z0M+ckCrh{}2KK4U2{s|N!U(}HWV$Au+9SRQS~+t1Yd8jiHL)0*se}+h2qA=Q(ODG?45I3}+b0000G?kjSzQcC;hwr#`X z?=knW#3;4BHtIfYgc#qEgH_v~v0>ZnnzP(qz(F6~f2yCz!L(X&Jyp5)@k+bp{i~ha z;7a!-tbkIAS8)ebxi^{<*S_%%Z_&(?umbcnc^~`cjx4fbCTUdWE=yPeF?y;vc)K?( zlmKsK42)?8%)J>blz^A@{p7+M#f$pd+}}i>YeVBr+}jg_JlBu}47m~j0L}%ShMMP~ z;z8FtZ|G?k!Sy4wc?$H=RsCb$R}1e@Nc8`-{eH_q0W)&mGrt%5 z9ABsCsc!&!L|ygf_ISrhw8xfVHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback/00011.png b/tests_zemu/snapshots/sp-op-clawback/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-clawback/00012.png b/tests_zemu/snapshots/sp-op-clawback/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-account/00000.png b/tests_zemu/snapshots/sp-op-create-account/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-account/00001.png b/tests_zemu/snapshots/sp-op-create-account/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-account/00003.png b/tests_zemu/snapshots/sp-op-create-account/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EK>+-uO^$@|&-a_bzz7{?Q!sHw>-nEUHd*i_c&zc$A)Mm${$=tGZy3V9D+neQ;D_H01^~xekPTH9=1Dr64jumeU6&-W%<1m?{jnRuB>`t0ZQq!(nL2?r~kC||AaT^ke!mO+vwNO`Lk^P ze94&gAK^*`6(mo)_B?L>2+KHmpG%PkG^Y1IIML@TPBOEP)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-account/00009.png b/tests_zemu/snapshots/sp-op-create-account/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..dba8ca3c060cc0ab666e4b2fed83a185ef0c3e1c GIT binary patch literal 467 zcmV;^0WAKBP)Q31IlGsZ>P!Y13o*6=#d%m715XTG&>2(1B007&4nOl1A<8SBOcqpMm zb606R^?n8~G}n)o-jJ&%vKKbK$LXe!Xt@H^(XFdLvKMCXFmz= z*MHUp06d9)tLZ7Z)Po_O4GsOjm(H3#=vR*ZopsI}fH_}72MxZ@h%c$n@}hG8)ofI~J%JylDSHw`${nf1@Y6&mS1;kE4FD<+xj zZ<9$i+24#YxD&h3of=7I43;9j0000000000000000002MGQVUubBDkumKOj3002ov JPDHLkV1mwJ(QyC( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-account/00010.png b/tests_zemu/snapshots/sp-op-create-account/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-account/00011.png b/tests_zemu/snapshots/sp-op-create-account/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-account/00012.png b/tests_zemu/snapshots/sp-op-create-account/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00000.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00001.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00003.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000p67F$ zl}>%WvI)EGY(WSijVJp#&e4Vjef*3wt(}at{b~#$oaY%gwb&sYn|97@rY)%{dyk9O zvYFT+xcPoExQ1+gF*b2!Itn zErV+MZ3qtLB_PFEAZu>1T9$_Y;hVO|LW5fboWTm=IF_~(R#`MwON?)iuVM?}}*Nw~}H zt5QE`^|k*^wT~2`31mkhDwG;S)Br>gqUk|b(^)l-+I++i>;PACds>ZJAzrHKZ#R|} z`p&1O`c*PXj4PiooBI2_3?29~HB_r4S{Uwg?Uqqn2kxbY&eVL~r7zu*p8&_(jO(6e z-!{vuTK&BwU(MRBuZ~ryHKIx{R{wvtx%Na|WLAF~!cw#PlOYEyp$e_!W|7IkP|D@) z@NH;E#Mj?qxAh84C)RuyWZ?Te>%DB3fD%!v)GleAZFLqt*e`Z^sj3~d%;#)(0)cK`qY07*qoM6N<$f>0<6jsO4v literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00007.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9ea0566f32f18e4158b22cf0f82572f4142e32 GIT binary patch literal 521 zcmV+k0`~ohP)dIZT_w2vM25u^s#S54bo zDasvCvQ~!hAtnZC8ZZj0N1QF(ElL4ea)iDb;1Oiji82Y_L}oci-m54DQ0K|f=$;0Q zg1cMC*#ZCn0RA<(YV;hzdz7@c$(27UMEjY+Bgz-Csc7F|-{mm{_*4{NGYYU71qdei z`r+xz&`IAScl~1wlT7xPQBqCz7o!F{@f6yLd3Yz8-b)*^>NXzvvfG|!Yycf?%yM2L zPk9<2eF}ABQrWX4H-yRKGVES*4Xz%yBaNLu&c?eK^%qlv-LiUi)c+IDkNw|-)$NGu zcaEro*E6Eq-KZzrRePJW8mI9Q-Ef~D*Tht_W8>Br|R7Y`Fl^P?f zb>$|w@e#COOv#Dybk(~gF1si8&jI$ND(6*$bG#dupB~7kuf6*J0Ck<$tw9fwL3^b* z9euJjW0@#>(!Gnilr$E{{+Ay6|Dd5V3I+fG0000000000z(f23l_kW$J^&%g00000 LNkvXXu0mjffL7^V literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00008.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..ab78f5b799928bfc4a5275428dfe150cf1f473c4 GIT binary patch literal 739 zcmV<90v!E`P)TP9Yl4&sAquX#!3jvX{l?p zN^`PAS6XAk$J%N>6!`padfN!^_I26FQ~YERoqy0>J;+rS#{Z|>(raFuJh%^Dz#CSf z=h6r=`d}%q4X;lRSXcOMG;iJ)ofBf}lp^RZMv+33uvt^Y#YCdR?r{`7r>V9|?OdBI zs=3umy&g8(aci_X{tvTGn7=x95Az>O{b3n;A+trlHPY+h_y>1g zvQ=T|)5Lh~uot(74$al~=Z-l^IJK5(J>OcyQ98c#;3^(k{+HmOOHYlUnK>hI*zHOo zZd+%4p8gNn_Db?(dedpO7@o2O0RX^WERTuXJuy~Xs(kHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00010.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00011.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00000.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00001.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00003.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000R+%h{2f5Jzv!*A|g*ox@`ae00000Oy_G{L@A{%?)yG2 z(>Z8tET(W+&JvVT>iMu@-arcqjPa8vy0tUv`lGUxvhO=Nwc4QWTQ_Dh>zZ1W?c=I6 zrind;FyAAcJuv-fZmMOe3u{0^s9u%Hn705mhJjk{JVB+d;jUWa^bka-(c==ar!{`;!&SxC`WyX=GS`8j7i5{mEbr?gUZjPEL%BHAqF8_kwRjQ&C@t*N^1qY!kJ6JK@aF zgSh9ztU*{NRVG%qfqNPFBO~{@8jsuo9+tH@h6iQw7a3!Mvft)=YX(l-bGN*NK|ezC zz3(z6o~*Ui={9jZ+-cKRGE|%S|4R73TJ&+vM-?N{1?S%z8HqmV`nmm2!d9j?o6gMF z4QJ$Q_g`!3y6FEzk@op&!R!+p*1hFFFf(z%_xX}-_vOQvRY;zxzi!%p_CDiv)wfeixehG<^1Et>MNILg949M<8xajR%Y5z6wrk!$;`)7)`o(8e zGnV}G+4ScAGli?0>Wxi1Qn*|{$@Qu11^O5YJ{ayl$Ta`i-n0#3AQ4YjKbLh*2~7Z# C`htD{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00008.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..4a19f3bf3c27a296fa55addafbbe8e4c07f215a4 GIT binary patch literal 598 zcmV-c0;&CpP)&u`}Mv;iifc+)|Q0Ek%T#QXU@ZNLDf$7xQK2`3^k0zd=&b~L#==N#AdH(^px zN{M;@ikx|f05hN-<6q!+BESrwu}>dKNb+wA2><{9007XaccB)EsK+87Rh2&|61~XY zT=^EeC=Ubd527B$BT9Ees=AU^M|Oqo0G!+j=bXh2R7>tq<;JdUvg>6#VcM^fHMOK< z$ooE3V$GHkU-RXGA25aG#L*PgDi!5ERo(hsdAGSGH|jWN06QNZg=JV8M=iNSm9crL z$C39&tzFOLBCM1;2AbH!(&Ny(&Csms!e@XnjMSf!@oR~DjQCVBBWs)4bYZ2sHXj|c zcfZUo)c^E*_d1%E!~2gR*dP5Xg#$4-$+0X1uC9|2gRRu=oxK~%G>X@x#9bTP(2MoE zMaG)7!F9t?%j@2cok@t#;z#@8VylSNv2UpqGek+(a=nS2N3W&SV}u<-h;`n;KC2c4 zVBU9i7`AfntIJF>bD}lLf&k2)G+1Dny1brsYSJhxkevWG<8IhEog97o4-8N8=r3aW zqS{(lMbd|5#;NSfjVspx9pyG>%a3AqW;sXCLM+!?>>RRup7Z|^GrqqA0000000000 k0000000000007bW2hu2bt``mceECxA%NC@=KO5PN)a~006Mu*X{(ma?bU~lu~b> z=BB6k-krdJU)+?^qpL3>uiXiplXFffm4UCGfcl|1f;JM(!x|uFYEtpK%5@~?d^B%K zjweKKK(pMoj&`>a=`}2f=nc3&W&@7;TJ)FjBwOX+bua!%1LXHyZ)gAD6A=Iaz<+aY zHPl&s^j88VBjwAY6HymcaTO_RM|QWF+{$uOVV9Vi+4d5?#QAY=H_iXi{D$saqK^2- z`U$I`iZqY4hs@;T+xbK6${2B0){bGjW$EpWD@I=nlK$jy@wD~S)SPWp0&>stM#KiF z`qnktn7~argloX?Ce@q6c@GayW&fqKUaSVp46%>TMIZD=KDq(Jmz%U6NxNw#(z}PU zzx_B==dWh@`bH+tpi=Ucm%nqBL5EngU7%ZJs=rL5)Kq^ldax6-&`yIQ(}P=4UH||9 m000000000000000;5I*KhEcWaAKcsk0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00011.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00012.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00000.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00001.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00003.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000gq>RS$cL+lF6BuKw59-1H5X zGF)mdHB5L4%#)JvJl~1)q8BnhtUd;Q56CmoI#MMz9<_HuDNG=S$Du|I4lo&H)F6~` zc-_=c_6E^Ub%O-^;V2i7*E*AxrMDpb!z_BbE#!O6CisjF*YLix`ua0%{^W2C?|?4( zoI{rQr<&-Jv^jN~YND&!XLdET60t9v)eCAd|0kgdXvV()XTCq|F3Au7=0nw_odm{! zW)##l{O|-gc2G>PoJ@IuknHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00008.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00009.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-inflation/00000.png b/tests_zemu/snapshots/sp-op-inflation/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-inflation/00001.png b/tests_zemu/snapshots/sp-op-inflation/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-inflation/00003.png b/tests_zemu/snapshots/sp-op-inflation/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000(1HQ`{P~5>JsGlnZ;Ua95YkO;9w5(^2dkK}MTRQh<7PC~ zlkyO{{a!h_h3a1#o0-{kiaH<#N$qA#6=$D=_D=5S9*bM!5c)Vi0g6h^@c{GwIu$mx zIMwv(5IT&T0I86m-0eJ|OQ$Y(*BrZ-pv0^mw}h>>v@0*JJce*}0@AIT78Pd2EF515 z*wVheKQ10~e0B({SiOG-#|{q|!nhIy6BF>_SHS=PS=D8RT#7WVNuIU(nyj3xOx=5EHAm5V{W}Qo?dR8WuYhFl;uzGmDm_kW;1W;K459HWxnk14Dx%O;uZ4`Za7><`8q%tRHMsgh*oz!m8Q p0000000000000000002o`~&3JP_=4G{K^0T002ovPDHLkV1o0s$n^jK literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-inflation/00007.png b/tests_zemu/snapshots/sp-op-inflation/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-inflation/00008.png b/tests_zemu/snapshots/sp-op-inflation/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-inflation/00009.png b/tests_zemu/snapshots/sp-op-inflation/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00000.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00001.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00003.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00001r;P)-bgqH<7se*eZ0N!o1SLT(>STIeF{pR))i+LVl|$%5aR)Hi)Wi+M_0^;{NR)DV zaR?o(3jifEL8;}uz@;X0vtq2Cf&yapn4-2QsV9H9(ip;M0K!rYhYB%cX4+>I*2tgF z?V=Im)*)EIx_=R|!wZJ6E(HM*1mKNc1_Jku!f<4UNoRiP)edeUKTGkWfJhjy@# zpfsYTwV+}_l(kHCq0MLo?fE>$R2GF&ePiKCWY(#;67#~5zltu6I5U?$#kgGya08D(%NWI&oD({&jTP)UhPrCSQS^t*VN@04}A9Xb>8b7cn-P_{# zg#ma(4|h2|*X}_t5QbuKA-1y6Z4@RMF;FF*-U;7^PDFhEo^IllE5ZiiH}Pe*c5%#2 znB9z0x4ifQ6?bGcRBVVpQahld0-CB~YF9T~Ip(W~ku$!LxfVGl1$8Hi_-)4&$LxSX zTED$r#xcjxx&MU4mY@Nf%ejMFQjl2?000000000000000000000DvOD$~XtDGetF8 P00000NkvXXu0mjfWp(|c literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00007.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..dc37e17f61cbafd272f2be3f472f8e92eb441e6c GIT binary patch literal 925 zcmV;O17iG%P)|^$Yy#r!>4v!SS z|ExCR&T!kDi4B3)g$ZbXhz{DxgLiqb5V}Elmk>|>oqD$?GdbeEfPHW5UAP1n^1Fzu z#*r{B}%E(W+8c1vUl&X{=_N?l`3}Sr)0v z)UKF)@hU<#u7eS)RAea9el^36VS$rx!pwQZEk(E%NU`Q$Ta2zWT=7MN0}n^h-NK## z@d;CGPn!wQ`BlOcqfKpTW-DSEW3-3#B+6&yc_=|g#COU0uqR;Z^I4&h^gXL8<7nP{ zaWhCn4P_21SE%;~FaI4zoD1CO$z!=+_r}MLz>G}8?DA@3_C-4Yj5{es zm>W}1}2nOmpt&@(Cd`KeP#HFw!B6= z$gUcC-ROS^s0{6YyFLZuHAp@<-emjB&6uQ&DmJZ!(#(=1Ns=TAab}A-;VuD`TG33QF5t@ zp-h`21R5F#_u;krimD%@>tPHz8ssrfxT!#qo7k%HO^q^M;0r%moGN`o6hpe0Gqm;X zX!GLcV%Ox~w-d0y=vtm5H)@v8-0f^e^;G2+*XjO;<{1)->PYiE zX}0SJUE+>M(6+er;NyZ)#Kr6vAWEAvn15&LK4DXm6jj)sYv_87^j>}-euHX~$^J4< zs>%LhtihEyg|5^{GHWmu=>-4)0000000000000000H*l^)>6TkvN`UHB3JE#X!q3vwO4Eyx6dBCl=L| zt}P1r*?Lj(Re=G}(KiBrpAG+c`oR|W>>t`k`0IDDKCM1JukBiaw|2by=i*~;|Nn0| zuFTjyvEiu4fwVXBoLTSP+2<*%w@X_@=KXa3n8I-S@%upDqRKD%H~zj*xKc0j*LXtn r)NgB@@;Chc{$caRy+BKl!GYX=44!GhlGb9Z-5_yKS3j3^P6?{ z7aO^*3}+M7pWl#H#wo)#;~#p(&b7ktgI8>GB9e1XDb-`pCEGCc68UJk=u7OL+bYp# z)m_!c)0W-56_DPfJv>ulW>Np#Vy6#GH8aO8=Jax0x?0!Y?fGf*CLq7*!v1`eI{pFo zSKf8bdG!mPfZe-ERESU9JN=}5cSBZyKVF@5p;L36+*=OQ+G-}Hpb}z}$4#}mL?`7> zuT`H_KQNqK?eq`;001Y1?S{r`eH;6?eWdXvII71_;@JW9d_$Oa)_jFueLFhD$~S)e zcJzFtmtcn}$g@c>dRsKg{Zf!;KgUyN5jUHFhecoNXTS=*H-8+;|6ZB5%+5=vtoL9z z2=AI%@?n}mCi>ItgqrA2#vFVTS?HS%g3KHYMR)-K0000000000000000Dxis04LEK U9T`ltJOBUy07*qoM6N<$f~O$CGynhq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00011.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..eb3932d2f028d10411cbeec962c8fdd0ce1e62ae GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh3gW6@y+9*2ut zF3&FbuUt4?Z-xPnn1TVvoIl&WIwr2%aByn8K2X+}xLH_X0nseLzVDTmoMUx#fQ?sy*jTblgXZeu0qrafQQMcO6S z*By{E2#k5bypa{?1~#!UXYEvvjk_+anRJdTi1W5}TXAb)xBs=X>hHYHCR9zZzPmi) zYk$PcD#;aVbh(N+E=L6z7tWfle)#CchnCiVruzAo-PT&&zclWb!qTPdD|`0+)+yV% zV25_dHujC-RWCD}GV&&#GMv9K;6H`l1JI?o(3ma z<$M&ax6R4_p4j^(Z{=}6%a_esCyy?iRBL>wLH@hBjcoCT%aN-uY|m7gX&KS=1r+AU a;PfA6og0ZW%-r~tK*FA`elF{r5}E*v2 zS2Il4WDj@Yal3E%{nD!&)%r>&pOoIeY}uj{r}Xu-YM#B`oNqywf3%)i%kZ<{XYFDm zhu?3GUFWyHrJiiERdhn}j}M7l)4zX=IePi_Hf`g_`!0GqY?`T}m@&KU@9(x#-cH5b ztN083lZ4Jn-%{9ik1@LAvBvcHD|7d%tn}T*#=vkO=-cwWhkmYq_N?%#xQN`>4@=@d z&tI^tAoMGzh~1H#e`42?UVH!GpU9A^;vmUskao*+L5+aVsr~bmtylLKU+SK_x!}3S z8=DhxWjSSRdkelaHw)g9|B`f~ahdcRC+^*6t1CQP#DTs?1`^MBd7tS%3O75w4J7R8 L>gTe~DWM4fnO2@r literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00013.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00014.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00015.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00000.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00001.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00003.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000JAgdqg)eO%OHgS2njnCMI;sjBiC7qt;j z%0n3Dd!};>#J@N;ab{x|(jY2{a#1JI^TeRt$)_(*ZjD12L-7qDkg4Gf#P!vsHcFIo zdUXf`>+RT(>v`FUXy~#_0E>N&1SO@000000000000000000000000q_yzey V9tohyHv9kp002ovPDHLkV1iHD0v!MV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00007.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..dc37e17f61cbafd272f2be3f472f8e92eb441e6c GIT binary patch literal 925 zcmV;O17iG%P)|^$Yy#r!>4v!SS z|ExCR&T!kDi4B3)g$ZbXhz{DxgLiqb5V}Elmk>|>oqD$?GdbeEfPHW5UAP1n^1Fzu z#*r{B}%E(W+8c1vUl&X{=_N?l`3}Sr)0v z)UKF)@hU<#u7eS)RAea9el^36VS$rx!pwQZEk(E%NU`Q$Ta2zWT=7MN0}n^h-NK## z@d;CGPn!wQ`BlOcqfKpTW-DSEW3-3#B+6&yc_=|g#COU0uqR;Z^I4&h^gXL8<7nP{ zaWhCn4P_21SE%;~FaI4zoD1CO$z!=+_r}MLz>G}8?DA@3_C-4Yj5{es zm>W}1}2nOmpt&@(Cd`KeP#HFw!B6= z$gUcC-ROS^s0{6YyFLZuHAp@<-emjB&6uQ&DmJZ!(#(=1Ns=TAab}A-;VuD`TG33QF5t@ zp-h`21R5F#_u;krimD%@>tPHz8ssrfxT!#qo7k%HO^q^M;0r%moGN`o6hpe0Gqm;X zX!GLcV%Ox~w-d0y=vtm5H)@v8-0f^e^;G2+*XjO;<{1)->PYiE zX}0SJUE+>M(6+er;NyZ)#Kr6vAWEAvn15&LK4DXm6jj)sYv_87^j>}-euHX~$^J4< zs>%LhtihEyg|5^{GHWmu=>-4)0000000000000000H*l^)>6Tk}8ba4!+nDh2VAm1Sco`yt| zdo91^SC)Tl^pH9wG5g}QxBur&*cjcanAzDH-i zpSEuBRhm?+cQ}N5X^eD9_LtbR#k1UBrp5gUclhjmMgH`Smrj@0#NGYNRa>q5d`_*q zz3YsIM;9V)2=Y(z_v@I{bWQf4zU6v`xwCSM?k8REs#deqb>X_?`SXJA-R&!C6M6FX zzdgmw!0_Sg2fhTC_kwTFU3%x3o>g!lVR9aSKspy=>ks9!^uTjX+in;?@8+~+{Jh-x zwGyjkGE)=h)*DZqubYJD{x0lYKR3bY=q*wEL$R}CJMM4)A?Ww2}@#Pr-PF{|RVR?f4%XR7n`_5;BQ z0uwJacndo2rWy_g=i(Rj<#&4D{jG7h4zn zUAm@f!|HOY_g}W#JWgJ6@9L(9?Z?G8?ytJ}aYn;_Cnhyz#>o>I(*LXxep8zA&Hs3? zYH&!>2Z5x;txmoo%JDBIiE)`~3;%yLeTz(y!DZ>Rg{6C+TkcWXB@PS(Wbon{yF#t@ Tc^2ItMj&BNS3j3^P6 z=8gIJtJ}09v)`ZF7x?(SyNl8HS081*a2+t^v6ZNAc{l6NhG5<0tCo9pm4El=<^K7? zTtPu;<#DYUO$ko1PTZ@0Yp%BFbSy2OQ{`Lzw@-$s?J(td|x`&R_e{>`>sF_PLz7zX0~v9 zh;Ny+!~9j6jx+D^p3O14V-<1yQvH#84Gccp@))wp`1m$tFvJ=CPCLu6C;gjpScH0q zy2h9KWqzU4d;(t_=89djB`}=%7CB3_(L|^`Y=X{ILaK_6Poh|E&_Z_xQs$v9& c2oh+>tCQ_hXiN#ZHWei5>FVdQ&MBb@0E#i8I{*Lx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00012.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00013.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00014.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00000.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00001.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00003.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000D`I zv+1Vw@>Mw~kK92@sTl>gXwAv>M;T}Cb$;jHt)-Mwj4^jOFE@FYC`a@k?rFV=(~Ug3 zhUUsAdd&@|Yu086A;wsbY5WLcT)Jll@xU38apVytxZRE7cL!v8$2R+EIwE>-qa@)y z0S%cUcdl#Goavd6T^~Wk*FC(=xEFrgP?^N^BpiB)aZeJ~gN*LELst#}0DzOMwxNm%4=j(ymsQT6|gz4Wl zr*(gLD5gX0Q(9b%+ix@|W%0^&J+T!#KQjT!$W9zJ|0mD-a`gF9SNCO>Pt)hM6L5uH zn#_cCa_%P2`n3E$t6M1cd9% z!82X%DfB2CgUlS5Vt4@n000000000000000001*@)YEUzX=3e-00000NkvXXu0mjf D30>6$ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00007.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..51752fb4b8913dc39e92354c0e2257f59c996d24 GIT binary patch literal 422 zcmV;X0a^ZuP)741i&KraNK(OJXnQ!D)se7(ogc`+rZZmzoI>HQhD<003aR*XjUj#Teyt2*EgJ z-{_adg}h)kTDzfTQ~s&@eT zbEk)4sQnc>tt8j3`>kku2Ouq!<7P@$snc%6szqbmftonz1#PMw)H(a)*X~g9=5<5u zo9fYhwJ3aiEjZKA+L*6^)PvZLnZ(dCNOISbFOLRqb^iL)v43v?ted-rIS&+kui zm}Kw&?Kx6NHQAqxF<9v^)r`ReCrM@uh9bQH000000000000000006)+{|3bw9}?~t QTmS$707*qoM6N<$g3|}T<^TWy literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00008.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..14e8a577d93ba8854b8a02c65f1c65946da97a09 GIT binary patch literal 467 zcmV;^0WAKBP)b&>aFfSviuHJ7~ z^+h2OBbNtR4b`*N_~mRiI9<%2f85{*C?7{%vPn7K^=I){m7j7i((B&@5$Ad(z4{@*Q~!8ClTKO+;%^M(0mi_vg=NqjS(PcZmjH<0K7%A zznz|vd=s|%IANgKfWv#P7Dg zu#o+F_5T+yte@{IFHi8}I9NTOt?nDkiFP%!X}Z^JbQsson6;@)GWDjAQ^(2ZOUF5{ z2?y|&OCJBU<;o?m8G_e@3u@0u$$Xvk)&8Ml>XhE&ww5Z4@7~A6pZj-AT?y#q|7p9V zR*5KlO*(K_cayEAwv*plS_Ixh28fp ztobLm3Ks53o6z~sXlj7)-=ilE`kisIE^YGR%X6(@1cnw8Xt@1{fp4{em*|`gvp~Y0 Lu6{1-oD!MHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00011.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00012.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00000.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00001.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00003.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000Aj-xt9K>)c^qsf z3hsRU%lH0#{>0N8!+!2sx8%-**ekiE>*w$|+r_@qh<YpZKh;-rxMgxk4-L-;4h<7ur?4 zRla)g>AmPo*$x??tNkvAIk!u4J1+dVI4pPNF%!4fW&fAkcyqsUYRy?G=D0gnZcB|} z-sWqEE@r=t=zBM*KG;^(>20e1?Z76TyHN|L@ol|z!(A`dZSU(DLRZ%6Uj4npT;=*> zQPmZvgKyeyebM@g^M?Gc%?_*eHJcZAoK}9mFL=+=$@hZuZZ9^S?DK7VV36-O^JKnx pE}~UI>LHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00008.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00009.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00000.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00001.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00003.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oMXsAuS-PD z@^rcWz}fm9)saaII{pd&uQuPRz2@RZ?oEF<`%@G5ny13L6m(IUB3=;pZ14&=9#iI9ov7v^`qWQU_kSv^&a3zcB93RL z?fxE_isY x$p|uYFcski0000000000000000001{`2}W}N5PvipPT>y002ovPDHLkV1k}=&qV+L literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00007.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..51752fb4b8913dc39e92354c0e2257f59c996d24 GIT binary patch literal 422 zcmV;X0a^ZuP)741i&KraNK(OJXnQ!D)se7(ogc`+rZZmzoI>HQhD<003aR*XjUj#Teyt2*EgJ z-{_adg}h)kTDzfTQ~s&@eT zbEk)4sQnc>tt8j3`>kku2Ouq!<7P@$snc%6szqbmftonz1#PMw)H(a)*X~g9=5<5u zo9fYhwJ3aiEjZKA+L*6^)PvZLnZ(dCNOISbFOLRqb^iL)v43v?ted-rIS&+kui zm}Kw&?Kx6NHQAqxF<9v^)r`ReCrM@uh9bQH000000000000000006)+{|3bw9}?~t QTmS$707*qoM6N<$g3|}T<^TWy literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00008.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..14e8a577d93ba8854b8a02c65f1c65946da97a09 GIT binary patch literal 467 zcmV;^0WAKBP)b&>aFfSviuHJ7~ z^+h2OBbNtR4b`*N_~mRiI9<%2f85{*C?7{%vPn7K^=I){m7j7i((B&@5$Ad(z4{@*Q~!8ClTKO+;%^M(0mi_vg=NqjS(PcZmjH<0K7%A zznz|vd=s|%IANgKfWv#P7Dg zu#o+F_5T+yte@{IFHi8}I9NTOt?nDkiFP%!X}Z^JbQsson6;@)GWDjAQ^(2ZOUF5{ z2?y|&OCJBU<;o?m8G_e@3u@0u$$Xvk)&8Ml>XhE&ww5Z4@7~A6pZj-AT?y#q|7p9V zR*5KlO*(K_cayEAwv*plS_Ixh28fp ztobLm3Ks53o6z~sXlj7)-=ilE`kisIE^YGR%X6(@1cnw8Xt@1{fp4{em*|`gvp~Y0 Lu6{1-oD!MHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00011.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00012.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00000.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00001.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00003.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000L6#&DyXRHMamI0n@%Mm>a@EL1oqitn5{Y!FY}!(JX;b#0x81A{rSc^H z9*|bzHPG2Q9mZ09rirRA+8uP5kS$2gfh-&r)OO@vn}J57ao&Q;PA}U`=c#rzy8r&i z(CVtkh2=pID`+D42n!CK+Ef*t9}be&m)6yDB)g8(6f5E4vpIP$s~+0P-9H}Ku# z?fMBQ6`G0C;ik)Ld>o#sh-v~|vyqlr#p(sEs)N(_plN$UT3xMh5nyDiOAmaDD@p~B z(C<=fI!EaNxGf;nB*X(EDmIe=O%Z$WNXhLp;1O7c=L8u0S`MQ9N0tenE)ip{bY%oy z^h8Xue=-ZiFn96^usdBAg5=tiE(|J`X3eO3DCx{z5nzzHW-7tCTl=6P%jgLQQFL?g zN}7@Sm0#??IXr;+#;|NLo`N+ky5Q&mYTbK{$gNR_nscy##vpSJLUA5m$CTXTr8J`6 zj3Y)mZo)Vt2(BkMC;A>KH;nmCVDmyLjX@8Xgi?vV7%=uyF{J1Cer5(oYHhBIYz zLcZ!o-in}8B*^&8tNr?9?oM-_0f~9LNykas+OtH{Qz{!aNiXx1b$HmWk$HKS^9+zX zF?DoypH3UO{B9B1sF;J~HF6F9OOPG|oj4t^y=0H)Df2(i^PJ}rRNK&AR#rW;w$V*+ zehfA5`gWpjVeK)ro1SgLM{_YLbCyeu8EwIe^s#O|vxWxwUM>URQWF3GHfd~SbN^$FmetEK37UOI70C@-Dv<*;diYA4hC%NSiv?=Qv}?8GXxQ>T*| tgHUuY0000000000000000000G<{!jxY|b&+l?4C*002ovPDHLkV1ji>$Q%Fw literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00008.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..b99ce86ca30ee4e04b58ee63eb5ddd78a58109f2 GIT binary patch literal 560 zcmV-00?+-4P)m zooY{Q^0O^DY|CS4M*sOiYtAetPc*-_jTobxgW-xTu%5g9NlRQ?eWyQvV}?(%y-7Z4 znO>bmfuvbRmfuhou*I?dhaQU_8X2I8AA(A>^jypI>hzGspd47NIr?kOsEq5PmGoDq zezDpZQ=7_w0hu$3jbQ9`V{B}erbXparYM}8H%feyz75bv=$Oome8$+!Yes8}?zAHF zBbaAzqPqlb!c6_O$IANCYekkd=kV@pX!E(wZqF@E%NK+6RPH&1jl^<396Onf30{5= z-kPm$##=eFj(z65k0$^Cuo2a3=otDZuD?YS%)6k|dhteRD7mTW`waT5?>hZwx(mj@ zX3N1Td=uThpquc=sU4(7kG}ceN4R(coHJ~eCap*Qsx-zLV%hr{n+pr0&BYtw>C?&2 z#iOFuqL|08u+~z(oTVkG7@jk|++hcryfp)y>{EhkJeC17@fg)B!{7^?+WVQJ9-TT) zpJkgie%{uNvBR^}{OPp4@|-S3hj;-T?30gKy%MRp@JIEHZm= yD=aSn000000000000000000000002MZTtgSLfCS{3$v&I0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00010.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00011.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00000.png b/tests_zemu/snapshots/sp-op-manage-data-add/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00001.png b/tests_zemu/snapshots/sp-op-manage-data-add/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00003.png b/tests_zemu/snapshots/sp-op-manage-data-add/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000L6#&DyXRHMamI0n@%Mm>a@EL1oqitn5{Y!FY}!(JX;b#0x81A{rSc^H z9*|bzHPG2Q9mZ09rirRA+8uP5kS$2gfh-&r)OO@vn}J57ao&Q;PA}U`=c#rzy8r&i z(CVtkh2=pID`+D42n!CK+Ef*t9}be&m)6yDB)g8(6f5E4vpIP$s~+0P-9H}Ku# z?fMBQ6`G0C;ik)Ld>o#sh-v~|vyqlr#p(sEs)N(_plN$UT3xMh5nyDiOAmaDD@p~B z(C<=fI!EaNxGf;nB*X(EDmIe=O%Z$WNXhLp;1O7c=L8u0S`MQ9N0tenE)ip{bY%oy z^h8Xue=-ZiFn96^usdBAg5=tiE(|J`X3eO3DCx{z5nzzHW-7tCTl=6P%jgLQQFL?g zN}7@Sm0#??IXr;+#;|NLo`N+ky5Q&mYTbK{$gNR_nscy##vpSJLUA5m$CTXTr8J`6 zj3Y)mZo)Vt2(BkMC;A>KH;nmCVDmyLjX@8Xgi?vV7%=uyF{J1Cer5(oYHhBIYz zLcZ!o-in}8B*^&8tNr?9?oM-_0f~9LNykas+OtH{Qz{!aNiXx1b$HmWk$HKS^9+zX zF?DoypH3UO{B9B1sF;J~HF6F9OOPG|oj4t^y=0H)Df2(i^PJ}rRNK&AR#rW;w$V*+ zehfA5`gWpjVeK)ro1SgLM{_YLbCyeu8EwIe^s#O|vxWxwUM>URQWF3GHfd~SbN^$FmetEK37UOI70C@-Dv<*;diYA4hC%NSiv?=Qv}?8GXxQ>T*| tgHUuY0000000000000000000G<{!jxY|b&+l?4C*002ovPDHLkV1ji>$Q%Fw literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00008.png b/tests_zemu/snapshots/sp-op-manage-data-add/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7b9199c607264aab5a75039eae99b1cc4f0ed2 GIT binary patch literal 613 zcmV-r0-F7aP)^xo zoF0S5ST)&zq@2H`EjME8(VAoj19|}E_z*~^PSIMGYXCy;Xas*weBb=G@U_<8|YYX1KBs zEouO1PwyOLtA0RLfBQ~q^AI%TU8ByDN#F13dw8-N>Sw`NRQ7Xa*|?^ycwZ@&ZNHR<)XA(l;MNZ1 zN-0djo6&wLFP*C?b5#44cS->O00000a0&ha5yvQxo~~P_6_M<{%nrD zRJ%UJ*0zsh#qG({Pbypd*^#ZL$Z~PVB8kPZ348b09*y(+l5wH5w(hPeZ)LMf@nz!| zMr#ebS%Xq+*S(d#IeE>#xog?ZFzEiVzM?g8-D{v+_LAN4ytn_^<>pQ@sAaP_HD__e znr(gRBA3_g>zZMEY}$qVKinI{FaI*KecF2J+$$M#yWnXH_#a9ySrle?;=tL2Q-)u@ z?Yhy@e@R)g`sGJE=`V~MD|TEdH&mN;?@acs1~X^BWAYVy?wy<j^fuY1;+v00; zvvvpM-T&j9!_6EdSQR5u|6649+wGk5d!1|#`*n+7P7Jr)wAOj2?KEE1E1B2iCIo$G z*|d?<-bc@IZN1^^J!xIVrKln2jg$Yb lmnruShLq?7gAo}RoRz=Uvh;m;cTP4)*wfX|Wt~$(697&E!_NQ! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00010.png b/tests_zemu/snapshots/sp-op-manage-data-add/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00011.png b/tests_zemu/snapshots/sp-op-manage-data-add/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00012.png b/tests_zemu/snapshots/sp-op-manage-data-add/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00000.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00001.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00003.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000#+{(PS2 z9A{!smyXe1rIe`P)s|M0J;??|b%R&Pt)jghIM37LRZ7Y4c44Vir0sGaoX!0@eKO#| zagBfWOq?KvJ-^Dol5#_-dM-=n+e(VDpLujw5)_ zI!WQ_^bf!&PXGV_fd9-moq9z4cNfhE>7H8aSU&*94Y+OJ&@|0T&1OJ0G-G5vxec`x zlcR@ukkK-CMlB;tT0Jp|>Cb^V(J=ObklPqn?TS=EOj|anRfB^^fZdiMRb@&9%&1sR zU{po?n@7%S@U-J_Mh-yefeAJCf63xmO0;!n26W{PJaPb>?4P1C_ORiU1KbqjojMU;&j*#u!XxaQ6;O$$h<)M(>+(pp(E!*v<$V#}hjz`W&fY zIP;x`%>$)08Y7?+NM*vm4;U3tkh;Jo{9#&NPZvw*3-z?HniGAF6aWAK003~YXIk+) zq%t^&eVEEYY|pgfeWhaTnO3~7l*p7fdH?_b literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00007.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2cea1c0f39ede5d8311e1bca3e6eea6a5f73ee19 GIT binary patch literal 482 zcmV<80UiE{P)Jkb!4urLoh?LA)^M-eg@Y?BZG004mPzC1xGCHWjl!l5Xj^oF{IwsH1_U$jLXzU4MjGn4eO8&C*NVS*q)*CU-7Jr;&dCHX{ zVvJIjdUaSQ5bX1DUQlX1MP`3m>)VM-LdOiS>ZmV6nSk|7tot|rtbW@y^WsaWhE|T( zF=}}u{55yX0QFLJHe*FvYvqOH{`hM-)j4X#_;n1xF?s7QTY6jWO5R?w{V{d?c#P%x z5_F;8>z~M)5Z=4yA^wUo56DfY$unmih)!gQuFC+pK=$STYN}J*gl|?ZLDoMcgNi=_^X9B0`9E3t z!CO+za?-tQA#GrGGQGcz($)0-W{km|ScUF%(#ed$Qgkl>000000000000000006Me YFXy7Q<7UUn0ssI207*qoM6N<$f*3pJ8vpHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00009.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00010.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00000.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00001.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00003.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000D`I zv+1Vw@>Mw~kK92@sTl>gXwAv>M;T}Cb$;jHt)-Mwj4^jOFE@FYC`a@k?rFV=(~Ug3 zhUUsAdd&@|Yu086A;wsbY5WLcT)Jll@xU38apVytxZRE7cL!v8$2R+EIwE>-qa@)y z0S%cUcdl#Goavd6T^~Wk*FC(=xEFrgP?^N^BpiB)aZeJ~gN*LELst#}0DzOMwxNm%4=j(ymsQT6|gz4Wl zr*(gLD5gX0Q(9b%+ix@|W%0^&J+T!#KQjT!$W9zJ|0mD-a`gF9SNCO>Pt)hM6L5uH zn#_cCa_%P2`n3E$t6M1cd9% z!82X%DfB2CgUlS5Vt4@n000000000000000001*@)YEUzX=3e-00000NkvXXu0mjf D30>6$ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00007.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bfcaa634c7126c841292931e62169608cadf2c87 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QolW2978JRyuA^a*KEMU5McIJ zZRh`qMbm2)Tmw&OOpTIBe_!i3n?L!uTGDL>h6iQw7a3!Mvft)=YX(l-bGN*NK|ezC zz3(z6o~*Ui={9jZ+-cKRGE|%S|4R73TJ&+vM-?N{1?S%z8HqmV`nmm2!d9j?o6gMF z4QJ$Q_g`!3y6FEzk@op&!R!+p*1hFFFf(z%_xX}-_vOQvRY;zxzi!%p_CDiv)wfeixehG<^1Et>MNILg949M<8xajR%Y5z6wrk!$;`)7)`o(8e zGnV}G+4ScAGli?0>Wxi1Qn*|{$@Qu11^O5YJ{ayl$Ta`i-n0#3AQ4YjKbLh*2~7Z# C`htD{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00008.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..4a19f3bf3c27a296fa55addafbbe8e4c07f215a4 GIT binary patch literal 598 zcmV-c0;&CpP)&u`}Mv;iifc+)|Q0Ek%T#QXU@ZNLDf$7xQK2`3^k0zd=&b~L#==N#AdH(^px zN{M;@ikx|f05hN-<6q!+BESrwu}>dKNb+wA2><{9007XaccB)EsK+87Rh2&|61~XY zT=^EeC=Ubd527B$BT9Ees=AU^M|Oqo0G!+j=bXh2R7>tq<;JdUvg>6#VcM^fHMOK< z$ooE3V$GHkU-RXGA25aG#L*PgDi!5ERo(hsdAGSGH|jWN06QNZg=JV8M=iNSm9crL z$C39&tzFOLBCM1;2AbH!(&Ny(&Csms!e@XnjMSf!@oR~DjQCVBBWs)4bYZ2sHXj|c zcfZUo)c^E*_d1%E!~2gR*dP5Xg#$4-$+0X1uC9|2gRRu=oxK~%G>X@x#9bTP(2MoE zMaG)7!F9t?%j@2cok@t#;z#@8VylSNv2UpqGek+(a=nS2N3W&SV}u<-h;`n;KC2c4 zVBU9i7`AfntIJF>bD}lLf&k2)G+1Dny1brsYSJhxkevWG<8IhEog97o4-8N8=r3aW zqS{(lMbd|5#;NSfjVspx9pyG>%a3AqW;sXCLM+!?>>RRup7Z|^GrqqA0000000000 k0000000000007bW2hu2bt``mceECxA%NC@=KO5PN)a~006Mu*X{(ma?bU~lu~b> z=BB6k-krdJU)+?^qpL3>uiXiplXFffm4UCGfcl|1f;JM(!x|uFYEtpK%5@~?d^B%K zjweKKK(pMoj&`>a=`}2f=nc3&W&@7;TJ)FjBwOX+bua!%1LXHyZ)gAD6A=Iaz<+aY zHPl&s^j88VBjwAY6HymcaTO_RM|QWF+{$uOVV9Vi+4d5?#QAY=H_iXi{D$saqK^2- z`U$I`iZqY4hs@;T+xbK6${2B0){bGjW$EpWD@I=nlK$jy@wD~S)SPWp0&>stM#KiF z`qnktn7~argloX?Ce@q6c@GayW&fqKUaSVp46%>TMIZD=KDq(Jmz%U6NxNw#(z}PU zzx_B==dWh@`bH+tpi=Ucm%nqBL5EngU7%ZJs=rL5)Kq^ldax6-&`yIQ(}P=4UH||9 m000000000000000;5I*KhEcWaAKcsk0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00011.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00012.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00000.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00001.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00003.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000YxAn2xicOe zK=nXI3LCwfC%c zu4_L^>p>~F>xJc(K8Nu4A! t21}7%0000000000000000001BnP2x_YbZJxOB?_I002ovPDHLkV1iM3(bxb0 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00007.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00008.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00009.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00000.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00001.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00003.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00001BuhO+OO%>p^Cpu)>jvv%meHr{j8r;o_xSW}vRN-kHtfA;>+Ag;vd3!3C%`#>< z-ui|osqAgJ@15j%T#th;xE>ez*s!Dfn07+FPw4$uA*TFSm(?!Z@;5lK^xo0%fI=JV zoY%X3xvExu+ut(Vxb89&!@3#&c{Fmlmdd{sy1H!R>R{Wy-Yabz-n>qWnxPw*zwTl|uJ+>)ejkW}Eqfe=?`(Mfo1X q8J#*N!Kx>E9K&10fnkXZUOeNKoa1s(P0%$RB<$(x=d#Wzp$Pyv62#>I literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00007.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bfcaa634c7126c841292931e62169608cadf2c87 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QolW2978JRyuA^a*KEMU5McIJ zZRh`qMbm2)Tmw&OOpTIBe_!i3n?L!uTGDL>h6iQw7a3!Mvft)=YX(l-bGN*NK|ezC zz3(z6o~*Ui={9jZ+-cKRGE|%S|4R73TJ&+vM-?N{1?S%z8HqmV`nmm2!d9j?o6gMF z4QJ$Q_g`!3y6FEzk@op&!R!+p*1hFFFf(z%_xX}-_vOQvRY;zxzi!%p_CDiv)wfeixehG<^1Et>MNILg949M<8xajR%Y5z6wrk!$;`)7)`o(8e zGnV}G+4ScAGli?0>Wxi1Qn*|{$@Qu11^O5YJ{ayl$Ta`i-n0#3AQ4YjKbLh*2~7Z# C`htD{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00008.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..4a19f3bf3c27a296fa55addafbbe8e4c07f215a4 GIT binary patch literal 598 zcmV-c0;&CpP)&u`}Mv;iifc+)|Q0Ek%T#QXU@ZNLDf$7xQK2`3^k0zd=&b~L#==N#AdH(^px zN{M;@ikx|f05hN-<6q!+BESrwu}>dKNb+wA2><{9007XaccB)EsK+87Rh2&|61~XY zT=^EeC=Ubd527B$BT9Ees=AU^M|Oqo0G!+j=bXh2R7>tq<;JdUvg>6#VcM^fHMOK< z$ooE3V$GHkU-RXGA25aG#L*PgDi!5ERo(hsdAGSGH|jWN06QNZg=JV8M=iNSm9crL z$C39&tzFOLBCM1;2AbH!(&Ny(&Csms!e@XnjMSf!@oR~DjQCVBBWs)4bYZ2sHXj|c zcfZUo)c^E*_d1%E!~2gR*dP5Xg#$4-$+0X1uC9|2gRRu=oxK~%G>X@x#9bTP(2MoE zMaG)7!F9t?%j@2cok@t#;z#@8VylSNv2UpqGek+(a=nS2N3W&SV}u<-h;`n;KC2c4 zVBU9i7`AfntIJF>bD}lLf&k2)G+1Dny1brsYSJhxkevWG<8IhEog97o4-8N8=r3aW zqS{(lMbd|5#;NSfjVspx9pyG>%a3AqW;sXCLM+!?>>RRup7Z|^GrqqA0000000000 k0000000000007bW2hu2bt``mceECxA%NC@=KO5PN)a~006Mu*X{(ma?bU~lu~b> z=BB6k-krdJU)+?^qpL3>uiXiplXFffm4UCGfcl|1f;JM(!x|uFYEtpK%5@~?d^B%K zjweKKK(pMoj&`>a=`}2f=nc3&W&@7;TJ)FjBwOX+bua!%1LXHyZ)gAD6A=Iaz<+aY zHPl&s^j88VBjwAY6HymcaTO_RM|QWF+{$uOVV9Vi+4d5?#QAY=H_iXi{D$saqK^2- z`U$I`iZqY4hs@;T+xbK6${2B0){bGjW$EpWD@I=nlK$jy@wD~S)SPWp0&>stM#KiF z`qnktn7~argloX?Ce@q6c@GayW&fqKUaSVp46%>TMIZD=KDq(Jmz%U6NxNw#(z}PU zzx_B==dWh@`bH+tpi=Ucm%nqBL5EngU7%ZJs=rL5)Kq^ldax6-&`yIQ(}P=4UH||9 m000000000000000;5I*KhEcWaAKcsk0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00011.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00012.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00000.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000;`C48){ch6J+mQp1FO>7QA51Bp?)z|tK-JH1B=)73#J^gIzxsz`F zVSl}n^ZEVPT?UzR@MQ|2Ci;sp20LAbnlV_Q5@g0;D#8l@000000000000000002z$ Y27|D2Nxs%Ef&c&j07*qoM6N<$f;m~@Gynhq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaecbbe0d15dd61ff6703fea051485d9dcbf6a5 GIT binary patch literal 504 zcmVk* zvs(LbIp;H9*NboS_jCYN=H$?YwUXmF#8fEXu9$gaejn`HaV4wFS6L`>t<#!bbFH&q zt97$2W`OxqO|PlZX)?bS?5nrdI$I3Dxm@I&#cEK#b@DZ~hHSD+@3;h+snLaz42m@; zSnEz(97A=Q(u_@5RH@CU-G&4J0N@+6kD<*|oq5hP+X)^qMLW)y^~qAl&>OJ+KPXDh zx8~P^A$2Hkq?jN1CFMuK`wGoqf-lAbuHBT4bfoJ>Zt*t$2~YWxqJJ!Va^kGrEP3CY zdqK`zs|Eee%AjvG_l9Sdyr0~1X}VS_zsleMh;Yj;gMnV{=tknb*Y*{&J28Y^0k1PM z0P(oR7BYOn&5Ds>@Y_#roaT_%BI%l)-2>2-#OZTGF0y|cHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00011.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00000.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000;`C48){ch6J+mQp1FO>7QA51Bp?)z|tK-JH1B=)73#J^gIzxsz`F zVSl}n^ZEVPT?UzR@MQ|2Ci;sp20LAbnlV_Q5@g0;D#8l@000000000000000002z$ Y27|D2Nxs%Ef&c&j07*qoM6N<$f;m~@Gynhq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1b11a7c4b3edc7c1845621afecc2498d0dd161 GIT binary patch literal 920 zcmV;J184k+P)c_+&W5cP zzMb^}sEPyt0KnHHAM5Jol2vmG9aHR5>QstxX{cQBKiXfx8-PU_XOpP|JP{6uEi$MZQ;_5G z`D3b=eyH(gtyy5FzWLo&n-uJgCxtbAE zfg-RIjKP~A3%$vplQ9Nck=;A^Hk59gt@@Vbwh6mDP+*~KLp*rp(-bl*3h0qd(lP5N>h zMpe~MdlE!ffT|V8-N;GtlvtT$(PQm9NGrjfNO$L-nK%jlGK!^*>&eiMdz zsx%TY>rnq?+!Tqgwf0eUs@f$*H2aIm7nRN_{3hhi_KABb8^t*5(jr!C)x12bUYuWu z8$V5qG{%{dPJPQ`u%^YVg4E?K)pgKXXaLykh)C_(a uMNsC*>92GS3`Sy+o2dW*000009OW+<&Qu}gpm@vx00006%X7RLGZ223d>5y~JrXZ}dBbG;F6P5ic+#^qXPHWftlZ=D~GeC^W>Rn$Wr<$adeWkfNr5a0uo8S^eDj-pIX2We)+1OxIG_Zr zTM0xT=s&z3Bpk)+Qc)$eW>+rkG(2hxRh_2@8<&zr0~v74BqRHmQAstje=+ETouCTs z1ncllbb3AChK9$%Ka1l!vs>@14lufo4uzB7cb;L%S8w>oRUpg7j$*y=FV`j1u&Zc}54EKlK&pbJkr| zX#X0}<;ad$Gpa%|_NGDt00000000000000000000004kD@CyUu8r4MX$cF#`002ov JPDHLkV1f!X5SIV| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaecbbe0d15dd61ff6703fea051485d9dcbf6a5 GIT binary patch literal 504 zcmVk* zvs(LbIp;H9*NboS_jCYN=H$?YwUXmF#8fEXu9$gaejn`HaV4wFS6L`>t<#!bbFH&q zt97$2W`OxqO|PlZX)?bS?5nrdI$I3Dxm@I&#cEK#b@DZ~hHSD+@3;h+snLaz42m@; zSnEz(97A=Q(u_@5RH@CU-G&4J0N@+6kD<*|oq5hP+X)^qMLW)y^~qAl&>OJ+KPXDh zx8~P^A$2Hkq?jN1CFMuK`wGoqf-lAbuHBT4bfoJ>Zt*t$2~YWxqJJ!Va^kGrEP3CY zdqK`zs|Eee%AjvG_l9Sdyr0~1X}VS_zsleMh;Yj;gMnV{=tknb*Y*{&J28Y^0k1PM z0P(oR7BYOn&5Ds>@Y_#roaT_%BI%l)-2>2-#OZTGF0y|cHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00011.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00000.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000;`C48){ch6J+mQp1FO>7QA51Bp?)z|tK-JH1B=)73#J^gIzxsz`F zVSl}n^ZEVPT?UzR@MQ|2Ci;sp20LAbnlV_Q5@g0;D#8l@000000000000000002z$ Y27|D2Nxs%Ef&c&j07*qoM6N<$f;m~@Gynhq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaecbbe0d15dd61ff6703fea051485d9dcbf6a5 GIT binary patch literal 504 zcmVk* zvs(LbIp;H9*NboS_jCYN=H$?YwUXmF#8fEXu9$gaejn`HaV4wFS6L`>t<#!bbFH&q zt97$2W`OxqO|PlZX)?bS?5nrdI$I3Dxm@I&#cEK#b@DZ~hHSD+@3;h+snLaz42m@; zSnEz(97A=Q(u_@5RH@CU-G&4J0N@+6kD<*|oq5hP+X)^qMLW)y^~qAl&>OJ+KPXDh zx8~P^A$2Hkq?jN1CFMuK`wGoqf-lAbuHBT4bfoJ>Zt*t$2~YWxqJJ!Va^kGrEP3CY zdqK`zs|Eee%AjvG_l9Sdyr0~1X}VS_zsleMh;Yj;gMnV{=tknb*Y*{&J28Y^0k1PM z0P(oR7BYOn&5Ds>@Y_#roaT_%BI%l)-2>2-#OZTGF0y|cHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00011.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00000.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000bXfj|`@bpP+ks8jjVu~ zUvCeoJ)ipDZJxaL&^+X9L>Bjt*gp}y7SvCwMm8zE0;iyj2S8;QsYuJl77qq?9e^!5 zw+CxLFwrKIs(PwtGByjTlbc1;$r{0giuF@fJDJ{}rqI>&{$z~7N@SsxScg}#-Fvqh zs=l%KD7;yotexLH)On^2xK=~$kKF$HnrcV!CcXBtczN|yI%}<*wob!lU_FuhP5MnO zMc6r#7jSClMDScx0|wxJ-`Qb!)LAzzzS#SgA<+&PfILw?H&axmmU`#1MyFbb+st{85W%Dx!gE%4e%A;^|afziTyd%*2zNlDa{2=P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..618d903846e1aef70095fd20e91a24f86990d329 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>A$>EaktG3V{f*uEA8o`$(+ z@3s7vKe_wOVU?Dp_9Dj?&8)dUSxI;4QjM<`Kurt`+diKPuAP^@S8r*|isHy<)0J5- zqU^5hKj8n3;q4K1s&G|d&{@mu!D^Di$hIwl)jb8OOSLO4$&uhGvB!>FmR@XFm zDXFk>a?anYW@Y=rian;vdg;!XHCN!Jj3?1|Q3d zKNmGPvnjk#jy#%^uUxgH%K{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00011.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00000.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000bXfj|`@bpP+ks8jjVu~ zUvCeoJ)ipDZJxaL&^+X9L>Bjt*gp}y7SvCwMm8zE0;iyj2S8;QsYuJl77qq?9e^!5 zw+CxLFwrKIs(PwtGByjTlbc1;$r{0giuF@fJDJ{}rqI>&{$z~7N@SsxScg}#-Fvqh zs=l%KD7;yotexLH)On^2xK=~$kKF$HnrcV!CcXBtczN|yI%}<*wob!lU_FuhP5MnO zMc6r#7jSClMDScx0|wxJ-`Qb!)LAzzzS#SgA<+&PfILw?H&axmmU`#1MyFbb+st{85W%Dx!gE%4e%A;^|afziTyd%*2zNlDa{2=c_+&W5cP zzMb^}sEPyt0KnHHAM5Jol2vmG9aHR5>QstxX{cQBKiXfx8-PU_XOpP|JP{6uEi$MZQ;_5G z`D3b=eyH(gtyy5FzWLo&n-uJgCxtbAE zfg-RIjKP~A3%$vplQ9Nck=;A^Hk59gt@@Vbwh6mDP+*~KLp*rp(-bl*3h0qd(lP5N>h zMpe~MdlE!ffT|V8-N;GtlvtT$(PQm9NGrjfNO$L-nK%jlGK!^*>&eiMdz zsx%TY>rnq?+!Tqgwf0eUs@f$*H2aIm7nRN_{3hhi_KABb8^t*5(jr!C)x12bUYuWu z8$V5qG{%{dPJPQ`u%^YVg4E?K)pgKXXaLykh)C_(a uMNsC*>92GS3`Sy+o2dW*000009OW+<&Qu}gpm@vx00006%X7RLGZ223d>5y~JrXZ}dBbG;F6P5ic+#^qXPHWftlZ=D~GeC^W>Rn$Wr<$adeWkfNr5a0uo8S^eDj-pIX2We)+1OxIG_Zr zTM0xT=s&z3Bpk)+Qc)$eW>+rkG(2hxRh_2@8<&zr0~v74BqRHmQAstje=+ETouCTs z1ncllbb3AChK9$%Ka1l!vs>@14lufo4uzB7cb;L%S8w>oRUpg7j$*y=FV`j1u&Zc}54EKlK&pbJkr| zX#X0}<;ad$Gpa%|_NGDt00000000000000000000004kD@CyUu8r4MX$cF#`002ov JPDHLkV1f!X5SIV| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..618d903846e1aef70095fd20e91a24f86990d329 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>A$>EaktG3V{f*uEA8o`$(+ z@3s7vKe_wOVU?Dp_9Dj?&8)dUSxI;4QjM<`Kurt`+diKPuAP^@S8r*|isHy<)0J5- zqU^5hKj8n3;q4K1s&G|d&{@mu!D^Di$hIwl)jb8OOSLO4$&uhGvB!>FmR@XFm zDXFk>a?anYW@Y=rian;vdg;!XHCN!Jj3?1|Q3d zKNmGPvnjk#jy#%^uUxgH%K{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00011.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00000.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000bXfj|`@bpP+ks8jjVu~ zUvCeoJ)ipDZJxaL&^+X9L>Bjt*gp}y7SvCwMm8zE0;iyj2S8;QsYuJl77qq?9e^!5 zw+CxLFwrKIs(PwtGByjTlbc1;$r{0giuF@fJDJ{}rqI>&{$z~7N@SsxScg}#-Fvqh zs=l%KD7;yotexLH)On^2xK=~$kKF$HnrcV!CcXBtczN|yI%}<*wob!lU_FuhP5MnO zMc6r#7jSClMDScx0|wxJ-`Qb!)LAzzzS#SgA<+&PfILw?H&axmmU`#1MyFbb+st{85W%Dx!gE%4e%A;^|afziTyd%*2zNlDa{2=P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..618d903846e1aef70095fd20e91a24f86990d329 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>A$>EaktG3V{f*uEA8o`$(+ z@3s7vKe_wOVU?Dp_9Dj?&8)dUSxI;4QjM<`Kurt`+diKPuAP^@S8r*|isHy<)0J5- zqU^5hKj8n3;q4K1s&G|d&{@mu!D^Di$hIwl)jb8OOSLO4$&uhGvB!>FmR@XFm zDXFk>a?anYW@Y=rian;vdg;!XHCN!Jj3?1|Q3d zKNmGPvnjk#jy#%^uUxgH%K{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00011.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00000.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00001.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00003.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000>~8(Z2m3{Ip5oCk7KET2Th_*e_;4>0 zIs^DK`}=*|L!yS|i$SOZ?y*mn)*N}wD5S(_J$!Sy82a82kv7KkUx0@H&Layo0000G zgq;l~n=>UpBc>u$>zm=we76wn4D<3br+u0m~9`F4oTal1>GN~oh0iHl+ZZ5Nurai0J z1~Z6@CTfM7s*g~6Ohfro*{HQiv6tu6s?9_1haog_i*}y`e6W(~Q3xm)oeUpLg?I0Q zv!UIXS&heXkbpCuS9mALh5|PvCs>;S8x8+!qZx3&#Fs~=&tMw|I9Z#&>)R07*qoM6N<$ Ef&z**z5oCK literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00007.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..76770bb568ac3fcc2c7adc0b7daec1a011b9b209 GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Gba4!+nDh2#U|)*@PeWqb zX7i8#+#l)vc1ZHbycn8U_+$U_&gKpgu7gv6ni$IE|GPh%^ZowqZL#YX?lphDC;rZS zrLL>rx23+4s`*o4rxW@<-X?ByMc0nFE7xxu<^Eh)XDgqU`P@aa^A(3}@IujBzbC&h zyl1>1zo=;MwYbM9ki7HVyMNj7FGK`IO+EZw-)(9T+46kaLe7Ui z2j*Pfd#aQz;`Kwx>q;u`g0wqhdG>5y_-aMC_`{I1Q~f*xH_tk9yXuNjW>e3Xr1sSv z(WIO`Yth&51@Ar|Z=gu9`%AA|GiZ$t| z%(1J}FVdQ&MBb@0Q3aK6951J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00008.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00010.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00011.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00012.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00000.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00001.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00003.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000a?AW~9Fw>!fX`yT-(M7=xB>XgeX_Nd)Nf`XvPl2{0001hP}tQ_ za;H~HF8uWE>8#waM9Zcgj{wi;#E$Zar)7}(_TTzQY3b_hd3;ij$BsC<*v(_#B<@8l z2)xXKd;?83Rzn89wb_`wvuf4I#1KlZTx%a!qItj@qo0QN1coLa;xGYAx&a9#aGl`2s zv^sY^K11s@4dbhdx0816KE9i#Jb3>Yg2-3s{!btVH`$(rfP&#<#9%Ajy+$?EEF^ep znf0e)qhhDk-~7nglM8OWtY0}Feehg6d6gGS2(4cimK(_pR;Gb%P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00009.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00010.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00011.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00000.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00001.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00003.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00007.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00009.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00010.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00011.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00000.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00001.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00003.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00007.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1b11a7c4b3edc7c1845621afecc2498d0dd161 GIT binary patch literal 920 zcmV;J184k+P)c_+&W5cP zzMb^}sEPyt0KnHHAM5Jol2vmG9aHR5>QstxX{cQBKiXfx8-PU_XOpP|JP{6uEi$MZQ;_5G z`D3b=eyH(gtyy5FzWLo&n-uJgCxtbAE zfg-RIjKP~A3%$vplQ9Nck=;A^Hk59gt@@Vbwh6mDP+*~KLp*rp(-bl*3h0qd(lP5N>h zMpe~MdlE!ffT|V8-N;GtlvtT$(PQm9NGrjfNO$L-nK%jlGK!^*>&eiMdz zsx%TY>rnq?+!Tqgwf0eUs@f$*H2aIm7nRN_{3hhi_KABb8^t*5(jr!C)x12bUYuWu z8$V5qG{%{dPJPQ`u%^YVg4E?K)pgKXXaLykh)C_(a uMNsC*>92GS3`Sy+o2dW*000009OW+<&Qu}gpm@vx00006%X7RLGZ223d>5y~JrXZ}dBbG;F6P5ic+#^qXPHWftlZ=D~GeC^W>Rn$Wr<$adeWkfNr5a0uo8S^eDj-pIX2We)+1OxIG_Zr zTM0xT=s&z3Bpk)+Qc)$eW>+rkG(2hxRh_2@8<&zr0~v74BqRHmQAstje=+ETouCTs z1ncllbb3AChK9$%Ka1l!vs>@14lufo4uzB7cb;L%S8w>oRUpg7j$*y=FV`j1u&Zc}54EKlK&pbJkr| zX#X0}<;ad$Gpa%|_NGDt00000000000000000000004kD@CyUu8r4MX$cF#`002ov JPDHLkV1f!X5SIV| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00009.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00010.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00011.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000P5e1DQxh?BIismQ%dtT zjh&A5#T*{C6M~#G9S^(o>nNbXF~0mvKdlTZzlAyHlu}7*QGvFl%FHH}P*Zx2i`JMY z`VfZsoM~)<`B%m!&TMJI6pE1|7i}^-cMR-K-fip6%{YWH99IB?O--#J=2w^5B5~T& zn?o32UjQh|1U;qm2A8_JTNPvXEvO*w9!tzNC3f_~mB$cf15i@694f>eQ_)upTIAR7 z<>C?J-XTOGx_=e5!yAUMZwmq<2*3}1I~V`}yqio|Vr{JV`L5>?-EjA9?IZYPrQs~g z{h2C7&{`v_z?4g+9!Z-R%a+&gDPTP^p{S{-i4voJT{~HMpb}R=*NW;2Fi?DU@|LfFuGDDWIgKv`6*Yb9qi@QLw{fP{Y-m3nSo9my8|};| z64^_U;(Go!9R|uck4{h=D8h^e*@|wATZ%WJD$9 zx3Q{I%b%)JdbNt$aeewdNnI^r5=%Mgl2WNz?O}G5B9Ca_iE!_P#k^aUjAtLeMYaau zMeBN7sE)0G5{%7R8Ep}q`8M<>)I^-(wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00008!M`F6MBzoe-pyXnWY>x{3lC?Bi#h>C(!eAvqgsZ{~0ONE(DT0%|Pb6mB? zJh7Y5&EFAa56r*ZHnnH73KPgia=B`g*?Gpm@8qK^gPXGneJor74AwPLK%HMrW^>7+ zm|kr{2m1zqVsubxI&W~Psk&KXygUSD)aWtAY_-IXy}4S^gwX-WQ#EfY)QD-w8wNe) z*XMFsF~+S;h(dJ#1k&LRP1qNLfC>iSmvs>g007=iB22N?SNnL?$3}3jjT|WG{n>rr@YLa%-m3^E1>CzEVOOXzvRb} zt>`aoQuN4ogbMEpP-kfOdXx#vlBpGG23h-D`6j#rpr$9g-I5{8Hr1M{v`t-IM+J+< zpzTZ8?uh4Kr>_(Hw1bZ1^CEBg3TT=d)iisxd zi$2QFW3|NibT8GrDy5@w=3bCLwUGYbFzo0ERo8j_Yunl6u`^+uzCLWdnmE1F=>$)o zw{Zqg+%0Qi%pS-!Q35#4R< z8vq&#a^gDw_53i-8=9h!-1(@dhE$$ay6qjXmB=&k6u6oQ0000SVrw>3V(dFhNl*oEsjzXDYHFW9_|paal)a45y(n;>Rv3AYVZkI2>cYDo;+&=<2mrfm&D i#%C7*0002MUj6|&+bhgso!u({0000*0GB zm#*9hH+Q=kpn3a@XqJfXIBI;}wIfm88dpYLh4oYwNDDe%zuKI^?um7NRTT{ER-@AK zyr^kNb#}~t1E`~^w1;}yG-eO=Yn*cZbZZ|?hXOXzHzT9=%mSz1pc-0NS#swF>fT+A zo6yA91|UuYG;{9!+LHOkZV*{fZ+#AAGyDin15C~a&*8Db2d5yp2FQLSZFcSV7hpxb zB6ck`ZcjHJ0k3g%5hjEXLJ0XxhJPuKzuh*j4CyeEr zOV>&7maA}#inWI4##_%Gky_nDHL8Z5f8eJlS=`ppoBrs^qD|Q>v9{;!&Qld4TB%*e z9RZ;1ZhKSh)e%szAH)s5XM^NKlJ-maZBB1lt&+|NZMgqB17J=fpC+aVTdFo0kp8!- zuZ<>GUAM#DV!Zd)(Ya#nEz+;w0InXHwLrN&4zCCiYjK(kAkHa;5<&+DMJJZ8Ohjb-diP%ewIKukZl7100013&X-3yrBr_1_g$A% z1VSjiSYk^lpB%3x%E$2ghdz3{q4`ko>WYnHjWJxM zX*gHC?olj0WlIPlxCQCW)FNQvif&*D=8D1xw4jTqv%Fxp7cQC}W5WpB0}k@k?oF1V zKu=gK9is)ISX&m4kmdCTC={Rk9{600C0t&&DLpm*t*JJvg1~t)DXSp=Zsa+lxVQQ5R$QAPQke5!q{bDtAh;9xu;F zn<%H4L*1tMBB|OmPkChcCkR>Z^ZnR6*}9CJi50a3t(w*%^k+R z?UY!yN~a4&*Z625mh-q~d3{g+K)OjL`^#vgn(Qxz8r%t8=uQSnrUsWndI4T>{X6=0 zJU`9A%T*U3YkA^Xke#HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000W*wnNN;`$mgTO~m` zy*mU4&jo;@OwiqOe!!)n?pDP(JOx$6?6JgbS7Jv$Tty6FHUM?0) z_h+gUL2Hey0#h%QdL(UPEL$F*Q^0y;LQzvu6D3Cdwsx}eKqc;gp&zYKw@LqMACB~f zcHvM%i@qaOSa*Q9Lf!kZEm+=}iYPO*y|2|D!WsavJn43;OTta(2#Uej zldwJ!*S|(z7tW~zNAWqxTfPH^mPYr^X?!WDsOhPXz9}=_#+h2Tq5X7V(eF%ewlkkd zW+yGa-Rfi>7$vixM&AUr%%fstcGd3N-Z9vn?X%Fc4)M=Y%z(g{_0 zEEfw?;w9kN>o#KTNR+HC=q?2BgkL6I03OH>?^Zz==>lM(2B|xhcFnhV=iAVErXG1R zv1k07*qoM6N<$g8EDw(EtDd literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..62df48067308296627aef7a309dd57c5d626c4a3 GIT binary patch literal 899 zcmV-}1AP36P)wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7f929de12bdfdb04ecb7d122253c3f15829730 GIT binary patch literal 667 zcmV;M0%ZM(P)v2oMnTp1<;vO9UYroE`@N000000Mq$t_6#A=KhN{* z4klH;G_OA$^?7$xoOefClGwO=EuUu37)KIWmJot&a2H8bQjq*spq4$C_S@_!L8D1x zjTgXeB&p=rtm9?I#i@a@JIm$x(z^mU=a+*m=h)6|n#C{TR7rCtd1b?^z24fZpp0Ds zJvP_9Y}_J>9kmTmHvRbKBdXx6 ze;!a|{koNs!`w+Hz`p2`6vWR0rMp!zvz!-ZkIQRC6oX`G((q|NMNoM?(QBgbk#fUW?^JAFC?(Oj0y=?Iq%H@veLoB-1tj5{sVhe-dmR1B zo;DV1qVJIc0000004CNfD?URif)}xyDZGfSSytRvs*W|wiu+1s8S-V^?iI?JQloOf z))mT`Qb@u#qy57s>0C|8QTCR1N&x@>000261b^3%odFu#=(GR;002ovPDHLkV1iA0 BDxLrU literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..5c300da852888c4c9f09b41987b5ec482ec5f5af GIT binary patch literal 460 zcmV;-0WJY_TzU;+Z1=AOSeNakg1;}8G<0D$ejh9gr-@@I^3x-vTR zmGk=PnBSf*Cs(IdRg(3QWn_j|eUF7@F-BFbqLfm*z$vm;#a_s)yAwA6+HTMpds1X zD`2L~HJ4S%R~xA=zWxw(^)zk?lbi>jy^Qvk@eK^!o#i!q`uQ(Gj=UC!$*5uyubaW_ z0OVC7FYfYSCXd(3+!_m%QMFp-wx~wg6WKDsbw&C(F3-o0eaLJ~TQ!}JnlzbLs-pCRSxYDeUEG)lR1Ow<&Zry}ub_ za1yJ~NjII$7%WBi0ssI2000000000000000%lraZ^^SV+rk#-h0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00013.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000@;1iWD+IoAaM00000z;V9TRg_Zb<$d4l zI*mqswwS|iJt-)q(Dty)I70~)`uK@c-CG&7{3$G@-1l84wJ1RAQemc(mQYpt92d1Q zPxL0Z`Ch4Pf%#Y4CiZNt!UU?4S}y8jdY&<`JNeXYgPXAlJ_1(&gLO?SAkMETwY4ND zrVpFo;M@REln&}m=L0THncFqS;UTCZMvpCOhb4COhpUJttPVh(s`a5ljF^hNqR>)) z{a-E-V?5i0EM)hup>_B`6V8PoAc6t-BQAmg0KmH`ge}^9*4It1Bf1gp+ukGiVy5A< zZ1-m=6+v^2ECW+7m3$D3w53JR(m+o zE7}XEDq7?np~AWX#2M;dk8Q%Trz#@N&|2RsKZSJw#Pp=wtu|!os%BG_x~j|dsvu|# z=1#(TM?80pzHaPO2ae=(khgpVOihj9&S`upsEFyIkG?50ZsSaBSkeA;V38kmZ?wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..b2883ac9749e8e56f0c06e210dd82c6b5521fa21 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>A#>EaktG3V{f=%S+v91fTL z${+okK4tHh!;;54yEr~xyjQ$0uZUBj<6uQBP!j{g>7PY*_4mtv$vSmRS7cd!Yu(Wd zrAYILGq&d1A3r~?+`;pGn&FL}XPS2&l^vPdFzMA7pCdw^twpKI^&vrfl&6RMoF3D6 zH)8t}d1k>Hvk$q|I?H)V{66V?|NSse>XmYF)3dNI#i~2a&iYJ$I@PZK(W(X$>r*pc zO+2i-y4Gdq(kHP+!ga;>R9DPq{;Om?IpQ3G+`a6rCK6Ufw`4l|2ejzs# z|Gl{z99GxHoz!0a|Jzw9h6Dc}o_pcNW!^4#|7!Ex4m-UfrY~)Neg8CbGqkmx*1kA; zYMmPAblv@>EcNYKYk19f3-6gF)I4wHo*KCYDL47-<~oF|oqu2+%bGh^rdV2Jd6%BD zPSE<~{_IQS+YaN0v2`(f=Pmzj7%Jvnx3o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1749fa0fb0ff9019728cf0d14a863f70fe9e21 GIT binary patch literal 973 zcmV;;12X)HP)7>;g@15Vn0J^#XxpuvYZ* z*UItQvPEOpb2XmS1epFiOK)y7XnC-T1hq)_wj*BSsZsUo7!cxB zi?L8tBOU>yHp9>kdz0Q9J;H8lHd(tF#3$f%uHixO_yLO|YkFM-gy7{{mz%5H4ae>v z!U_wQ=AL#4IO9dru86DzFN(z?3g6`OhX7`iGE zpQ-=pL(b**fOa+I&1Bv}@3-=-+I`-MZ#bQdn>|^3t2}mR(Mx-gFsrA~VQL7>W|L=n z0`mDq#+163**O3;!$aWJ=Jm`jL3d_&Ji|SeWmP#U}GkHJ&sb2V_zf zc)fQl#sXsuf_RlHg;UC(W93Mfm>`gzeK1pIKQ%|couz|b|%xX;Ac4~ zCpcN?iBqQWl6u=MDQ-soviAXcO7fgG`ov1IMQ4)P+Miam)_P@#vmF3G-+;6a7E&DiTOb>ay)MR7p1A|k6D>7{0iA@ z=tbOb{UeL%m(WE{3y)?UA<#kRO8vG%*+D vaL)OKDR+Y@6+bYZFH&<*6h%=K#f$k1%$o3zB7P5@00000NkvXXu0mjfXD`)h literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf1a8330ad8ff7c393a741ae35eb6906f4db79 GIT binary patch literal 533 zcmV+w0_y#VP)di$qJD`PevNqImeax43JkUW}F-gcLr z8yp@4t_BeM?^Sua#X+OwsBS7T$koc|gJ$kJ=beJmNN=r0_Uc}`rFEG0dy zD;ggG#;SCe<>9VWFN`gh`fS~V-7+5I4G=q5_dzgx>7k4zTbCFJ(pqoQ>2(lsqTBG~ zJ)+2hb84Pg6XQ=);#*933VN?u-PRMw`%hR=^ov^t=|krS0CgAo6^vJm&8-c{lX=_Pn&PyR88{1AqFYabuI*)&Ry`Trt<; z&URfgfBj(DkLng%;pzW`?XTF3C1aK^?UF9_^ahCR`Fc)fjmjx#&oFeZg!U8{^G|-P zydPbsliqjrotJ7Rne1;Pq?+t+MjPCTS?ErkB+~{00000NkvXXu0mjf7SsBW literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00013.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00014.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000@;1iWD+IoAaM00000z;V9TRg_Zb<$d4l zI*mqswwS|iJt-)q(Dty)I70~)`uK@c-CG&7{3$G@-1l84wJ1RAQemc(mQYpt92d1Q zPxL0Z`Ch4Pf%#Y4CiZNt!UU?4S}y8jdY&<`JNeXYgPXAlJ_1(&gLO?SAkMETwY4ND zrVpFo;M@REln&}m=L0THncFqS;UTCZMvpCOhb4COhpUJttPVh(s`a5ljF^hNqR>)) z{a-E-V?5i0EM)hup>_B`6V8PoAc6t-BQAmg0KmH`ge}^9*4It1Bf1gp+ukGiVy5A< zZ1-m=6+v^2ECW+7m3$D3w53JR(m+o zE7}XEDq7?np~AWX#2M;dk8Q%Trz#@N&|2RsKZSJw#Pp=wtu|!os%BG_x~j|dsvu|# z=1#(TM?80pzHaPO2ae=(khgpVOihj9&S`upsEFyIkG?50ZsSaBSkeA;V38kmZ?wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..bfdef21d0d47becf99dd2af5afd42beff7eea6f6 GIT binary patch literal 501 zcmV&<3aZZ&c(*@eG5?-JA(`SHS4_9bXA&@@Sv0=59g z-=ec`TD^Stj;7dWK=!b-Vj9^g#-_}B$~gI)jg0gnFYoToO9oe7E{w!b{?_0x*agAE z`z5SsZJ(cX$?CuSV+{blU%B_NRqR$@wI8cu7qr;Lr=fSK9+b+<>ThKA?09Y~dkuho zyrX=0XGg7iuDb=EwATPs5BFP3{9p#3`9Gc6XS@Tl^RIOBvoNHqe8vD&4UU04s(T=+ zS@{6$8D;foPg#ZZbT51Xbke(L_HDNP4ruoNP1!#-9)NlP%VT;Q#$ctltU`Nw(R+A9 rq!$1H0000000000000000JzOR^x$&;>@O?N00000NkvXXu0mjfBu4DL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..609f80a150750e104fdfb29125b041b168766d5f GIT binary patch literal 981 zcmV;`11kK9P)2pw8!2B^&al=JWnnw?Z@2>;sO5d2$OLgy57+lV8{F5zH-hH}tjgKa>LQ>7r*C;*&2l$vyMqi~ zNKDO}mN>uKSMDTX7xaBenYo)vc2B~9VQM_GPT!j%ilQi9fc^}SH9~o!u}TZmk6c_W zOQ@wsfB8siQ(F#WQAdXb<)g(KtlD^jddjyN3_H%@8rQj0*=ZHXBM7wNJFD&KPGIM4 zZbRvu<*Xt+wavc)j}z239@iz8qZ65)vD3Brd&Frr4Uk)!w!nvkC#fv-BoilB3@#<&UU_Jg>a0Vo6!d8D+_%Pq1yy_G(D2DQW>_4cT3Q11u*j0s8PL{0CKTi7JiX(f)f!>U9&7;D(2Rtxc1O+B zA`jQ53SuMU#W+>9Rf2E!P(jtcea*#LweFbsMJ1_V00QnL(rq9Q5oIf7N z;SAfY@vI`%K3!vsF+JOgrq`H9nD9IOWZtq<`s|50!IS;sbCKnuidLDryxnK|Nm2JT z&ha9Sqr6!7jx1$L)qm2bqdq%Zzpop%mTLx_^!`tcR_1Izlk$K{ue2WFAp!ZreY&~(j--H##xY#mDAG$sOz%yL92Xqxj*y5{PahDLJ zFW&l9Qc+zU+HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00013.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00014.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000x&WHSsb9A6VA762%TPvfM-@=^pbzNmriwbqyTAA3aCABGij*Hev zBzg*NK4%(RAn}#l#GWlph(a+^fq-(f>IKPI>7D>>a z-c7;5z5%FFI;b_BH-t3gZq*ovZ$Sld_gG@KE3u;=t|C&H9e^@b%b`NtF%^Bqphcd3 zFPDfh9!=pCPLGel1KyCrzAXrdU;uuI+ra<;;N9ekCDwf2=UvYuh7lgy+DGuoO2e}( zk7ueBQP&zt1*ZH}>XCI5W7#tO?gHYG2t`drO_Uh*dF^E7fl6EfLqE7sw^?7}4@Y`K zyKtzXMc=ViSXY2JL*46<7c5(*BFYTh`&#`WtOFpHC*5K3ElW2wTB_7dCD*HhpfMPG z64pE7zG{qhVV^p16rY2lr7K`)YIN_M#+QPMn!febZ_13faiZ33Xg?iT^gG>q+L=$} z%m7M(;NN;StY~q?g^4oTK5VM000000000000000000000A9&AKYpo4w*W{a P00000NkvXXu0mjfXWBI~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..d875ff51f0e19b118a5a04b4f19918670a25042b GIT binary patch literal 924 zcmV;N17rM&P)VNan-atRd+)f5RENW0ss0CNd|g+fo7`HnLGOKOHse2R!Ugia`9aoU6j5 zOxv>I6;QH8F?fKhQ{sxC){JH{2dm+j8tSe%_X{m%u_v}yawKvh=>A53YydX%P|sDSd5jJCyJ;?4 zKD5glsi9{%b;&_107!bnKw5qlE+tYgbbW$+qBia>#Hg)DwAG?0ilQir;uBU4ZT~+P zM`2on3~5I=pJ>`xOw9$gntxIgJ+48zZle{`{`s`=!$_99o_#4I{a%kgTX1M~+FG$J zvrtfLX{tZf*B}20kDpBwO$up;X^|3C2kXzuBq63U8Yh{s${8_^(J8H&3%(WH+!-XK zz)1!@LUI5SXA5&c$r4hwOdoVs#2w~MNewacvah3=-v6Pby13(@l_~Xb~4Q=q= y>7J$T=c-bR9fSl|)m8d7Q4~c{6h%=K--~}i^n>eIt}A>10000A$>EaktG3V_}@4mwZ91eFc z-Z}E!e$soR?!Z77j$`{(eD6oQiV5({5HeQ7+HGE> zp;L5bd%V}g(uw^y?quaYt(WO9J|~;FDl3=OOEc@X;P171TW^_vUKlp#jOywu-*)}~ zW3?`1wKK~cCi`1$8JdzyB{;W7cDg^c>{j0VEKX*Rut5E5!8(Cd+x>!5uf15U_3`xP z{&(kA2E?@rUD)0pX67Pnoz)^Tp|zS5LLQ(OG-Jdb&NsfzK6JU8e=^H4V`|IqM;t zeqr?bym`)lf)C5=UCqDwPvlwCaKW|ad3V$1R$tq>{-2G~_l&Dke{gydU)a68nDxB>fwLENU#u$X=vnw`zkl)3jcY<`*1Coqs{Y^i zlYy_<=ZpVg4%3VFl0^loB@4AzvdomxY5f3-J`AAqm_Ky!_V+3NYBxc0p00i_>zopr E0OqXfLI3~& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000nNc?A762%?{)^2U&2z#d7gDqiwd+YRc1D+gqqUVxM+=e zq7T8%=S*V@%)dG|ab{~1rcjMkxoDHwxnf{<@@m^AH{%d|1nvL^o0?WZTwgfVoS!Sc>jM46%OeXafw)&Pj*Nw-^V%F<1ZmMV2qhwD{APz=VN zg!PHI?izhvIHwLA#pfVz`3@Lb8r^?R<4ZwBO;3IFO_}j;oT+si+D``-{m%4eJM)QT zcGBY8txo2FQ8N2!^i5F9JSs+JSM9#NI|gs(^;ziEbS4=w2&J9g1>c4)M63>7C~{q* zRB1vVabJmE6zbkGN)%K3!8_rHNfdy!3E}rGj<&|1Er(n@^J(HFmK1;Y4X=3XL0%aE z-{*+?zc;mzCfq1wavSvv*IEHdIugwfw;oqeo000000000000000 g000000Qg6I1Ciug_Oc<=TL1t607*qoM6N<$f)uUcw;ixx){hsI9mutVK!B#;uFX4Bsxud&>i*oyz=2VP_F3}a5g~K0OuT`2q zwdOn`YXVfhre1oXU>CU{tEgWA7kbu!xv3lK$~UK;7`)u-jKn`n{R(JPwV$>}EN)zR z>8v!DSK*rTSdxPJG3X1YEYycJNqM?ADNaE;=pWSYruWq$6%W8Q_r(UTrOy5mun@1T zX{|)Z;q(o*Onn#|GSdG{ZbWM>d^;suDMAP#q=tbSYD$cr?r0vnhKi%O6!{7q=}F$tk*}iz5M0Qf%f#ap z?CuTAs3f^9NkNIobd%bLnvsyiLMdN2CUOPn2+U^YM(`%$NscJL@1^k9*i3+;Ps~L> zxRE#S7S<8J>yrL)jeKG6$K~Z(A=)tYg}whQ9D^re7J8CFCvyyzqPusjhGMzVEXQi) zP(7XUXg1Vev2mdCdWHH8B5&V$+}Wu|^gpm@aC5WatjCD38uU2zH4+1G+IUh8Ek9)9 zlj9rI3(dj-&^e)YH=T|ocqzxM^jq_4Vnms!eY4e5L-z4fY>n+kMkF}2>y#%`>-R=L)BX1oa+;>j1QP>D@v?jx|-!h$uUasrE%= zOMP`HE@ErL%EOxY7KVDNHWD!l*z`|%kHiaG>!>6|E0+XmCh;fE#%JjiMBlp z#W?TMO}x7`^YW~Ev40`1662cqg#l9%)b~6FYkJHoNKMW%T?eg&20+Y?_+%*;#e#jR zYX)zjHsA=w4`ik$o!KK;1Qm`zf2DI^FcOd4OeKU6LI@#bD}Mp*77y^vR?X}H0000< KMNUMnLSTZ0^sUbT literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9290c968cd9343ae9690721f032d6fce35233e GIT binary patch literal 486 zcmV@P)eYK zoM==|c{e;!wD!F0?57v!8IYLiR?9ejp{{&0@4SN7^AoOeo&h;k%d`!Boo-ilPe~CK zGf0lpuEu`}Dq~ObUwrtv`9hluK&j6&{7f)|_-7LRqw9sE! z%U78rtCzT3zwy*m_GH0|^tHw!I-`;IatVM-PXGW2Va92w$vmwThl}~ofpXEfKDIR9 z3NQ8QgVi1$#8X}EDB^1Q{SvP;s2)=eP}ZisR@3Gon)aC(K@}1EAmL z%_Uo`!kx|PYjxq%Cfw=(Oj>h%le)I;&#-w9NS?V9tRZK>jF|U~??9b)KSfQw0q8sG ztT&g(J5E}AZ5pop;njP+cJ!0YF?jjtuSX1aVinryWRQu$R17Zw000000000000000 c001z}KXRlYXWDxcuQseM^GH=P?(!tqb7Xo1fWdv&!LV#eMJFFW&xT6%mT@ zTAA}**WFaYH!)Mor$F#MLwDhw=$PL}*D))Yor)6O$P)Qx-tG^3m`~;0^k1@nZe6)Y znp_qm1B1cIO4BWc+pZ+X2&|oc^~&;SIa_xxt5=tt?yuN(rFUAe62}++if607#0JgV zct2{wuT>A$C{5+{y1;wv(!#LWA14}KU(GyK;c9B`#F@zktuA7_SR%D{FBNmW#^HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000@;1iWD+IoAaM00000z;V9TRg_Zb<$d4l zI*mqswwS|iJt-)q(Dty)I70~)`uK@c-CG&7{3$G@-1l84wJ1RAQemc(mQYpt92d1Q zPxL0Z`Ch4Pf%#Y4CiZNt!UU?4S}y8jdY&<`JNeXYgPXAlJ_1(&gLO?SAkMETwY4ND zrVpFo;M@REln&}m=L0THncFqS;UTCZMvpCOhb4COhpUJttPVh(s`a5ljF^hNqR>)) z{a-E-V?5i0EM)hup>_B`6V8PoAc6t-BQAmg0KmH`ge}^9*4It1Bf1gp+ukGiVy5A< zZ1-m=6+v^2ECW+7m3$D3w53JR(m+o zE7}XEDq7?np~AWX#2M;dk8Q%Trz#@N&|2RsKZSJw#Pp=wtu|!os%BG_x~j|dsvu|# z=1#(TM?80pzHaPO2ae=(khgpVOihj9&S`upsEFyIkG?50ZsSaBSkeA;V38kmZ?wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..bc66f86d6417c55a083f9580a9255c0e808321df GIT binary patch literal 496 zcmViD2_FGt+xPj^?qY~RQ0Z|10002Ddl`>E&og}vA;hmC z1Y_7{kFkr?`$Ug2^XVXVZ_B}Dxn0g-u2VULE@?-m0VrKwo=Kb{X`&qB%(Iyk|DsQ+ z@?ZLNY}UHgK06U5=Lvsvhe>6jrIeY>J4-j6YBq98XH4Eh(@p&=|+hRYzeW}{)1_Wg}7%`ZWniKa=aG?+`E z|1LUur`6jx&uGZ}49G5)T24JriZRsmGi987#vnbt$gjJ*vy#b`UmY`l%!iLilQirq9}^n`3lOP=Q*yA zLdzq+c8fAZ6rlM3|#_ z+38DUER^KdS&0|1`*33tu zs)2t67`<68ZTD>A&qfXRv=v2i9|ryb=#y)?5j;O&RmPT@35OD#zWIGI%iXZ;b}~gF zF*OH0G5#s8+(^PM=;x9$bAw8vCt<)eH6B@~?@bX!Q4}v={R|LOxt8B~aS{KVbn;`T zScbHhlDIap<FGoIkO*8uzUL&3oT` z;ewHQXOR_M6}J_143?U&8USrC(Kh`PxoVk*apaJHj%f`NcI=+UfzQm zJI#vPmKrSg#h*(-+&iq+*pU!C#Mlz|W=k9hS`=zwax1a-0yqpXRYN1k&c)H=VxF~b z;o4eIy#K~kteuv*b?t*+pR2yc0I?FVt6^N@!LYxFu(Y&9Hs#aU%d4UBG4L@S zu;VAL{3O;^w=g{ef=}~D-jN-I_To>2)+<2!29(Bh**&}t#CPSG-S#O=MtMve9m(hZ z$zJ?NJTVkSQ4~cXWBUI9x`X7q$rJwTFF(pIzZS)JCPC33;Kt-F^?B+7_l1;$5?oJr_@+oKOip*O2++f=^TsKqO@}Pt=lzS)`wN^~Tsr`CF&YDhMRud#+Z$^k z=Lbv6ENzQY#ON@sC5-DxfJDtcfIrv)s-Yj*5D2k#eilQiryZHwenWf@QA@TkI00001=(S+?wue~-ir80r1$ch$>P6utm48d?Ddd;D{wjWt`Yq%xopS?m2WNEyv2-}jWx z1BMsD&;W?@_pGwJ#YJQEQ9D#(kh6`k7tP%F+-M5QD_wgR^*8s_Bb9l~2%;4e^^_bL zT~T}mbT-9(Er+L4`(o6bnzQW?x@AVh2jG}o?nW@Z*`Yd1YE=Y+Xz!bRdmBVdbPIOg z5mhe?rsjz)>HOD}_&p}1>%j6~Q9GI5UqHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00013.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00014.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00002YJzJ1cqWxiyaSd&#u#cZO)wPvD%X48$={(OesZ{}5mkKkTw1ld%=eVkk zSz>pgo9~gz9+-WlZ|caFDomg#Ddnn8rYHNrZ)C13gPXGpeFUxm1{)eFpw6!*wWTB| zreAiUgLMv|7z0$B&I?RxYHpT~!$VL(jUH3fUY7W=H&+o|7+k6XL23%lDVkOnX4!nzOyRN#OYaS;pv0G>@EOwrcY`gqghsAh!QHunfVm}$6| z>GlkzB51CWWnjvqk&mQRoN3GBeF#{KtWcFS#MBa}yv&`<+)$}2py`J!v~|+IEX zorLXy$p1QRoj9f)bR?gHtmP}9X=+@)Ih~h+hL|1t=uMgPHO|B?EBbc_9{G#m-EGgO zva^vM+p01(|LRpdNdb<3?GCdhj+raq5igw(_AfY zqvn?mvD>TZl$%=hFC&=~dJH~p`7Wr|vD&yxYIU0it0uhoR`UPe3Ez7ZFD!Dv^o1NZ zcIl7&811KfK222dANpsdNM%lNP+ge-kVULF!_6)}oL3 zhd)?(?g&{ca)bLBOYNygylAtx3qb$?00000000000000000000rtu4NrgtCzW;j~_ O0000wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d114b781ce0911319c6f65a3214c95f6d5d19e GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Cba4!+nDh2#bl+hG9*2ut zX3gF3Uv=a3I+tc09=<6Iex>Kby*rX-x;MzMgY>H$lSsZJd$i>JUB)R(uiU@HHt+VQ z{Bj1_6d`Ahqe8JWwx+Inb|kx;fpypRQzfT)ZmGW9e*Vh*KYa{$kNdk_dOvr^wTep| z7VFX!W8?2VEoRwK&AGg#O`zmn>O#GbGm~cT7QA3|SjJZW;hGPfy(|n2AFA7?Exf6= zVu$gj@OHPqr@ebkOAmaz=<5CC*URd#?M9n)s{U@@k-B!SiHLq`X-{>pv_5lo=be2^ zPw(2SaMwNPc;Pzk`vlfl^KOk_we@>e;E(d?f@Ldpxdx&y fS%CqF43_<5NO1O8cQd@KA0+JQ>gTe~DWM4f{eZ)3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00000.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00002YJzJ1cqWxiyaSd&#u#cZO)wPvD%X48$={(OesZ{}5mkKkTw1ld%=eVkk zSz>pgo9~gz9+-WlZ|caFDomg#Ddnn8rYHNrZ)C13gPXGpeFUxm1{)eFpw6!*wWTB| zreAiUgLMv|7z0$B&I?RxYHpT~!$VL(jUH3fUY7W=H&+o|7+k6XL23%lDVkOnX4!nzOyRN#OYaS;pv0G>@EOwrcY`gqghsAh!QHunfVm}$6| z>GlkzB51CWWnjvqk&mQRoN3GBeF#{KtWcFS#MBa}yv&`<+)$}2py`J!v~|+IEX zorLXy$p1QRoj9f)bR?gHtmP}9X=+@)Ih~h+hL|1t=uMgPHO|B?EBbc_9{G#m-EGgO zva^vM+p01(|LRpdNdb<3?GCdhj+raq5igw(_AfY zqvn?mvD>TZl$%=hFC&=~dJH~p`7Wr|vD&yxYIU0it0uhoR`UPe3Ez7ZFD!Dv^o1NZ zcIl7&811KfK222dANpsdNM%lNP+ge-kVULF!_6)}oL3 zhd)?(?g&{ca)bLBOYNygylAtx3qb$?00000000000000000000rtu4NrgtCzW;j~_ O0000wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..dc37e17f61cbafd272f2be3f472f8e92eb441e6c GIT binary patch literal 925 zcmV;O17iG%P)|^$Yy#r!>4v!SS z|ExCR&T!kDi4B3)g$ZbXhz{DxgLiqb5V}Elmk>|>oqD$?GdbeEfPHW5UAP1n^1Fzu z#*r{B}%E(W+8c1vUl&X{=_N?l`3}Sr)0v z)UKF)@hU<#u7eS)RAea9el^36VS$rx!pwQZEk(E%NU`Q$Ta2zWT=7MN0}n^h-NK## z@d;CGPn!wQ`BlOcqfKpTW-DSEW3-3#B+6&yc_=|g#COU0uqR;Z^I4&h^gXL8<7nP{ zaWhCn4P_21SE%;~FaI4zoD1CO$z!=+_r}MLz>G}8?DA@3_C-4Yj5{es zm>W}1}2nOmpt&@(Cd`KeP#HFw!B6= z$gUcC-ROS^s0{6YyFLZuHAp@<-emjB&6uQ&DmJZ!(#(=1Ns=TAab}A-;VuD`TG33QF5t@ zp-h`21R5F#_u;krimD%@>tPHz8ssrfxT!#qo7k%HO^q^M;0r%moGN`o6hpe0Gqm;X zX!GLcV%Ox~w-d0y=vtm5H)@v8-0f^e^;G2+*XjO;<{1)->PYiE zX}0SJUE+>M(6+er;NyZ)#Kr6vAWEAvn15&LK4DXm6jj)sYv_87^j>}-euHX~$^J4< zs>%LhtihEyg|5^{GHWmu=>-4)0000000000000000H*l^)>6TkHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00000.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..734052ebda129b201f562321a2fd3c4e1b61ef4c GIT binary patch literal 496 zcmVPo?huf68 zt!|(Yd8ubZn65lVK%rb)=UQt;^xRW@|0cf<$jZOXUK{(}@%yYg-Q7v!Q`Wpo&{>14 zR0(Z4nXe(&t{+Y_pf0{fO(^Hggt85X@FwfFYYA%Wa!^)IZ8;6c*l(9pAsvRlXXZ@I z5~yXkK0C)(nDfWi3l-HD==_{rhy z|8i~j4tOCE-O96VNx5b#qHL(SB}FVVn*5U{Pd2pw8!2B^&al=JWnnw?Z@2>;sO5d2$OLgy57+lV8{F5zH-hH}tjgKa>LQ>7r*C;*&2l$vyMqi~ zNKDO}mN>uKSMDTX7xaBenYo)vc2B~9VQM_GPT!j%ilQi9fc^}SH9~o!u}TZmk6c_W zOQ@wsfB8siQ(F#WQAdXb<)g(KtlD^jddjyN3_H%@8rQj0*=ZHXBM7wNJFD&KPGIM4 zZbRvu<*Xt+wavc)j}z239@iz8qZ65)vD3Brd&Frr4Uk)!w!nvkC#fv-BoilB3@#<&UU_Jg>a0Vo6!d8D+_%Pq1yy_G(D2DQW>_4cT3Q11u*j0s8PL{0CKTi7JiX(f)f!>U9&7;D(2Rtxc1O+B zA`jQ53SuMU#W+>9Rf2E!P(jtcea*#LweFbsMJ1_V00QnL(rq9Q5oIf7N z;SAfY@vI`%K3!vsF+JOgrq`H9nD9IOWZtq<`s|50!IS;sbCKnuidLDryxnK|Nm2JT z&ha9Sqr6!7jx1$L)qm2bqdq%Zzpop%mTLx_^!`tcR_1Izlk$K{ue2WFAp!ZreY&~(j--H##xY#mDAG$sOz%yL92Xqxj*y5{PahDLJ zFW&l9Qc+zU+dYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00013.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00000.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..07f22e4c99c3e029565573f01499470a980304f0 GIT binary patch literal 499 zcmVA(>p-)^B&{7U(`=H%JN<-Z+O_4lNq)3>WNpcJhw<-0z z`U07XOF0{4xbhesD!FYL>(*6N<}T%al3xOn{Itn?WB+vgUR8$sbkg{gHSZF1*Wk)k zqP3ii*N|t|52qPW7GI+#ChN9q399R|G*-^maw^Bzua{FL9=i84awbNp zQ0^aD??o7j_dj6=r_~GqP+PJFEULowzRi1`TxvVHZ}_C!-~ZJ6<=Z`U+s z8b@kxQvQ$V?w>5xb9wTmw(7>pyE@%o{jjNEZ+}W-pcz||_W5?(@_1{2+kG0{&e-C6 zfMPu7$PR?jHnqy12j*_`9y=z$2u(L?_IHI1woh p0000000000000000002X`~eM$cqD68eA)m2002ovPDHLkV1hHL>rwy! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..a443dd67f64a148e37a7331d63dc0a6e750ae841 GIT binary patch literal 964 zcmV;#13UbQP)l%!iLilQirq9}^n`3lOP=Q*yA zLdzq+c8fAZ6rlM3|#_ z+38DUER^KdS&0|1`*33tu zs)2t67`<68ZTD>A&qfXRv=v2i9|ryb=#y)?5j;O&RmPT@35OD#zWIGI%iXZ;b}~gF zF*OH0G5#s8+(^PM=;x9$bAw8vCt<)eH6B@~?@bX!Q4}v={R|LOxt8B~aS{KVbn;`T zScbHhlDIap<FGoIkO*8uzUL&3oT` z;ewHQXOR_M6}J_143?U&8USrC(Kh`PxoVk*apaJHj%f`NcI=+UfzQm zJI#vPmKrSg#h*(-+&iq+*pU!C#Mlz|W=k9hS`=zwax1a-0yqpXRYN1k&c)H=VxF~b z;o4eIy#K~kteuv*b?t*+pR2yc0I?FVt6^N@!LYxFu(Y&9Hs#aU%d4UBG4L@S zu;VAL{3O;^w=g{ef=}~D-jN-I_To>2)+<2!29(Bh**&}t#CPSG-S#O=MtMve9m(hZ z$zJ?NJTVkSQ4~cXWBUI9x`X7q$rJwTFF(pIzZS)JCPC33;Kt-F^?B+7_l1;$5?oJr_@+oKOip*O2++f=^TsKqO@}Pt=lzS)`wN^~Tsr`CF&YDhMRud#+Z$^k z=Lbv6ENzQY#ON@sC5-DxfJDtcfIrv)s-Yj*5D2k#eilQiryZHwenWf@QA@TkI00001=(S+?wue~-ir80r1$ch$>P6utm48d?Ddd;D{wjWt`Yq%xopS?m2WNEyv2-}jWx z1BMsD&;W?@_pGwJ#YJQEQ9D#(kh6`k7tP%F+-M5QD_wgR^*8s_Bb9l~2%;4e^^_bL zT~T}mbT-9(Er+L4`(o6bnzQW?x@AVh2jG}o?nW@Z*`Yd1YE=Y+Xz!bRdmBVdbPIOg z5mhe?rsjz)>HOD}_&p}1>%j6~Q9GI5UqdYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00013.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00000.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2b30765f7b5c6936e3c36ec49c4188f4b1056d75 GIT binary patch literal 499 zcmV2`B(%fVvQy!TInRfhY-&H(rGF6nBJ?#iQdn2G16v2Kl$Wo{_<57{Lkh<6*@oBP%IJ1Px#bIYjVXZ z(b`V>Ysh!^52F>37GI?%#5O%$=`N@6Ci}K&2`cNdGmvzt&dQL3UK;-BF$ZW$anXl2ZLx*x8BRbE#*nn1dS^ zrn?C5ih6gzlf$5gw~(FwN)H@VD9)9xsy~b7zW!KwoQZ$(jdFmhW~j-5fr}uMgQW;B p00000000000000000026%rE~@xG~l8G@bwe002ovPDHLkV1h?H>dF8B literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..be99bd3d069560c172cbb79dca448ca991d8b862 GIT binary patch literal 943 zcmV;g15o^lP)2!-vg*-7@lr0k_1GS{*NjtHok8osBSAAzV4bCO$1k|arzBuSEN=gZmtzVG_` zx~^yQx-O^Lp~uHX^=|ff-*?-V#*f`~%?*5e8rR?+>Ti!t1D@Uoo1J}jBtR=Ae>{yT zQj`x*iqu3Yzo$}rTKP;akW$iYZGBM}(rB^$NTUkJl>rZU3e>nk+P0b08U&U>t!T%u z?#H#ISaVmJYI=~epW|-RM*+lP+66R^kHi^9%*azU5T*HOn{Q;X&o+-I77{TS6?q{pqhGn;r zt``DJvojLqA-{1Y0jr>Ymynt3G~#^{26R*7NS?m8L?lU)ynw+yfUV7Vco{t=D*hrO>Cll`)DXHBsySxJt;NwNx^WYEbu21}vcJ61!n z+{o_7YUNNpo$|;wq?_0{PZxj#6miQRO&(M_r@)tB zd$u>UZCNPBNr#+BSIgGrS@mLnBCZnSs`!NgQxcpnc~qV$F{>a|Ig53zw5A$>Zg%J= zOSmYe>{EKC@)BYL))4$cW@^&0J%UBh&JpM@a}88RB4L}UNs=T za)xc@7_&&ZPv;myNY84~>>Oo;3BS`%%92It+7okvr}ne!td_GZv@~Vxtw25;kQ0;+8@B(D?xXo?+t}AXV3c?AuKq9*o}4 zf@`N8GWXF^eX!15pmqc_df$Ji=P+uOo427uM+L{EZ_ERIfAMkjDmz-G`O$uh(+yB= z%&SwjcFJ#uEuSrKK5f9AZh%d5&e~3`E&Dq>;wa*oE5RB02-wl)J@q@0rsoK{d{F*} zuDK1ZPLCdqXkXh6PrkUC*Vop5baNYgdF`J^8{COm=uVAFrVX~DdI10c0000000000 f00000fNlN(xqi+sP<$m*00000NkvXXu0mjfVB7ta literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00010.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..4c13a321f189c331efe71be373f0163daa1924e3 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K-ba4!+nDh2VBHtkep0dYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00013.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00000.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00001.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00003.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00007.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7a4ccb3afb9e3c439a32017e23bceda767d103 GIT binary patch literal 442 zcmV;r0Y(0aP)tk;ewJYG za(T3kt6Alsaa9%15#y?=dM@7XITlq*iV{&9+`Bxblv0wX$$q!98p&;{365TIS>I0k z7%dP!0Bx)C-4|W1qtMz04uCQFx;)gr{URr^D(GI86#E2(HsJVj&$%ikCxXTxY5?vv z$z=8#EJ)NUs9kiH^x)DW=is#pypWsG1ONa4{K#`RbbRyDh*x`L#?NXePOV07lTJp| zwWhk^YEHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00009.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00010.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00000.png b/tests_zemu/snapshots/sp-op-set-options/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00001.png b/tests_zemu/snapshots/sp-op-set-options/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00003.png b/tests_zemu/snapshots/sp-op-set-options/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00007.png b/tests_zemu/snapshots/sp-op-set-options/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..a1792be7222718e75794f78b3ed871c34f5e5277 GIT binary patch literal 924 zcmV;N17rM&P)d+ibJPCm-Dc!F!21$&DXIE=QQ4~c{6h(2IuW63^zFTY8 zbxrg1Y)BEW3&i^vLkjnOkJfmcV+v^mUR>l?N|Z0Jt`;9#%~e*T8zKGS4Q5O?E=Rvj z=?Ns5-`-fS>l(Yd|JFt^Y3MPf7a?V}p~TaXfHm)6{M?RVJb-%!kZIL_Yoqx3OJkK3 zix@-6TS+oC#W|-1gM>N-nUTI35Wuw{@XUdBC#H_Dl6hj1diIl>KO6ij*MYc9N&_jW)Z`{GVf+W|1&0yU0f{a^@s?ophwpw5`*Ei^Q0P@e#o>>j_;sea5i=TUlVe7 z)8RG#QJ!1`+(dlJOo2LxWZjHO;F+DfwMG50m3w!ofP?#@3m>m>Ni`5ntsd!(W$ilTT1 z=%4aLK_mwmTUNA1Q&GR1ilEx7a2@~`FSRNJ#|q9 zI6o10iE&;0vN49Fkzex&=G5>iNL|hnU4z!34j`igA1vvj7}%yfCs>8tfDw{k$hZcb y*dn$FN*o#O6o6cDK9e@*eBJRXARrn-000000NBn){qK}g2qDIJIww!N zvZPhT746c7DWsILG_^;iU2a^?krF&U$E`e6HhElnt!b@C7NX+OYK$CLzdiXj?d;kL zUrn~g7-gLEZ!e3Lqvc3mqSktO~lg z%(0AK!V|IX=q>`4g(G*q4QG?;A`1hMbHDgfEIvQ_9jqZPxlLXFH-_A#S#Dj_@A6~LucW=L{$Tzdt3>(A6dn|O_NoB81FHlUTI$c zpmltFq~6Jx%gtZHvN!M?4y*R${@P|-H!Gsj(a_$&?f}@Y^J2-i&EYFz?OHqdv;((0 z0E=qQ+@$ud{S`c-8~V(fU=R8Ptcdv)|8~r&+o@*S3&3i$Szj!VBb-QkZ5r;}xU1{6 z-aoiG1~2#ieu%-HP=)T~#L2{9DYzE^000000000000000000000001B8Q%=c%XZY! RZHoW^002ovPDHLkV1iTQ@)ZC8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00009.png b/tests_zemu/snapshots/sp-op-set-options/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..27de42474a8ea686ad34a17d770248f6ca36065d GIT binary patch literal 615 zcmV-t0+{`YP)EuHWx> zDaqH@+RtXMwZDj8pJv>&2rhSxlLJPurid)bg&(}#mMK-OSXMRH@w2*tL5iR%I;j#_ z*|O7oYMDwxWhr;5yqXX*peUlG0YY2qSmnSJsPEu|5DqBF0ZR$a%BR4ll-4o|<#0FC zbe9kzXz$8dM;o{JliX%Neyz%zRS&POph_-mU7>pAya<0U$|YAh`z#?s&^P0E5)O#9 zA0>nkG6X)m$`g%bG00dLhM zpbs!u z0aG(z&&p$SRew&|$%&?q=fTt(Air`fWl)j2KT4fJv6|xoeNf-gPN8SOpfgpqGO!h& z^sG#(8Z*!xP=`Sw%Dl?Eu=gWCGtx?h_KrO@AYG7NX>WOnTFu>fg7gO^nn8% zk?Dh_)bfV-B3AEQ)iTw+mDajhht&H1o*ug34`Jngn-y>h79o$wiq~4z*pimP<<=58QBV<=w`RO?ZqbO;Dl#v) zUd7GrEZfjvOB_evd5Fy4$-W+~;%*1X1bUokjy3V(iI|xP-=s{aLU9-Y(|*&NYvAju zP#o5Po2SPE)jge{2~`L^0=lLVb+ODsGym#SlSY}l{OEtIRpq=i{OwNCyT}2dmo>jm zwN*|9LH99F@<|KV7JfBIcicZ{lr_%2DJj|;kLd?GRs?(lKuUQ?ICP~Zuht1Jf48^Ku{WdOA{5&>$5|d|u zr4pGnj_Pp_kNsIo$1F2DAfBF`OG@0v%Cs|UUoEa*?Am6v)mPob{3Ynp5Ub4Mxe@eN zo3gO<+i?vDV?XH|eG6@pmhsn~e$9i+*Y0Mup50kzgmL-uwI|%qdJcG?IZwjhA-_Mq z>qr1#k7KR@l^3qgc*@&&bWc)wsc_<5Ik%xV+w?MSk=y?f^f<*u=IFKPq$Q~G#`Ijr zbih}p@ABKwk3G-IP3J)ufJVFrEuH5wLni%g3Q?2(X7s_GScUG?2$?=uig*D400000 k00000000000Dxuw0P%z_#jMC=y8r+H07*qoM6N<$f?pfbx&QzG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00012.png b/tests_zemu/snapshots/sp-op-set-options/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..e98261e51277e36fad88b0b2537c1aa89816cb99 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`huba4!+nDh2VAm1Sco`#26 zdpN(_UwZe5dE$hvC9h5~{N1na9KpW!fSDjr&x4}vD;#cb>-6x_)C$pEDkArPZa~`k z0~0$=D64p_vDtp3(rg-uW29XU&zoL*lcQa>HVE+rKCZ^p00i_>zopr0N0Y8 AzyJUM literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00013.png b/tests_zemu/snapshots/sp-op-set-options/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..8291074ecfaede7c036a069d4db807b718e55368 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{!ba4!+nDh3AW8Yx~9*4lF zuWEPxd)!&t?Qz0r9dnCQ$G_;MB1XsfmN;_&H618ff2vM%>0_m1KUP02`EfBguKaYp zZMPxc&dq!3Uth6mtG8m_li<!MvNc~-gIytL(t(?*l4 zch6XyJ#jjErmmk*)}Gl_)}MHuPT4j8f^zn!MR7Od)sFTU^M@qQ?LAt_GMh2?4!jV7~bT!7JJ}%)BMi=b{C+S4Acv=J8pbP*LLURGPKAQRJzf1=);T3K0RZ)0v{C>7 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00014.png b/tests_zemu/snapshots/sp-op-set-options/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..cc6fbc76821a0a421aec0b6626a54014850a71bd GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2Vw9p|19*4k^ zJDk7cgT6g-KhEc@p}?!Z_xb6KHqM;6bD4p9+Nx)4QBpc*`M&m9`NpJAK_{x?b2j9j z;ZA-g2kVdgmU{ftY2NfZkHaPoBxx(<%!Ws zK{9tNR~J;>zxQBQ&5idvg-%{@FE#E|wG{s>o4J$O=&_u_tG$XfyH0J~Zp8ZT_3WlC ziI%bVUp~CGrg%lfvISCBoHMrHzq57Utn=Y&&)zUxFBX9bml@~)@XE!h|!ZE2LC+PhEZYw$oES4#kw| zDLYM0zJIB(I#e(AF?ZviXmzj1Z1Jhq3erB7s~%QZm8NH%W#1*0WW8H8qxYNBon6Ui zB5Ybtd&>B|zO_f6#p>J(-HeAvLsm`k7g20qa&~p&B@N@fKrbB-kNj=$kE8r#n_YgI zx~#YBl9NXx)}^sV$p@!$Z4O;JImNel&ffz55Z~!(PyH5te*QD9{VMMqpJSy#QxCta zI5VmA4a=5IpI=@)DfaKC@aDV6R~_bmSR`t9slC~|zK;Dx?%yemNel0=&bjmd^&Csd zqdvi2)xCfFO!>3FKM1qZXG(Kid-(pTiNXQ=Us^ZIx3(1C>72iyIrPPngDS;*A%=T_ d;fD+wX4zj8aJ2`B(%fVvQy!TInRfhY-&H(rGF6nBJ?#iQdn2G16v2Kl$Wo{_<57{Lkh<6*@oBP%IJ1Px#bIYjVXZ z(b`V>Ysh!^52F>37GI?%#5O%$=`N@6Ci}K&2`cNdGmvzt&dQL3UK;-BF$ZW$anXl2ZLx*x8BRbE#*nn1dS^ zrn?C5ih6gzlf$5gw~(FwN)H@VD9)9xsy~b7zW!KwoQZ$(jdFmhW~j-5fr}uMgQW;B p00000000000000000026%rE~@xG~l8G@bwe002ovPDHLkV1h?H>dF8B literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00017.png b/tests_zemu/snapshots/sp-op-set-options/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1749fa0fb0ff9019728cf0d14a863f70fe9e21 GIT binary patch literal 973 zcmV;;12X)HP)7>;g@15Vn0J^#XxpuvYZ* z*UItQvPEOpb2XmS1epFiOK)y7XnC-T1hq)_wj*BSsZsUo7!cxB zi?L8tBOU>yHp9>kdz0Q9J;H8lHd(tF#3$f%uHixO_yLO|YkFM-gy7{{mz%5H4ae>v z!U_wQ=AL#4IO9dru86DzFN(z?3g6`OhX7`iGE zpQ-=pL(b**fOa+I&1Bv}@3-=-+I`-MZ#bQdn>|^3t2}mR(Mx-gFsrA~VQL7>W|L=n z0`mDq#+163**O3;!$aWJ=Jm`jL3d_&Ji|SeWmP#U}GkHJ&sb2V_zf zc)fQl#sXsuf_RlHg;UC(W93Mfm>`gzeK1pIKQ%|couz|b|%xX;Ac4~ zCpcN?iBqQWl6u=MDQ-soviAXcO7fgG`ov1IMQ4)P+Miam)_P@#vmF3G-+;6a7E&DiTOb>ay)MR7p1A|k6D>7{0iA@ z=tbOb{UeL%m(WE{3y)?UA<#kRO8vG%*+D vaL)OKDR+Y@6+bYZFH&<*6h%=K#f$k1%$o3zB7P5@00000NkvXXu0mjfXD`)h literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00018.png b/tests_zemu/snapshots/sp-op-set-options/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf1a8330ad8ff7c393a741ae35eb6906f4db79 GIT binary patch literal 533 zcmV+w0_y#VP)di$qJD`PevNqImeax43JkUW}F-gcLr z8yp@4t_BeM?^Sua#X+OwsBS7T$koc|gJ$kJ=beJmNN=r0_Uc}`rFEG0dy zD;ggG#;SCe<>9VWFN`gh`fS~V-7+5I4G=q5_dzgx>7k4zTbCFJ(pqoQ>2(lsqTBG~ zJ)+2hb84Pg6XQ=);#*933VN?u-PRMw`%hR=^ov^t=|krS0CgAo6^vJm&8-c{lX=_Pn&PyR88{1AqFYabuI*)&Ry`Trt<; z&URfgfBj(DkLng%;pzW`?XTF3C1aK^?UF9_^ahCR`Fc)fjmjx#&oFeZg!U8{^G|-P zydPbsliqjrotJ7Rne1;Pq?+t+MjPCTS?ErkB+~{00000NkvXXu0mjf7SsBW literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00019.png b/tests_zemu/snapshots/sp-op-set-options/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..4c13a321f189c331efe71be373f0163daa1924e3 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K-ba4!+nDh2VBHtkep0dYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00020.png b/tests_zemu/snapshots/sp-op-set-options/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00021.png b/tests_zemu/snapshots/sp-op-set-options/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options/00022.png b/tests_zemu/snapshots/sp-op-set-options/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00000.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s`?>JZ^7e z=XQRU7b@P#U$#-BWr9oc%UAdOkIQ_LtP>LKX9j9xcu;Eh&U;GGt<#@v-e*hYOYII9 zFNjFz_R`F)-*tMAbgqWPV`KlSX_9OI8chp2_jyfsRL+H8+j_0fUc2P=GCL;ZwbI4i z0?+QtrgO*EY|VdkB5e9PN70pKftxSye0D(Y$x~}F^JMWPl{5!;bCYD|!rGlFt5sJn z)88%dU@vDzAX~<^Iq@7POLs4SX0ewg^vJ7^9d9lrx!;dTEqVBk<;v11bJ3)uA-A-f z#D0IYjWv39<92K84cmQ$K8y@!j9VT10w%K?vHo;subV0Va|`M&-+ zlj7E=RojZ{R2wZldscVui+>Ny0&T8Vc-0(Zb{EX`J9BQcPTyU}w1~=*_c2VKYh*5z z3GPa{+p%72v;3mpZ-V};-4fojXt%20^rKe`S>xF{^#87`oE6yG>+Rw*Yw0HQTOOQ3 z`)8(Hs9RSVWA^R(jL^5+yAI30)vpl#CMUALt-|6}@3!*{wM@sK_x$+Kx%ZkjYj}9s z(&QhRJ9*A4?LN_OD}JjjqKw_`{(@8T&(E=(cq>_}zf|#Ao`EA@$in$4h9}NAYVqiU eA_yHgNd0GQdhjq=d#6?xNY2yM&t;ucLK6U4{qI2l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00009.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..63a2194713effaa11c34840c87302948cea0dbc1 GIT binary patch literal 467 zcmV;^0WAKBP)&>&Tc+EhTQDDJv~~y8;*HC0r%UK|NQ+C-IGP{sY7`<0Xc9E zowt5O31ZzP+WeRfWQ+i<>&bkPq^O#t<2H1Ic{$g#jA$4^tJKRUg9^#dJ-*P<3~A znm#0j3tGE!_TDDU|CF#9P={3;S^eMZE3gvB))}lUaZdr1%y9F1iqYG251AV#`@R(UY~#)X}AAv-z%|+Y}}mzOTu>}MfxD; zQ@Oha(1VU(*y+_n;WJ=-1hJaU3%Q)?^~$|)`q*zA?Y->mj+I08{=k6B4^#4oK6sY* z^d&O95>$<`AB>=I*dPp5)v!ST2TFzwrjkp&{V}XqB7QZ>DR)H0kUAN+lUs=5)4s4p zg)BV0AS#B`2C#9Agck+SE1uMTXxl{oiwgMg^ zdqDBNQ_+pH+l8>{SKEAJ{$R6=n1^bDdjLB)92NJ(Ha$st+SDPrT{Y0tCBh8A4#!c# zb*N!(8=K8Fv>}np(C$1*6K|{t>x|vR?s!r!b=XI&@M*raHO+J_&E85Df1!TjS3x@y z;<>TzAG{NujI>NNtkL<0q;FI!7L%+1-m6oS^N_zUFQo<5Viu0DP0@+7b z-?!9Z1mCp`O#=e@PKJl0Jxp*wc27Q&Q3fcEcJA{1kr|^gbcNEIEbk2id%y($r6}?G z-3FhNfpdT}1nn$(iTQ8P_J9yKX@rzf$bMd^K$UyrTvLh5>T6ji9XU_&n)w83Mid3@ zON48N5eV&11~ym;Mxm8-lnfgTg{pVKiJ1K)-4YPB$5ZPROI&utU0Wnd+);{FcE9xM z#xiRO#?a|#zAhSC*krf-R0E9DU4Ai0e#1uLXnSNh>KiFGQagF*->3&%jof|4B)O3R zP9_h{%V&a(h9HU*J+%*3mStsA%JMTZ0000005FhTQBtHgrEB^qzaz=9)M1B6(J0tp zi}W#1l4GS*af-EQiXJYtH^;-Wo$wCZ9Oa+nY1P|$C#)bHtt9tWcBb~zhOwZU{QiNd zF<1E_uO3hAawbQIcJBdEy0|3A^Fi@5FiyhyjB041i&0vp4bnNAfQFgM^UM7SKW%_kDgj3dP}DJq`c>0ARUKY`E*X^6`0|xAUg# z>C9-HW+^#fE>RRwmRqMOBRuyL73e7LJ8_bUx-K=dKflBBSk!WP8%`SM{zv^r1+s`S zk$;Z%Zgp&_71ucmtxHb^@ePq9AW?f+?nL=7S>4f~@1?u8X2$+{};;b=8mPooA-_o}c4u-35! z>V_F=>^g5VO`ynaXmg$P_kZWu$Uy{oIYnBv&KYQ^-=%zo%q z?Yj*X?=|0Q`s?UU*0+(^><>$MEoX8N6Hars`MN1+ml4qKW%JVR4N$KH&gZaiBpV?1 zi*r9`b{5}x#ChlYl(X;jU)IjksNQ${*)Ki^nD(Gl&YrhFQ!yDZLo}4)wIC^ xjY_5srlNWQ000000000000000004k#{s5J_fhJt2=*<8C002ovPDHLkV1iy}@(=(3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00014.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00000.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s`?>JZ^7e z=XQRU7b@P#U$#-BWr9oc%UAdOkIQ_LtP>LKX9j9xcu;Eh&U;GGt<#@v-e*hYOYII9 zFNjFz_R`F)-*tMAbgqWPV`KlSX_9OI8chp2_jyfsRL+H8+j_0fUc2P=GCL;ZwbI4i z0?+QtrgO*EY|VdkB5e9PN70pKftxSye0D(Y$x~}F^JMWPl{5!;bCYD|!rGlFt5sJn z)88%dU@vDzAX~<^Iq@7POLs4SX0ewg^vJ7^9d9lrx!;dTEqVBk<;v11bJ3)uA-A-f z#D0IYjWv39<92K84cmQ$K8y@!j9VT10w%K?vHo;subV0Va|`M&-+ zlj7E=RojZ{R2wZldscVui+>Ny0&T8Vc-0(Zb{EX`J9BQcPTyU}w1~=*_c2VKYh*5z z3GPa{+p%72v;3mpZ-V};-4fojXt%20^rKe`S>xF{^#87`oE6yG>+Rw*Yw0HQTOOQ3 z`)8(Hs9RSVWA^R(jL^5+yAI30)vpl#CMUALt-|6}@3!*{wM@sK_x$+Kx%ZkjYj}9s z(&QhRJ9*A4?LN_OD}JjjqKw_`{(@8T&(E=(cq>_}zf|#Ao`EA@$in$4h9}NAYVqiU eA_yHgNd0GQdhjq=d#6?xNY2yM&t;ucLK6U4{qI2l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00009.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..63a2194713effaa11c34840c87302948cea0dbc1 GIT binary patch literal 467 zcmV;^0WAKBP)&>&Tc+EhTQDDJv~~y8;*HC0r%UK|NQ+C-IGP{sY7`<0Xc9E zowt5O31ZzP+WeRfWQ+i<>&bkPq^O#t<2H1?|Gknn{wFuV7?2^@inp|sb{T}Iq@ec5y zO_4UGd^O-{k7}k^HnPle+6L`XCh~W>MS>j4h7U_=Gi!Fb|7xa6+oiJ# zjD?q?G-P7y#%BO+2I%rO151fun_{)n7E-yN=^BwKa{lcdaHqh!#M9aF0THy2xC?p( zQ$}vYNa!SdAliNu004j_cMXt2WB0NfxQ%X5;&+lB_Ei0PzjK@k=VK;tC8hD0^=YSMMwkLxhb&afRSYqEVdB+h^Z<5yxxt)~T_ zi^MgcePFT}_7v=7_zajbOqdahLjI?N2GY3$Pch}r)w!1qa%1N$qh>u5J)@d}_cf+_ zrehG^Ukv(SCx}8jxp6Z3AQkD}4Nt^0?USVxpCIbjQ`;1eE_>jqZ6=29sHv5Pig{~O zT5w9I+59>+lsM$H{MHW0^IiQS$v)#CIohub&w3-OtJE$I{Rho}r^?;WSR@bXfQ!YU zdHYImPzaJ}>Zw0idA60Tl3jqAa>%i}o^4 z(X~?PIHR{@iY=G=n-gK%N%(|gj`0QZvg#du5;o8tt(5RlcBS{rfm%>Y{r-Zf^DcTL zuZ<^uJB!t!(`UdeUp%rCd7=0nI2U1iMfGR9UBf-4B(d!?RjE_T20wkIE{$}@ay36% sGQOz-KadqOK#s}PCz{`7x!vwr%r$vPdn<1{TTLiTaBm1Q-YG-djr-@a@?))bLf zw)Y4+JG!kOxse0E6wTWhu?Nv^rSqqvqX(Cq5 zfLt3@EvJ@NLqrB`WlCT>M*m!R!`E&WCI6hD+|Ah`PNc5f%klyXm5cnbOm zvxaSVoS`M?hOF}_0HAb>J)nA8Rfj+SuZ&iWV3ks4{6^JBS?f*F@!P*^#q_VteZ&pA z?=e)p#eAye?}CD?FClZY50>&+&f=gJoaSotaZAu$W|d*ne?WmJwkU$2Hc_0=x+ICa;!89;>133?nI-QwJ0lZG`hB!44+_Dz**? zX@nB%>a|*_Jjr2M?2m?g1Kef+jlQgCHrV@xi0MN@()bM9i02Ft7l)%@PAr>AS}yBD z8aLY(d<-Bi$2LvZhH+eflH)P-a-Xad>(Q#Ei0l4k;tS4HaberFwtL&-dSlLcV-R|^d$9$l00!vwZtj~yI)@b>jK8zM# zJkGxJ7|JGAWcm6ovk{zP9(38 zxrY;?YzS?DHXA)*N2l7^0PIrY4>}@oX8;Seie)-S?nY7D@qZt1=-*as)JUx3M}fZq z8fdR!S(zT?ZWOhbpi7V#YSjw2caDvszzeavni%Ug2LJ#7;EvDt0d>^j@`7nunB6OF zNV}}avdTo8V?snnj3Srp{7$+3qBINDV#}t7d%QqUN9=cqI0Hm(S{cMELza^uoB_1^ zrZ*`_yhW-72k#)90aAd-rDaquq5SUe+vYMgEci+=7K8 hhBzny0002u@ei64Dx&}u&-wrW002ovPDHLkV1jwPMR))J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00000.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00001.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00003.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s`?>JZ^7e z=XQRU7b@P#U$#-BWr9oc%UAdOkIQ_LtP>LKX9j9xcu;Eh&U;GGt<#@v-e*hYOYII9 zFNjFz_R`F)-*tMAbgqWPV`KlSX_9OI8chp2_jyfsRL+H8+j_0fUc2P=GCL;ZwbI4i z0?+QtrgO*EY|VdkB5e9PN70pKftxSye0D(Y$x~}F^JMWPl{5!;bCYD|!rGlFt5sJn z)88%dU@vDzAX~<^Iq@7POLs4SX0ewg^vJ7^9d9lrx!;dTEqVBk<;v11bJ3)uA-A-f z#D0IYjWv39<92K84cmQ$K8y@!j9VT10w%K?vHo;subV0Va|`M&-+ zlj7E=RojZ{R2wZldscVui+>Ny0&T8Vc-0(Zb{EX`J9BQcPTyU}w1~=*_c2VKYh*5z z3GPa{+p%72v;3mpZ-V};-4fojXt%20^rKe`S>xF{^#87`oE6yG>+Rw*Yw0HQTOOQ3 z`)8(Hs9RSVWA^R(jL^5+yAI30)vpl#CMUALt-|6}@3!*{wM@sK_x$+Kx%ZkjYj}9s z(&QhRJ9*A4?LN_OD}JjjqKw_`{(@8T&(E=(cq>_}zf|#Ao`EA@$in$4h9}NAYVqiU eA_yHgNd0GQdhjq=d#6?xNY2yM&t;ucLK6U4{qI2l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00007.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00009.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..63a2194713effaa11c34840c87302948cea0dbc1 GIT binary patch literal 467 zcmV;^0WAKBP)&>&Tc+EhTQDDJv~~y8;*HC0r%UK|NQ+C-IGP{sY7`<0Xc9E zowt5O31ZzP+WeRfWQ+i<>&bkPq^O#t<2H1BoDVFC;=X{AyQio%vm+)g+l z+IkcK02U#14rta~L-47;CJy zJ}&{|VpskcvOqXrq#52F!kL_ZkhU?!+SGwB2wIT%W!@Rka)Xf3sC z`BC|g=Ew6J5(VpVnvzTNhAFJFSu=1(wxq=tP5rlXhiNOV03_fS<3NHAtK2Vg P00000NkvXXu0mjfUqv#w literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00011.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..d86bb9451e582d39c78fa605174394c2ae65c0dd GIT binary patch literal 694 zcmV;n0!jUeP)ic-=Na2qApd#i( zy1eV%>f9Ex-HB4f}`Mq{lv#1D*lu;;?75i4`-+x+})8g6+XcMm92kLslr@L6rGrQZs9t?<+@**<+!NofgD61*&faYSl*(;*uj%Av{a7~0g`7|En(+WNV~V2o zE#R6_1XBBhp$%rjRcIy`N~R6EQmPl04Sj0jvt|HJ^Fcg5@p)OfdF6O=HgwJ0gJ6|x z=o=EBDgXm8@fiU#1DN=12D1k+@!3pt20SnE*?VAQEk66NiE!xGgb+gBLHV_bTB2S$ zNmP4BmNFGoB0NCuwKB5IyK4#io&w!5~LEaktG3V{9$iBl0JPt22 z@+SS3Us*o0-$TsEESe|v%J+Sf7}_cruV;DzH8C*Ut~}aRz5jkuZS3_gH>!X9O$qTU z78BGkUZwe|^0eK~mgj$5IK6J}%GbI(WnJ;C!}Hf0><^1NH$CuWaO8iD{eew3AwDPG zt|*_qF;#1wG1uN@>W(&!DJ*wp#HsnItbej|r?`A&%9PntcNsi&&&`Ota7Iv)@loye zMN>C_=Qf<*zpr5Vu2A#hD_x5{IQkfhi+313JF?2-Q`A+dpwl_FZoGHi`5xkVFgICR zgV#9aO;OHfe}##e8K38@d0wBoBwT3fxpv#1OTT;(OE`7^S={qQeXpy^Zr@KYxz~Oq z-BDfm>9)pq@_)Q5jN|NpVP;$Nj7NjJ>y>Ba?DDYI-mWdr9Ij58BT^}Qy1P)=L)H0e z*^;gCQ_>d(<=B1w&?WyNHuFW}90^9X?y|P4_oHXYq%&03Z{^kvnh?oxD>BF897AR; zaAaa=2m{J%ch~$m)ja2i zzSE+Vv{h2~@AoV$$l1Ufe)UEIGp}lL^U?)z;MhPT8dCo-IbP0 Hl+XkKi@f4= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00013.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00014.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00015.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00000.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00001.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00003.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s`?>JZ^7e z=XQRU7b@P#U$#-BWr9oc%UAdOkIQ_LtP>LKX9j9xcu;Eh&U;GGt<#@v-e*hYOYII9 zFNjFz_R`F)-*tMAbgqWPV`KlSX_9OI8chp2_jyfsRL+H8+j_0fUc2P=GCL;ZwbI4i z0?+QtrgO*EY|VdkB5e9PN70pKftxSye0D(Y$x~}F^JMWPl{5!;bCYD|!rGlFt5sJn z)88%dU@vDzAX~<^Iq@7POLs4SX0ewg^vJ7^9d9lrx!;dTEqVBk<;v11bJ3)uA-A-f z#D0IYjWv39<92K84cmQ$K8y@!j9VT10w%K?vHo;subV0Va|`M&-+ zlj7E=RojZ{R2wZldscVui+>Ny0&T8Vc-0(Zb{EX`J9BQcPTyU}w1~=*_c2VKYh*5z z3GPa{+p%72v;3mpZ-V};-4fojXt%20^rKe`S>xF{^#87`oE6yG>+Rw*Yw0HQTOOQ3 z`)8(Hs9RSVWA^R(jL^5+yAI30)vpl#CMUALt-|6}@3!*{wM@sK_x$+Kx%ZkjYj}9s z(&QhRJ9*A4?LN_OD}JjjqKw_`{(@8T&(E=(cq>_}zf|#Ao`EA@$in$4h9}NAYVqiU eA_yHgNd0GQdhjq=d#6?xNY2yM&t;ucLK6U4{qI2l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00007.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00009.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..63a2194713effaa11c34840c87302948cea0dbc1 GIT binary patch literal 467 zcmV;^0WAKBP)&>&Tc+EhTQDDJv~~y8;*HC0r%UK|NQ+C-IGP{sY7`<0Xc9E zowt5O31ZzP+WeRfWQ+i<>&bkPq^O#t<2H1p3@AdAn!Mp)R(56UV za{S%EyB5_%k!qUf+5+vuKz{N>H-(buL`wR~njG<4P1Mn8xmS0q%txqIFa|@qn6^{a z3}^!yoa2Y?n_Bt1_dF3Zd6TAYXXtO_hM+@P%?|g}wncF#?H!_E-5Mt=1g*VE9!y5U zizX^)P%`r~;C8F#S$v?p0x9ueiz1`a7U3pD)Ur0Qh@7(B;0HiVGGc7MLpUWQ?t(so z5YP1paXkrdh_)XE006+rT?2TcQM?obx6xJ$^mev#Br)}8BMz6R@$ zj3I-s+lKCzib&4|c_?r|<4L}T#B69g#F%zEp2!>Nm$&7k61!MJ;tVM8UyhM#-7Was zB(4Gdfk`ps6l`bc3&@i~om20SnEnLRMD7f<_Xq7(Qv004mRfWKQJmWY=|d5=d_ z4O=JUuI>eH@mpTlo(IW;;e@Cfwl;uG;4|>T$LYleI5&QSw}yRZ07JSq}*i|skUekf>G2Y|ECeQPp!8jJ+L*?9ZHtm4lnw|(YoXSrNR$a0 z;GFH!r3>{}spx)#h+T%-PFTyui~m`R9(gC1CDa^WH|5F6CAcxC*)j zy@u^&IZY;LLA3QK0002V1Ro%`LM%o8q#x%cBYTk9PcyPtG;x^o2;T|Uk^^&c_n#_v zs#*_8v9##w8n^NGW$1L4n*l|FEQ1s~eiE$J0lEFm3I!>s81oq%S6Hh9(u{Z{gB{>R zvs?#U^SAefcfc4U=sDV^R>5oZWYGDEP>3osNc;OY5k&+MSKET* zd#UCDpbus;+6n>6iIUL=p-A=4iH6djr#I$kMlEb<2R@|)P4eXx?foz=Y@J@}(x#~) zQ%dlZIDq#?LkEW(H165~p^Nm9Tb6}lLH?L?udt;&`Dqk*frVy3)$PIb6eqb*2OJDG z&C@->LMBME>3<1gDH@(-B`an8xjX;>0000OhdihBgxJ`#d}W+~7GrZp9ae}GMNtg4 z6dRn?DnBbK&gdqqd0 pWbjNz%m6tm2NVhb0001B@()|4(-_WT?@9mw002ovPDHLkV1lW_V<-Rs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00012.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..10179d5152608f7f72e16be8e80c2688538c2ad6 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>Ar>EaktG3V_}?@5Ohcvw$f zxpU;Z{iOFs+*%^4ijtqXKbEYQ>5<>0!lI@K)WpD`^Ze@P50&#?{<7%1BDDVZ$*+sw zMEo`J%Bzv`j-JFLP&>(qd4Fzy>&1O#Gpt&k2E4uex}Q?b*CEcu%%x>zUI#cL%5EE|fdnIr&}imW7idjTIu5 z&lIiMa_?r={@;g8jdgYg>F_8`IH(cKdq&sM@oD&r)6=~)=Ps;t(uvsqYG!DY-S0`e zZoQZmou%BPb=i(NDQfANOJT407A<9u_lii>J>+@hRoYoy#jQEcJFJydOb^OU60lVg zE_aMSxMEB0wU@ty?g?bu1H){V?zM(T|NLtX{RS23{8war>dHTVEl+C-8XlW7F=mDS z^~|%+pIbcAE-VnLXWT3~!9Ct zeg4a9X73sPYxA#H>NzPH@Q?p#@Xz;WD}#@pk6AW3j$ixPx7!!en9oE{JF=a>t7f4p wvulM=ZNkalT3fdJO?uhvJ~0j$JjmdIVSN?v=f3Nm3w1%lp00i_>zopr08PrdQ2+n{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00014.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00015.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00016.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00000.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn@clZ-xbQt2KkJOt*Sh+kt|ml!-Pn1NLfhpH)i`Lv6mO^;Fvrv9l<=i-j`)EGf*c ziEO^sF*sFn4c=weWTBcR*Am zNs=VVcj>61%pOjhY0X3+G>S{iSKvs8>RAxdrbrQ%%~HUTnP(Vsvn+PUI#K8MuIkU8 z&2BK*K2FqIeo&lGFY=O+x<-5aJ+$l|tS37UvZ7m0mZ$%G^(O8C4n zkuyL?U=}ksf;VX&541L;8Y1v+Y%YMJP0UH(smPmm3+v!(9nwCokq@>$uPVpt&xWZF zw*FqS4|bBP&`vsyoPDqq-MoD@6w8ffI#w&Y>gkY2v!MQpjRTd}OEg~_F!!Cuot-+P z|A9$^i<<>UJu<>7>2c^Q69aHs*{OzxA2RXD@eS&QX6=hvVlu|=rl%tzFU>J3{l>hS z$S4zxG&tc=xO+yxX&v2k7t;awcDDk)JFC8=16vg2ko3Fr9&mp)n2WyNhPA@#+wKJO z&jThNxwNHD>-EqmkFk#-y#@A(@zSfpgdA(Co{T6vjH&i9vZcP-6&JC!Zsu-IT!pTls*Nya0Xu)D zdQ82rwT`G$)ha2X_%BUvR62*iRhT>5Pn2z0D8_l0ZsOI}T$e}Hi{~fe!vBh3Dg%Zj z$nSY1b9#&_NL9`-APE zPyIlply=1yhKQk-*Fs&V@8MIFQgkLlD#z+C-Tv0`*mVNqe}?oT^iyUw#q3snN$aG| zM_tl7nUxI9ep>l-erI&5gC5>Sf1k4f9U3;QM2T^gE1Yq9q$J?+J47QN?dcX34)3jw zuhG!IN{AqbF-K)iOIdM=VG z_9waa?}>8JxjwlLKkvL1)gLxHGl;{SKAxW|zg}YW94_lk*lGAZXS?>QxM1#Y`xa!& z$cq2N_)4o2pkLyLOSV{ro!#oTy71E;xYY?rT61D2^=#YEuz3%tK658nLp}i+Iroh3 zi8^+i`unSBrLU-G{cw4_;-I(NPQ#TqKE2j$N59&fgPV{3dgNdyR-v5^2ALeBVt4@n n0000000000000000Dv?++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00000.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn$PAP5flUFWCS$Nym8+Mz#gjb$*do*<}BYgyG?}k_lpU(aOM0t`V zNs@dnwi@bG3LBbU*uQF9yQ1r{o4>iozcIU9D^sxEc7HskaG-vqE7(@bsdwauOD0rhaI8gH{oUwvwXkzeS8|IF*_GUfPF+E`VceKBE;d-bnC_ zw*R_5yKdr~|;4trj&>S*!^*e^WX;F@k?GoiTTu%WsPlmxf7_BuSDae+fek)ud2O zfSfJF+M%huYNtO@s^tENTI^VjZ%IA=Z(iL0ho%&YLZkQ<6lw;=ax9U0{4`5|=qr}^ ztpVQtzaWk9bMjLMZ(9vDC-0iye2t5U|23Nm7DyLZ$>DcOe9d8{+T*7^0NUM?M~5=a zdfIAQtg}-s^)DMFW`PD*9P{kArl4@KW&f5*TSmCmZykVg*BG2;{YGrZSMmLUvxG=b z9hY?5Ui4Rp){8S2dES2kd(b3Fk|arzBss(nTp8|4a!3lw00000NkvXXu0mjf)v2-? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4ebd9c14f539d5c837e89a639547c4bc07e22f GIT binary patch literal 592 zcmV-W08JtVIbiLO0#A6ce|4Pv!Xt#{F#o}45q$;WV zQA?^4Ph#TTnt3`uM<~@sn~%{xr{_=;bK;JW1gl)3)6O1-1YrAZVi1pdy2XIQXWRW7 zOzh7R!bsERtjKAGq@W(E`v$!XI-S+C`q0iLdtJixgM}N zRlnKo(i-&Arag-bJ&(OZTo)hS3K|249*@Jhve3IWNoz%v=I4^=Rzkq2R)nVQos|VY zXrxl}&(+85OhM+bAfE(hIk_XQ`FD8T2+_&7KKM|67xS8NXF0VopSz3i zZ$+%OB`0%#0K8P5NYDW^++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrns>uc zeh8Zf9Xf=|e{<2136e$*QWA7>$wK(%;H{f67rcRa#a0b%s|z}ZB|G=@?OzVIfFwzh zq(s8dV4ARkl7%9C6!lT%;suwb2^?ml8CMBrX6AdT9|pQ0ijC>aETDan z&>n66xPIGQuI7J_B9U3yqapHF6~_YNv)sFR&v#ZRc4!^F`B*04o7GtW^0qf)1X^7Y zO6kbz1iBtygTMvQW{YM`R5ojp;IAvsE`;!(TxHydbNIA)4UHCe=6@Jx<=Q_?oaGu072{RKd8Pmw&7 zD>l*=3ZtxDwcBKh*^-PqxgzG9feKt$ykPlwE7^Hsdd1GrF4R2lo;t zkL$Rs*Y<*s5Y$W17e&s$1u@+#zIdJUKPUaVibURDa54}ZmN^gR@<-00=JjB}(0Ka2HkE_jBx z(CW{@3S2TYQ*rP@(JA{@RygJE8apPSp*cjA^N~!)R_$w4 zB%-tNQ2c2K7r8eCO=;#^52l)aPccvHH}!C<2lVF9wmVxgReP$UT}xCFz8Tzm47E35 zahKCJ;qq}8ek{?n8M~;l*$jKTF_1eVQZW7yyqS=Wg(%q?g7OfxY*R1)lGpO>+BKy7r z`m7m6TxDdY#h=w-Izy0H%!nt3FB{LV7HR~9AU@C3Wo-IaMrab1h;6+>=;z^dbVYPk zF{Aeup`S4uI$eqUN_yzcpn*PjhvMa`N5fDnxsYEFacdNf)k74v~0wX$yhHul|Mz^OZig^ z^S!J1`BX%=PS`~Uy|00000 n0000000000000000O9-sF2daa5fwxG00000NkvXXu0mjf;${h` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00011.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00000.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn$PAP5flUFWCS$Nym8+Mz#gjb$*do*<}BYgyG?}k_lpU(aOM0t`V zNs@dnwi@bG3LBbU*uQF9yQ1r{o4>iozcIU9D^sxEc7HskaG-vqE7(@bsdwauOD0rhaI8gH{oUwvwXkzeS8|IF*_GUfPF+E`VceKBE;d-bnC_ zw*R_5yKdr~|;4trj&>S*!^*e^WX;F@k?GoiTTu%WsPlmxf7_BuSDae+fek)ud2O zfSfJF+M%huYNtO@s^tENTI^VjZ%IA=Z(iL0ho%&YLZkQ<6lw;=ax9U0{4`5|=qr}^ ztpVQtzaWk9bMjLMZ(9vDC-0iye2t5U|23Nm7DyLZ$>DcOe9d8{+T*7^0NUM?M~5=a zdfIAQtg}-s^)DMFW`PD*9P{kArl4@KW&f5*TSmCmZykVg*BG2;{YGrZSMmLUvxG=b z9hY?5Ui4Rp){8S2dES2kd(b3Fk|arzBss(nTp8|4a!3lw00000NkvXXu0mjf)v2-? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4ebd9c14f539d5c837e89a639547c4bc07e22f GIT binary patch literal 592 zcmV-W08JtVIbiLO0#A6ce|4Pv!Xt#{F#o}45q$;WV zQA?^4Ph#TTnt3`uM<~@sn~%{xr{_=;bK;JW1gl)3)6O1-1YrAZVi1pdy2XIQXWRW7 zOzh7R!bsERtjKAGq@W(E`v$!XI-S+C`q0iLdtJixgM}N zRlnKo(i-&Arag-bJ&(OZTo)hS3K|249*@Jhve3IWNoz%v=I4^=Rzkq2R)nVQos|VY zXrxl}&(+85OhM+bAfE(hIk_XQ`FD8T2+_&7KKM|67xS8NXF0VopSz3i zZ$+%OB`0%#0K8P5NYDW^++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00011.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00000.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrns>uc zeh8Zf9Xf=|e{<2136e$*QWA7>$wK(%;H{f67rcRa#a0b%s|z}ZB|G=@?OzVIfFwzh zq(s8dV4ARkl7%9C6!lT%;suwb2^?ml8CMBrX6AdT9|pQ0ijC>aETDan z&>n66xPIGQuI7J_B9U3yqapHF6~_YNv)sFR&v#ZRc4!^F`B*04o7GtW^0qf)1X^7Y zO6kbz1iBtygTMvQW{YM`R5ojp;IAvsE`;!(TxHydbNIA)4UHCe=6@Jx<=Q_?oaGu072{RKd8Pmw&7 zD>l*=3ZtxDwcBKh*^-PqxgzG9feKt$ykPlwE7^Hsdd1GrF4R2lo;t zkL$Rs*Y<*s5Y$W17e&s$1u@+#zIdJUKPUaVibURDa54}ZmN^gR@<-00=JjB}(0Ka2HkE_jBx z(CW{@3S2TYQ*rP@(JA{@RygJE8apPSp*cjA^N~!)R_$w4 zB%-tNQ2c2K7r8eCO=;#^52l)aPccvHH}!C<2lVF9wmVxgReP$UT}xCFz8Tzm47E35 zahKCJ;qq}8ek{?n8M~;l*$jKTF_1eVQZW7yyqS=Wg(%q?g7OfxY*R1)lGpO>+BKy7r z`m7m6TxDdY#h=w-Izy0H%!nt3FB{LV7HR~9AU@C3Wo-IaMrab1h;6+>=;z^dbVYPk zF{Aeup`S4uI$eqUN_yzcpn*PjhvMa`N5fDnxsYEFacdNf)k74v~0wX$yhHul|Mz^OZig^ z^S!J1`BX%=PS`~Uy|00000 n0000000000000000O9-sF2daa5fwxG00000NkvXXu0mjf;${h` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00000.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00009.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00000.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn@clZ-xbQt2KkJOt*Sh+kt|ml!-Pn1NLfhpH)i`Lv6mO^;Fvrv9l<=i-j`)EGf*c ziEO^sF*sFn4c=weWTBcR*Am zNs=VVcj>61%pOjhY0X3+G>S{iSKvs8>RAxdrbrQ%%~HUTnP(Vsvn+PUI#K8MuIkU8 z&2BK*K2FqIeo&lGFY=O+x<-5aJ+$l|tS37UvZ7m0mZ$%G^(O8C4n zkuyL?U=}ksf;VX&541L;8Y1v+Y%YMJP0UH(smPmm3+v!(9nwCokq@>$uPVpt&xWZF zw*FqS4|bBP&`vsyoPDqq-MoD@6w8ffI#w&Y>gkY2v!MQpjRTd}OEg~_F!!Cuot-+P z|A9$^i<<>UJu<>7>2c^Q69aHs*{OzxA2RXD@eS&QX6=hvVlu|=rl%tzFU>J3{l>hS z$S4zxG&tc=xO+yxX&v2k7t;awcDDk)JFC8=16vg2ko3Fr9&mp)n2WyNhPA@#+wKJO z&jThNxwNHD>-EqmkFk#-y#@A(@zSfpgdA(Co{T6vjH&i9vZcP-6&JC!Zsu-IT!pTls*Nya0Xu)D zdQ82rwT`G$)ha2X_%BUvR62*iRhT>5Pn2z0D8_l0ZsOI}T$e}Hi{~fe!vBh3Dg%Zj z$nSY1b9#&_NL9`-APE zPyIlply=1yhKQk-*Fs&V@8MIFQgkLlD#z+C-Tv0`*mVNqe}?oT^iyUw#q3snN$aG| zM_tl7nUxI9ep>l-erI&5gC5>Sf1k4f9U3;QM2T^gE1Yq9q$J?+J47QN?dcX34)3jw zuhG!IN{AqbF-K)iOIdM=VG z_9waa?}>8JxjwlLKkvL1)gLxHGl;{SKAxW|zg}YW94_lk*lGAZXS?>QxM1#Y`xa!& z$cq2N_)4o2pkLyLOSV{ro!#oTy71E;xYY?rT61D2^=#YEuz3%tK658nLp}i+Iroh3 zi8^+i`unSBrLU-G{cw4_;-I(NPQ#TqKE2j$N59&fgPV{3dgNdyR-v5^2ALeBVt4@n n0000000000000000Dv?++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrP=T+y?PbbGWSzubQ!%n7{KT0FKBI z$J+Zy8iJ>gf{fuMw&S+Y42Xa(xB`4k8N*1-NTN^-N;2E{;%_L{0XsUNq6Ng8&MVWc z-rIH{V=2YaMtnWc66aYv1$C*-7c!rU_CxF}a_`w30ep|4z132>W`{Bk*$gquS-TCz zi?F!RX^Zgl9WH!lqFDnADcE#k%f$HR&D$`(DR=|(jzv{%>lAbkAtU$p;s0D50ZEc1 z$&TipcqGs3_+AAp4VSQbXIZbNTl9^|0G*mQF3-fN!i~oblxCoAt;P z{51W)W-$SXEIl^$T17 zEZGMq$yw+mokq?+SPF06z8c!SVdv>st?a6&LnVqC`6D(CR9-ES-|~YCeg7WXqW^)Q z!P&)(qa|8|Rbz=mj}{+5p_P+rX!s!$pB!&cFE|T3fX@lByJ@#4##cT@rQevJCR&sU zi!|sckrcN_z-bGbEH0)4@N%~Tdv{iSi95E)$sy_Y)2jVI*u8Ln6FeJhET8YLl zHAWSrDrbpB8?Bi-fQ%0NUE*U}sAjwxkl*CFng?P1{#b|M21r004wl z$Iv0^7*`$j9+y{@x8EuCBd?`Z|CqE7S6g)X{h%9eET1n?YF_T}F|_+7=eX1=pSged zTaaYOs7SxMoaH?L?Z5BcC0qY$BvsqSwuNs?IPU@2wC1dx)Y7)U!z(^TymKe;QD?x8 zF}L*ZgL~{hw3UH5s(oTR>$}V2j6rQ5I}JTwTzuBY_I`4B3_iT~{V@h7u?n3u=w!xV sE4mi|000000000000000007wL7a&ZL>tQeH*8l(j07*qoM6N<$f@{_6UH||9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00000.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrP=T+y?PbbGWSzubQ!%n7{KT0FKBI z$J+Zy8iJ>gf{fuMw&S+Y42Xa(xB`4k8N*1-NTN^-N;2E{;%_L{0XsUNq6Ng8&MVWc z-rIH{V=2YaMtnWc66aYv1$C*-7c!rU_CxF}a_`w30ep|4z132>W`{Bk*$gquS-TCz zi?F!RX^Zgl9WH!lqFDnADcE#k%f$HR&D$`(DR=|(jzv{%>lAbkAtU$p;s0D50ZEc1 z$&TipcqGs3_+AAp4VSQbXIZbNTl9^|0G*mQF3-fN!i~oblxCoAt;P z{51W)W-$SXEIl^$T17 zEZGMq$yw+mokq?+SPF06z8c!SVdv>st?a6&LnVqC`6D(CR9-ES-|~YCeg7WXqW^)Q z!P&)(qa|8|Rbz=mj}{+5p_P+rX!s!$pB!&cFE|T3fX@lByJ@#4##cT@rQevJCR&sU zi!|sckrcN_z-bGbEH0)4@N%~Tdv{iSi95E)$sy_Y)2jVI*u8Ln6FeJhET8YLl zHAWSrDrbpB8?Bi-fQ%0NUE*U}sAjwxkl*CFng?P1{#b|M21r004wl z$Iv0^7*`$j9+y{@x8EuCBd?`Z|CqE7S6g)X{h%9eET1n?YF_T}F|_+7=eX1=pSged zTaaYOs7SxMoaH?L?Z5BcC0qY$BvsqSwuNs?IPU@2wC1dx)Y7)U!z(^TymKe;QD?x8 zF}L*ZgL~{hw3UH5s(oTR>$}V2j6rQ5I}JTwTzuBY_I`4B3_iT~{V@h7u?n3u=w!xV sE4mi|000000000000000007wL7a&ZL>tQeH*8l(j07*qoM6N<$f@{_6UH||9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00000.png b/tests_zemu/snapshots/sp-op-with-empty-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00001.png b/tests_zemu/snapshots/sp-op-with-empty-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00003.png b/tests_zemu/snapshots/sp-op-with-empty-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00007.png b/tests_zemu/snapshots/sp-op-with-empty-source/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00009.png b/tests_zemu/snapshots/sp-op-with-empty-source/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00010.png b/tests_zemu/snapshots/sp-op-with-empty-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00000.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00001.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00003.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00007.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00009.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..01b5148144520f59508f7f7918cb96cdd7565311 GIT binary patch literal 926 zcmV;P17ZA$P)ns>uc zeh8Zf9Xf=|e{<2136e$*QWA7>$wK(%;H{f67rcRa#a0b%s|z}ZB|G=@?OzVIfFwzh zq(s8dV4ARkl7%9C6!lT%;suwb2^?ml8CMBrX6AdT9|pQ0ijC>aETDan z&>n66xPIGQuI7J_B9U3yqapHF6~_YNv)sFR&v#ZRc4!^F`B*04o7GtW^0qf)1X^7Y zO6kbz1iBtygTMvQW{YM`R5ojp;IAvsE`;!(TxHydbNIA)4UHCe=6@Jx<=Q_?oaGu072{RKd8Pmw&7 zD>l*=3ZtxDwcBKh*^-PqxgzG9feKt$ykPlwE7^Hsdd1GrF4R2lo;t zkL$Rs*Y<*s5Y$W17e&s$1u@+#zIdJUKPUaVibURDa54}ZmN^gR@<-00=JjB}(0Ka2HkE_jBx z(CW{@3S2TYQ*rP@(JA{@RygJE8apPSp*cjA^N~!)R_$w4 zB%-tNQ2c2K7r8eCO=;#^52l)aPccvHH}!C<2lVF9wmVxgReP$UT}xCFz8Tzm47E35 zahKCJ;qq}8ek{?n8M~;l*$jKTF_1eVQZW7yyqS=Wg(%q?g7OfxY*R1)lGpO>+BKy7r z`m7m6TxDdY#h=w-Izy0H%!nt3FB{LV7HR~9AU@C3Wo-IaMrab1h;6+>=;z^dbVYPk zF{Aeup`S4uI$eqUN_yzcpn*PjhvMa`N5fDnxsYEFacdNf)k74v~0wX$yhHul|Mz^OZig^ z^S!J1`BX%=PS`~Uy|00000 n0000000000000000O9-sF2daa5fwxG00000NkvXXu0mjf;${h` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00011.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00012.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-public-key-approve/00000.png b/tests_zemu/snapshots/sp-public-key-approve/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..23fe56d3cbca05f1cd43cb41356189ef5020c299 GIT binary patch literal 399 zcmV;A0dW3_P)Zc{Zw^YPAM6d z^Y*8|8bZ`N0A}Vc^N5$f#JvNG zSVs)~Al_4u@EGdEGZHZX007`}eiKH`>^^*2KDB5k^H{ut!#EyKsVgtAi%eKmo2hI) z%~EH-%`L@8DWzgJ^9h`}Q?@ZTx>+wTZd}~CbKq_A-;FvN8dq`cQvtWCTOKbJ5UwNL zr*8K@Cgms$y<*WZdgv+v008h8I@!SDa79pF5-}OG#0SK56BmhC$I1)8NZB^6;%A7< zrXkFg8$JJz(MuCFjZ&S`3e___ZtK8N6Lexwny+u%M<(Ud)iw tDam?TQI;kqJFkq<2?GEC00000kT15?6tiux!o2_h002ovPDHLkV1jq5q~ibp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-public-key-approve/00001.png b/tests_zemu/snapshots/sp-public-key-approve/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..efb147a70525a4721c1801da8ba4176db0d18cc5 GIT binary patch literal 895 zcmV-_1AzRAP)S@#3`CVoI${4Msh50s!a;Cxc}a@1@5`nr0=z(Q?c*SX5JCtcC29;^%GECmplCx(`{vBeI<2}_yaQR-XyzrfDE{*P%SPbw$?gPrf4fP z?N;0rK$?(+SDw#r#e6*6eNB0P{>rI92qEOZ@R2`8QpPCRuV14^+{&tc)PlTiByU+0 zQDM|t)2rrva6EGb6X!@O82jpGdr1b8XYqMCVkoa{O;`ylPoJ(?C^$aXqS{2-D_0dW+hLn zq()L}^vE?DC7^E0dFq_Yw4hfbw+dI-13$Q}*$-XvB=`tdIzcJa?NqbNOP6`ZQsP3QowVETJ!&YZ#>`uJeHbv2IEE`uh@r*=v~SM8 zB!AR&rkQaLpBA_OOhO1Dgb?ya$^IJ}>3qF~1Hz%wAe$1Sm0c4nN_n;UDB^$eOMQ|q z_u;CH?$@MHmPd_%3TyNA#FMB&+vadV*4?-X&j^ag?;V{`yg!$9 z4OS8dY~-<~Wtg&iE|;k%C$+7H&X~b9XIE*!jYgq=xIxuyF2I57%;nJ`Xt~ld{}WTR zjfP!%^aLDN&B2YJXTSjN`H@Enml`_UpW2W32#KtKu?RW;Y@J-SC4>+{2qEMVd;??Q V8g`Q7WUT-I002ovPDHLkV1iZHt0n*d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-public-key-approve/00002.png b/tests_zemu/snapshots/sp-public-key-approve/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f6dbf945fdeb1a0de5ddd245471ff7df9335d GIT binary patch literal 478 zcmV<40U`d0P)ENb5Oic0%#tf+t17{^*`(VEwvAIq%h&QE%c4z&a7Osut9QHY;WSw96YPnW*} zL_o!A5Pefm7Gut;ffm<}XRKSyvKGyYR;>Wh+~C|lRzn}$V7NuGsmYOR$sSM^Y^t?W z_JZ!;I?}MycCX|C*xKEvf=5mt3r8lGpUrpkPrT;CEqu{eZgqZ6P&YbjJGEx?flb(X z@)5iJcsr+6h)T(atKU>UT*?5Xv;+Wvr{u@bxb5XYJU)t-hVi@5cD@Wxmg=LeQ|);7 ztlqr=^&6aXFn(f+)L@l&u07eRPZ6{F8Ty#8*8B5e+e*5Xy9~gtK78q8lU`xmss9I9 zQu;q;`R!P&t^bwlEq=as4%7>+KOw9-Px!Af=xtJvV`@_0Z6}Zea7p9ZpQ7!?vo-9x zFa_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YaC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-public-key-reject/00000.png b/tests_zemu/snapshots/sp-public-key-reject/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..23fe56d3cbca05f1cd43cb41356189ef5020c299 GIT binary patch literal 399 zcmV;A0dW3_P)Zc{Zw^YPAM6d z^Y*8|8bZ`N0A}Vc^N5$f#JvNG zSVs)~Al_4u@EGdEGZHZX007`}eiKH`>^^*2KDB5k^H{ut!#EyKsVgtAi%eKmo2hI) z%~EH-%`L@8DWzgJ^9h`}Q?@ZTx>+wTZd}~CbKq_A-;FvN8dq`cQvtWCTOKbJ5UwNL zr*8K@Cgms$y<*WZdgv+v008h8I@!SDa79pF5-}OG#0SK56BmhC$I1)8NZB^6;%A7< zrXkFg8$JJz(MuCFjZ&S`3e___ZtK8N6Lexwny+u%M<(Ud)iw tDam?TQI;kqJFkq<2?GEC00000kT15?6tiux!o2_h002ovPDHLkV1jq5q~ibp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-public-key-reject/00001.png b/tests_zemu/snapshots/sp-public-key-reject/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..efb147a70525a4721c1801da8ba4176db0d18cc5 GIT binary patch literal 895 zcmV-_1AzRAP)S@#3`CVoI${4Msh50s!a;Cxc}a@1@5`nr0=z(Q?c*SX5JCtcC29;^%GECmplCx(`{vBeI<2}_yaQR-XyzrfDE{*P%SPbw$?gPrf4fP z?N;0rK$?(+SDw#r#e6*6eNB0P{>rI92qEOZ@R2`8QpPCRuV14^+{&tc)PlTiByU+0 zQDM|t)2rrva6EGb6X!@O82jpGdr1b8XYqMCVkoa{O;`ylPoJ(?C^$aXqS{2-D_0dW+hLn zq()L}^vE?DC7^E0dFq_Yw4hfbw+dI-13$Q}*$-XvB=`tdIzcJa?NqbNOP6`ZQsP3QowVETJ!&YZ#>`uJeHbv2IEE`uh@r*=v~SM8 zB!AR&rkQaLpBA_OOhO1Dgb?ya$^IJ}>3qF~1Hz%wAe$1Sm0c4nN_n;UDB^$eOMQ|q z_u;CH?$@MHmPd_%3TyNA#FMB&+vadV*4?-X&j^ag?;V{`yg!$9 z4OS8dY~-<~Wtg&iE|;k%C$+7H&X~b9XIE*!jYgq=xIxuyF2I57%;nJ`Xt~ld{}WTR zjfP!%^aLDN&B2YJXTSjN`H@Enml`_UpW2W32#KtKu?RW;Y@J-SC4>+{2qEMVd;??Q V8g`Q7WUT-I002ovPDHLkV1iZHt0n*d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-public-key-reject/00002.png b/tests_zemu/snapshots/sp-public-key-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f6dbf945fdeb1a0de5ddd245471ff7df9335d GIT binary patch literal 478 zcmV<40U`d0P)ENb5Oic0%#tf+t17{^*`(VEwvAIq%h&QE%c4z&a7Osut9QHY;WSw96YPnW*} zL_o!A5Pefm7Gut;ffm<}XRKSyvKGyYR;>Wh+~C|lRzn}$V7NuGsmYOR$sSM^Y^t?W z_JZ!;I?}MycCX|C*xKEvf=5mt3r8lGpUrpkPrT;CEqu{eZgqZ6P&YbjJGEx?flb(X z@)5iJcsr+6h)T(atKU>UT*?5Xv;+Wvr{u@bxb5XYJU)t-hVi@5cD@Wxmg=LeQ|);7 ztlqr=^&6aXFn(f+)L@l&u07eRPZ6{F8Ty#8*8B5e+e*5Xy9~gtK78q8lU`xmss9I9 zQu;q;`R!P&t^bwlEq=as4%7>+KOw9-Px!Af=xtJvV`@_0Z6}Zea7p9ZpQ7!?vo-9x zFa_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YMjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-public-key-reject/00005.png b/tests_zemu/snapshots/sp-public-key-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00000.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00001.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00003.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00008.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00009.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00010.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00000.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00001.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00003.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00008.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00009.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00010.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00000.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00001.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4f662118263d3531c30d4912887fcc3d68bd70 GIT binary patch literal 932 zcmV;V16%xwP)K4{pHahXrXu8$I)ms8jVJy(P%u5Ux?8d<9ayH zQ!A;(^uI5JOJI$A@zF}e{D8E77ZKh9(mV}g4A&+E;!ShD(&JP?N`Iov&hr#q^D(;` zueEMYBNAx-B!Sikk&H;m4reqrjhY!S8%74goQZr&Y6B-4Xu6$+cHQ--Xiruf*R2S= zU9lM;f{ejXm9>PoljI^1h@fOU;roGBh#=4bWX|#|l<$^T6y7(lY|94j>_Fiqs3h;a z3gYB*@-8yT(W}`5=8}gWNca)LHPZsEg|i}l5VRu_h>PcZ;3t9vfkwf(w)|xL-{F1- zR558Z8jZ$33rh_Zzs*w@MFiFi;KRo-t6B9@C|-G=MMjK!G112|*weSon|^9Duw@U}1hOut zvry%y1hfOlvFv(4-q@|1r(Kb}EW~4J5FLsJuKzpDaa|p5f47A60MsOR_8)_g>dyYd z=stK8y$ZbvC&}FhTfx)od>g7MD#vmGCMBeLLZQ@{fUbmCG*a6j(- zPovRjG#ZV@rz3g|K~90LG9}uKFCczwQEaWq-D-Zsx^^oNs(#Iz_B?B@XKrI0u0#Bcg`xORh*Pt>c27l<3HhRzn}gE6ih? zu%TbNus;daY(gcXt3w%>H#bZ-IU?0YqtR$I8jVKdBk&g`T+INX^F8AL0000EaktG3V{fz)6P{I2>-z z-Rt?TUgiBJ`I&_=4vyYuw$#4YHstEa;Hb0#YGPp6_PM7-Yv~;Est36p0YZ5+uJ*RRfW== zu3y76vh;nDeI}dib&sqzNoT*(*{QMOcEJ1Ng(*ixLpN?MwAr@T^!N6*y-o#L#nuO0 zjy$+BVVmpu$RA0L6BBN(U8dSRq04w9L(=(gd`DdTbgOdB_D@rOy;nx~vU@<+{jU=` zCPZIaIIryT3|8*qdyHTAbgQda)fepkDzde=G{Jzo#B`hZ^R1P2U3L>!I!>Rm$IRC9 zpI(rd!cidxh9415S1*)^6}im4`n5}P@28aW4I7{ErzqMRZ!X$=I3XwC!Lv823&l)Y zBmJ+=5BYj=LEJWh7;}X!8m0|0dnq z&ah}g(7)-QT%RAT->2ET?)!BW^-cMVF0%^1a_)9?9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00004.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00009.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00010.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00011.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00000.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00008.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00010.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00000.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez&D zCuO((p;`kFy@|H%D_TZ&K)zlX%|`5Uq1douGU^+vuULO=w91vmsM;G5)z@&Sh0Z!uGQ9XE2OX|W#KhBbmQ@^c>5B{Ip{dhj?clb55>)fj0 zxl4HbENGrT`c~=)cIdkfw+}iw0eq*C)q_d#wO!)r$60c#i)(#s9@xnYGSS~g2{qB*j5#=oEOZjj;gbk20000000000 h000000001Rn_u?Iq;1p|t16P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00010.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00011.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00000.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez zPqgG+VRi6s%+!Zevn*NhyB=b<_vZc6JSN)c8?(GGs?~JmvU!X#gy3I2t-CS{qQm;T z+Uh_S&1kEy*j+BeDw0RdGn#EC*`4HEj#Xn@ zkiE&Ynq<4silNo*X|BKWpNP8r6XTkI_@aZR68lQ6n!3<4n8es^J=;;WtK|Tl^l(}o zu9j?9_US+;?%)Q$1HN15m+*?MzheOa>oz_E{IcU?_1#0YM2cgj5yx5b@3aol#%a3y z;%NHA^$s6Hhu-9TrO9_eZ{g2=YwM8v?;a;7z)!#5m&U_D?zx_hZ9(ZD3F*Unz}sbC z4z7S~KUvJ(O|viMG4#ktrjMb6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00010.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00011.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00000.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00001.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00003.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez&D zCuO((p;`kFy@|H%D_TZ&K)zlX%|`5Uq1douGU^+vuULO=w91vmsM;G5)z@&Sh0Z!uGQ9XE2OX|W#KhBbmQ@^c>5B{Ip{dhj?clb55>)fj0 zxl4HbENGrT`c~=)cIdkfw+}iw0eq*C)q_d#wO!)r$60c#i)(#s9@xnYGSS~g2{qB*j5#=oEOZjj;gbk20000000000 h000000001Rn_u?Iq;1p|t1 zPqgG+VRi6s%+!Zevn*NhyB=b<_vZc6JSN)c8?(GGs?~JmvU!X#gy3I2t-CS{qQm;T z+Uh_S&1kEy*j+BeDw0RdGn#EC*`4HEj#Xn@ zkiE&Ynq<4silNo*X|BKWpNP8r6XTkI_@aZR68lQ6n!3<4n8es^J=;;WtK|Tl^l(}o zu9j?9_US+;?%)Q$1HN15m+*?MzheOa>oz_E{IcU?_1#0YM2cgj5yx5b@3aol#%a3y z;%NHA^$s6Hhu-9TrO9_eZ{g2=YwM8v?;a;7z)!#5m&U_D?zx_hZ9(ZD3F*Unz}sbC z4z7S~KUvJ(O|viMG4#ktrjMb6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00010.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00011.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00012.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00000.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00001.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00003.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez^}q4j_9)DXTFPPw;UPKjNI<;X{1Hy=S2i2+b1cy*=Y+V#z}#w$ zwk}(*MdJ?WK9zYyQu6G<5`k`IOO(fIYA1S70u*8u$ty{IY#gflI9JDCWO)e^g=P4D zQs36YZXCIFT6LLmSSOrjz&FoPt43QI%R%xPAaW_HkdK|aAR{qvVsv6-b0{pic{X-}VO=bLb~k_<=xM@z^4A7m_(y?TzwR{py}tJhe| zIrPdN3YPB5IdfYUdC+t2Rl)PcIpI~94tk60RR9100000000000001hW!`ziimn&j6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00009.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00010.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00011.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00000.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00001.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00003.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezzel(q-$BV#QUQXm%9a=K6?E!-k*Is_pfi4 z;Gf+3z4s*zq=kN7y%vzLjv7Ac z?2&2^d|r9GFtW5zxG1`VD4%RG;-w0&bcajs+6?8VF1bSvEvI2heDYjbc; z_I385*fr2jDNpR`pCcXefR3NC*{T`l%Eys%9?cYpGj-T6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00009.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00010.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00011.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00000.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00001.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00003.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezEaktG3V{f=%S+v91fTL z${+ok{v__##Ffdd8g>RJ?-cLb6UWTaHBp8gsEOe~**=?=V-n}xI2_+v)-S8?z4WI4 z%G;Nh-km+K8})W_{gll%A9x*l3|l7XKfF?(^4d^7`Qz3*!mVA}ip%w`PST!SmHYZ> z_0A)VOX8n2ERuDaurB_^f|Q`k+dSn28@P^YPP!wTeCBpp;IV_Z3wRv%6{Lwxv^m+o zUv|Q`gVlxi8I865>{jo(E!WKM_WGjc3mb-RV}sO5f7VZam{6_$i{HuZ=|h_;_8KM@ z28IX4nIX=px@%snyzcqwx^-zv@V<@iS0grtm3=!`c*#%r=-dB4;yDA@#cf|nFBG|y zb0hb~*0P+wWZtQ_qA#4en{xH)vegB)3qF4PeZ8q@%dW3~)WW9pv77MC2+x>e7Eu)< z#253?KMpLOhc~KPncNx_>alz-9EOu=_ae1^Zl(YUo#g>mHd;oPxp6a z0NVmP#+lc5*sfd=3B>10K{bl2*S|I#`R&YjTu nZpp)xqz7E@SV19=4hkNNpZ|D7Zsxs|?;t5pS3j3^P66P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00009.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00010.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00011.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00000.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00008.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00010.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00000.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4f662118263d3531c30d4912887fcc3d68bd70 GIT binary patch literal 932 zcmV;V16%xwP)K4{pHahXrXu8$I)ms8jVJy(P%u5Ux?8d<9ayH zQ!A;(^uI5JOJI$A@zF}e{D8E77ZKh9(mV}g4A&+E;!ShD(&JP?N`Iov&hr#q^D(;` zueEMYBNAx-B!Sikk&H;m4reqrjhY!S8%74goQZr&Y6B-4Xu6$+cHQ--Xiruf*R2S= zU9lM;f{ejXm9>PoljI^1h@fOU;roGBh#=4bWX|#|l<$^T6y7(lY|94j>_Fiqs3h;a z3gYB*@-8yT(W}`5=8}gWNca)LHPZsEg|i}l5VRu_h>PcZ;3t9vfkwf(w)|xL-{F1- zR558Z8jZ$33rh_Zzs*w@MFiFi;KRo-t6B9@C|-G=MMjK!G112|*weSon|^9Duw@U}1hOut zvry%y1hfOlvFv(4-q@|1r(Kb}EW~4J5FLsJuKzpDaa|p5f47A60MsOR_8)_g>dyYd z=stK8y$ZbvC&}FhTfx)od>g7MD#vmGCMBeLLZQ@{fUbmCG*a6j(- zPovRjG#ZV@rz3g|K~90LG9}uKFCczwQEaWq-D-Zsx^^oNs(#Iz_B?B@XKrI0u0#Bcg`xORh*Pt>c27l<3HhRzn}gE6ih? zu%TbNus;daY(gcXt3w%>H#bZ-IU?0YqtR$I8jVKdBk&g`T+INX^F8AL0000EaktG3V{fz)6P{I2>-z z-Rt?TUgiBJ`I&_=4vyYuw$#4YHstEa;Hb0#YGPp6_PM7-Yv~;Est36p0YZ5+uJ*RRfW== zu3y76vh;nDeI}dib&sqzNoT*(*{QMOcEJ1Ng(*ixLpN?MwAr@T^!N6*y-o#L#nuO0 zjy$+BVVmpu$RA0L6BBN(U8dSRq04w9L(=(gd`DdTbgOdB_D@rOy;nx~vU@<+{jU=` zCPZIaIIryT3|8*qdyHTAbgQda)fepkDzde=G{Jzo#B`hZ^R1P2U3L>!I!>Rm$IRC9 zpI(rd!cidxh9415S1*)^6}im4`n5}P@28aW4I7{ErzqMRZ!X$=I3XwC!Lv823&l)Y zBmJ+=5BYj=LEJWh7;}X!8m0|0dnq z&ah}g(7)-QT%RAT->2ET?)!BW^-cMVF0%^1a_)9?9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00004.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez&D zCuO((p;`kFy@|H%D_TZ&K)zlX%|`5Uq1douGU^+vuULO=w91vmsM;G5)z@&Sh0Z!uGQ9XE2OX|W#KhBbmQ@^c>5B{Ip{dhj?clb55>)fj0 zxl4HbENGrT`c~=)cIdkfw+}iw0eq*C)q_d#wO!)r$60c#i)(#s9@xnYGSS~g2{qB*j5#=oEOZjj;gbk20000000000 h000000001Rn_u?Iq;1p|t1 zPqgG+VRi6s%+!Zevn*NhyB=b<_vZc6JSN)c8?(GGs?~JmvU!X#gy3I2t-CS{qQm;T z+Uh_S&1kEy*j+BeDw0RdGn#EC*`4HEj#Xn@ zkiE&Ynq<4silNo*X|BKWpNP8r6XTkI_@aZR68lQ6n!3<4n8es^J=;;WtK|Tl^l(}o zu9j?9_US+;?%)Q$1HN15m+*?MzheOa>oz_E{IcU?_1#0YM2cgj5yx5b@3aol#%a3y z;%NHA^$s6Hhu-9TrO9_eZ{g2=YwM8v?;a;7z)!#5m&U_D?zx_hZ9(ZD3F*Unz}sbC z4z7S~KUvJ(O|viMG4#ktrjMb6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00011.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00012.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00013.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00000.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezAt>EaktG3V{fz`i3291eHS z-dpnBKIr`>`N^hk6PaACXIH+@ex#rfkh4_;sEMKBZ4K+QInN`#Ec+J!mYoo?O#4%p ztN8QEzI|8kUkzI-`oitdzduKou@>x%5Wl%D*Qaw{-QrHkq`PNy+KMMkYuKpg(wL{p z_&2$=@9XVdAGyxX4bgpS?S1j1yCKWcXmD zeu;neQtqI)zZJWS?R2rD+Zi?_=}(`#%C7tPc5McR9~m;s7e4ZQ@}|XIQt+zYr0f3C zvFTyoTQ5u4|4MJy{pBGW@^6>&`rXr)-ha2}1atf$-Fsdq_p)WUzxh>s`p-j_H|}q2 z)&)GHyZd%gSu^$oY{kF4HzVD^eURh|6(oh55;slG8fvhWh$GDo#vw*{Ph vznDAo&1=#7q9X37#_p}S2NeDo;PemH&;DN-iw^4XgXBD2{an^LB{Ts5x>M$= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00005.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc42f2914ea26991a3cc46e5a8af564d4ab4d71 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00010.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00011.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00000.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezEaktG3V{fz)6P{INI*c z-Rt?TUgiBJ{<&6~8cnlIGWWk<`TCzD(+L$7RiG}0hRZ(-UlpCxT$+3P$a}`68zV9# z#gn4Nl%B7t)!W}%?W7Rq6!-V6Rh|%Uz}GO=vR}tv8-M|jr->z6DuWn{P>vV!6S9a!|#Uy8l?CSg&y P1xU)%)z4*}Q$iB}`Vi}7 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00005.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc42f2914ea26991a3cc46e5a8af564d4ab4d71 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00010.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00011.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00000.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezA!>EaktG3V{f$Vo>OI2`7# z-0AtQUgf=!{K{=I;w(Vg+nfKid}HVe)>(qv?d|s+mzfcxGkMMPYs+2y_Fp>ElX&-x&aPsCX$|}I+L+Gz z$o%@v_4f7lvSj|V6GP^nDxb3Gt!ofV_~jjGhmLyL2dPM#SJfwdUO4BgzaVx$S)rJ!OBM!KHgB=G!`dKLyEA6xtIa$9ma;N1$oIZADXEaKw0q-B1*O%Q>>W?s;a`2aaqVS@R#hN<#MN{(5?|A6_L*e1kr9b7aaQxo! z&h9|h%a*$(ftNXE8|`}IcdeW8JlBOAFH-wrq;*&F_a(JXui{(BSaQSb7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00010.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00011.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00012.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00000.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00001.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00003.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezA!>EaktG3V{f$Vo>OI2`7# z-0AtQUgf=!{K{=I;w(Vg+nfKid}HVe)>(qv?d|s+mzfcxGkMMPYs+2y_Fp>ElX&-x&aPsCX$|}I+L+Gz z$o%@v_4f7lvSj|V6GP^nDxb3Gt!ofV_~jjGhmLyL2dPM#SJfwdUO4BgzaVx$S)rJ!OBM!KHgB=G!`dKLyEA6xtIa$9ma;N1$oIZADXEaKw0q-B1*O%Q>>W?s;a`2aaqVS@R#hN<#MN{(5?|A6_L*e1kr9b7aaQxo! z&h9|h%a*$(ftNXE8|`}IcdeW8JlBOAFH-wrq;*&F_a(JXui{(BSaQSb7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn&D zCuO((p;`kFy@|H%D_TZ&K)zlX%|`5Uq1douGU^+vuULO=w91vmsM;G5)z@&Sh0Z!uGQ9XE2OX|W#KhBbmQ@^c>5B{Ip{dhj?clb55>)fj0 zxl4HbENGrT`c~=)cIdkfw+}iw0eq*C)q_d#wO!)r$60c#i)(#s9@xnYGSS~g2{qB*j5#=oEOZjj;gbk20000000000 h000000001Rn_u?Iq;1p|t1 zPqgG+VRi6s%+!Zevn*NhyB=b<_vZc6JSN)c8?(GGs?~JmvU!X#gy3I2t-CS{qQm;T z+Uh_S&1kEy*j+BeDw0RdGn#EC*`4HEj#Xn@ zkiE&Ynq<4silNo*X|BKWpNP8r6XTkI_@aZR68lQ6n!3<4n8es^J=;;WtK|Tl^l(}o zu9j?9_US+;?%)Q$1HN15m+*?MzheOa>oz_E{IcU?_1#0YM2cgj5yx5b@3aol#%a3y z;%NHA^$s6Hhu-9TrO9_eZ{g2=YwM8v?;a;7z)!#5m&U_D?zx_hZ9(ZD3F*Unz}sbC z4z7S~KUvJ(O|viMG4#ktrjMbEaktG3V{f=%S+v91fTL z${+ok{v__##Ffdd8g>RJ?-cLb6UWTaHBp8gsEOe~**=?=V-n}xI2_+v)-S8?z4WI4 z%G;Nh-km+K8})W_{gll%A9x*l3|l7XKfF?(^4d^7`Qz3*!mVA}ip%w`PST!SmHYZ> z_0A)VOX8n2ERuDaurB_^f|Q`k+dSn28@P^YPP!wTeCBpp;IV_Z3wRv%6{Lwxv^m+o zUv|Q`gVlxi8I865>{jo(E!WKM_WGjc3mb-RV}sO5f7VZam{6_$i{HuZ=|h_;_8KM@ z28IX4nIX=px@%snyzcqwx^-zv@V<@iS0grtm3=!`c*#%r=-dB4;yDA@#cf|nFBG|y zb0hb~*0P+wWZtQ_qA#4en{xH)vegB)3qF4PeZ8q@%dW3~)WW9pv77MC2+x>e7Eu)< z#253?KMpLOhc~KPncNx_>alz-9EOu=_ae1^Zl(YUo#g>mHd;oPxp6a z0NVmP#+lc5*sfd=3B>10K{bl2*S|I#`R&YjTu nZpp)xqz7E@SV19=4hkNNpZ|D7Zsxs|?;t5pS3j3^P6^}q4j_9)DXTFPPw;UPKjNI<;X{1Hy=S2i2+b1cy*=Y+V#z}#w$ zwk}(*MdJ?WK9zYyQu6G<5`k`IOO(fIYA1S70u*8u$ty{IY#gflI9JDCWO)e^g=P4D zQs36YZXCIFT6LLmSSOrjz&FoPt43QI%R%xPAaW_HkdK|aAR{qvVsv6-b0{pic{X-}VO=bLb~k_<=xM@z^4A7m_(y?TzwR{py}tJhe| zIrPdN3YPB5IdfYUdC+t2Rl)PcIpI~94tk60RR9100000000000001hW!`ziimn&jzel(q-$BV#QUQXm%9a=K6?E!-k*Is_pfi4 z;Gf+3z4s*zq=kN7y%vzLjv7Ac z?2&2^d|r9GFtW5zxG1`VD4%RG;-w0&bcajs+6?8VF1bSvEvI2heDYjbc; z_I385*fr2jDNpR`pCcXefR3NC*{T`l%Eys%9?cYpGj-T6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00015.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00016.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00017.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00000.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00001.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DLv4LQ&`HyNiWiJ`pUAXJKSuc#!rcGb4TfD*d@`R?C+!+-5AW^2>asjG9%s zC1rnpO?rCNf2QvF;JvXd?)f6m_P&27YV(PZ`@T!Bgxr@*HV}@@STKPx1c`dO L`njxgN@xNA(_6Lh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00003.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00009rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00007.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00010.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00011.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00016.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00017.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00000.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00001.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00003.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1031d9e1ec602fac2563233d6ecd580b03ab78b8 GIT binary patch literal 523 zcmV+m0`&cfP)7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00008.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00009.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00000.png b/tests_zemu/snapshots/sp-tx-memo-hash/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00001.png b/tests_zemu/snapshots/sp-tx-memo-hash/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d5d01dbde9d366204693aef005acfbcf1a3ed3 GIT binary patch literal 921 zcmV;K17`e*P)|&`7Zn68cKs+Eg_uDME#XusSyHU)An&R8jVJy(P%UpkK<3y?Yge} z$9bMwOD%5xo1FemxN8RVD!1nW9N&kZ8~ERZ&+o%XsQ7n)Pd~NPylnhS_)y$4FZN9v zN4Ue7daaZZ??r0_`N6SNVOIr=EKe(Clq#=TZDmb1)1~tZ+-tPc79&*63xOTBfz=8S zLDL;|p)EWSp~6qxDsY}E@}&x(-HV}|1S=hBnCeUnCbu;s{g$9$3*ynFOL&oFaxa{9 zZF#LT@45$!y@K!BuFCO&d)LugXunlE(uV?HCHojY9qSWN6-lGfXf!?r zmKrLGIa-UWt{7UQCM6orb|LZ70OdgxOvK7(QYS;JML3k!*aA6#3V6>g64ShA%CT4T9vncgU(z$3RNAg6{JF-<$^Bs5lOmZGKM>pln=-Tk=tKaEDC(P%Up?~dp( z1bGT{l_}BY`U1jZi(=G~(`r1TuRRJRRNr&ao@dQv<~GKIJow;`#A!zkcAc{iAH=j{ z3-@(}KzeoYL}TYGM2`4JIym&16m4vKaAon0!nSd{2IE00&+QT1EpI&cW!%NS z-~uDC?V^4Hu811CFS%l1X&o1wq{KwNwHo>`UJ`liCT!@JF6>W2HJeb2 vNOdR+bMc1hCPxgl(P%UpjYgxn|uF5?dyPSYej~px$|tr zw^?K7UeIXC3+?NG>^0-+6?Q`vOXMA}zuooY$?R+M$gpw-sh*xTOJ1uHUUrl=FoR6= zw^2e(^f#jq?!+o|r$&(JgG&)!0000000000000000002sGXE&x#RV!spy>br002ov JPDHLkV1la4?*0G( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00003.png b/tests_zemu/snapshots/sp-tx-memo-hash/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e5793eb59fb9dac03a903f256fcc66bcacfb52ab GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2VB;O$e9@mQv zH$1=XS9#ys&!v4f!K?j7$oHCs3~aW`GiOZ!X@4o#w_jK3boZRk87bvwn@g8fR{n4F zK5{;`HKU>9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00004.png b/tests_zemu/snapshots/sp-tx-memo-hash/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00010.png b/tests_zemu/snapshots/sp-tx-memo-hash/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00011.png b/tests_zemu/snapshots/sp-tx-memo-hash/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00012.png b/tests_zemu/snapshots/sp-tx-memo-hash/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00000.png b/tests_zemu/snapshots/sp-tx-memo-id/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00001.png b/tests_zemu/snapshots/sp-tx-memo-id/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..95152b0fbb62d87bedf6bc1912415a83eca418c9 GIT binary patch literal 517 zcmV+g0{Z=lP)741i&KraNK(OJXnQ!5M}zTmm8i`+rXz$A&i1RAY|=0001(?qjvE_x^n0oXc%_ zV#PCfSnJUhHU6v?UV(EiS&x~%RtpE-d*@s-1@Xp^sjzeWu4$*yaO<7{AhRF5TpKAi4cAv5_;M?wE2YBv&cyqxrst$mKXa&M5H$@sL37 zoSUg7BjlF56H_ygC~RqZQ4OfMeW~1t=?kblPMbUta}NE-Yn}zg)8MeNHB-r# zvtMpg9RcGwN2)KihH5TAVH&JwH8Jk{}57n_T`}Vn$ zT#W$*$n_0PKbaYGP1gcwj)4n00000NkvXX Hu0mjf|7_>s literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00002.png b/tests_zemu/snapshots/sp-tx-memo-id/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e5793eb59fb9dac03a903f256fcc66bcacfb52ab GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2VB;O$e9@mQv zH$1=XS9#ys&!v4f!K?j7$oHCs3~aW`GiOZ!X@4o#w_jK3boZRk87bvwn@g8fR{n4F zK5{;`HKU>9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00003.png b/tests_zemu/snapshots/sp-tx-memo-id/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00009.png b/tests_zemu/snapshots/sp-tx-memo-id/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00010.png b/tests_zemu/snapshots/sp-tx-memo-id/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00011.png b/tests_zemu/snapshots/sp-tx-memo-id/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00000.png b/tests_zemu/snapshots/sp-tx-memo-none/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00001.png b/tests_zemu/snapshots/sp-tx-memo-none/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e5793eb59fb9dac03a903f256fcc66bcacfb52ab GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2VB;O$e9@mQv zH$1=XS9#ys&!v4f!K?j7$oHCs3~aW`GiOZ!X@4o#w_jK3boZRk87bvwn@g8fR{n4F zK5{;`HKU>9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00002.png b/tests_zemu/snapshots/sp-tx-memo-none/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00008.png b/tests_zemu/snapshots/sp-tx-memo-none/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00009.png b/tests_zemu/snapshots/sp-tx-memo-none/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00010.png b/tests_zemu/snapshots/sp-tx-memo-none/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00000.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00001.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4f662118263d3531c30d4912887fcc3d68bd70 GIT binary patch literal 932 zcmV;V16%xwP)K4{pHahXrXu8$I)ms8jVJy(P%u5Ux?8d<9ayH zQ!A;(^uI5JOJI$A@zF}e{D8E77ZKh9(mV}g4A&+E;!ShD(&JP?N`Iov&hr#q^D(;` zueEMYBNAx-B!Sikk&H;m4reqrjhY!S8%74goQZr&Y6B-4Xu6$+cHQ--Xiruf*R2S= zU9lM;f{ejXm9>PoljI^1h@fOU;roGBh#=4bWX|#|l<$^T6y7(lY|94j>_Fiqs3h;a z3gYB*@-8yT(W}`5=8}gWNca)LHPZsEg|i}l5VRu_h>PcZ;3t9vfkwf(w)|xL-{F1- zR558Z8jZ$33rh_Zzs*w@MFiFi;KRo-t6B9@C|-G=MMjK!G112|*weSon|^9Duw@U}1hOut zvry%y1hfOlvFv(4-q@|1r(Kb}EW~4J5FLsJuKzpDaa|p5f47A60MsOR_8)_g>dyYd z=stK8y$ZbvC&}FhTfx)od>g7MD#vmGCMBeLLZQ@{fUbmCG*a6j(- zPovRjG#ZV@rz3g|K~90LG9}uKFCczwQEaWq-D-Zsx^^oNs(#Iz_B?B@XKrI0u0#Bcg`xORh*Pt>c27l<3HhRzn}gE6ih? zu%TbNus;daY(gcXt3w%>H#bZ-IU?0YqtR$I8jVKdBk&g`T+INX^F8AL0000EaktG3V{fz)6P{I2>-z z-Rt?TUgiBJ`I&_=4vyYuw$#4YHstEa;Hb0#YGPp6_PM7-Yv~;Est36p0YZ5+uJ*RRfW== zu3y76vh;nDeI}dib&sqzNoT*(*{QMOcEJ1Ng(*ixLpN?MwAr@T^!N6*y-o#L#nuO0 zjy$+BVVmpu$RA0L6BBN(U8dSRq04w9L(=(gd`DdTbgOdB_D@rOy;nx~vU@<+{jU=` zCPZIaIIryT3|8*qdyHTAbgQda)fepkDzde=G{Jzo#B`hZ^R1P2U3L>!I!>Rm$IRC9 zpI(rd!cidxh9415S1*)^6}im4`n5}P@28aW4I7{ErzqMRZ!X$=I3XwC!Lv823&l)Y zBmJ+=5BYj=LEJWh7;}X!8m0|0dnq z&ah}g(7)-QT%RAT->2ET?)!BW^-cMVF0%^1a_)9?9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00004.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00010.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00011.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00012.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00000.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00001.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e7fe4240848ceea82d785c681d591cda9d4e92 GIT binary patch literal 576 zcmV-G0>AxSiMwhOG`@W8tPIp-S|pal*Vj{;x*TxF>c1FBxv(Gmx{rzYBvXs1Y9zu;qr5iVD2oX zhL@32A;qmpk^CtGtP5R@aYrirj)`S&l_zq^E8}EiH<-!~V1`*wI{P z^WO_)xofKH_(%zo;qDcYEtTn0QgO}w`vtwSvZY?x$L*ZMT6d>HEdk9{|HKD*nTpbi zECs!*Y}%4gqFsWf#J#j6a@yW4(t&Ca6K0fbb2><}>f`1x1jNPRL_h(86y_mb=w1@1%@s2y{Ks0=pU{c24!((xtU_NyBgo|7Q3x*p000000000000000000000002MWBdWh=<)LK_ZS}l O00009$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00003.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00009.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00010.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00011.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00000.png b/tests_zemu/snapshots/sp-tx-memo-text/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00001.png b/tests_zemu/snapshots/sp-tx-memo-text/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..54eefaee39776f36537523231e9753a621d49d22 GIT binary patch literal 546 zcmV+-0^R+IP)rq!K6yshAJ|00000%=xlWbDn1$9LG_+ zvO`^Bhn6M$JZ-=hqPt@lCR{%)IDvHl&htEuBVVE6@3KuEOp~S5bQ)b$Nb%exn=pKD zy}O?DYvtk%uNcTdE)q&LN24NlZu<5z-iM0-NOx;o8A={+3)WQJELQh1EkWI^H*kTs zr||M=B58l$gc%W+YHf^dPp3XN8eTt)lAtG5II00017GrG$)_!rpiO6|tW zKHy_{pc@(oa_gjNYS!k+o?3CN@1ef`woCrPyv}F_p}u|1Kf4hEm%dH9UK4N3$=gabjg|)QrS?`q@nZ3croGcptsHnT zxXt8F_)d@?*{QlUcyBMLSRxwrA@nj@ip%$Q-5R_XWhQppzm0D%)4C1qgcF0itjvIJ zs^-o5p~cdjUwla3x#3NNH7pB&#yCxCo8iRZ#TgI>wX;B_V9?d~e9mYUHZ~Xl00000 k0000000000001oc1%HSy#!H*BasU7T07*qoM6N<$f}95YMgRZ+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00002.png b/tests_zemu/snapshots/sp-tx-memo-text/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e5793eb59fb9dac03a903f256fcc66bcacfb52ab GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2VB;O$e9@mQv zH$1=XS9#ys&!v4f!K?j7$oHCs3~aW`GiOZ!X@4o#w_jK3boZRk87bvwn@g8fR{n4F zK5{;`HKU>9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00003.png b/tests_zemu/snapshots/sp-tx-memo-text/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00009.png b/tests_zemu/snapshots/sp-tx-memo-text/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00010.png b/tests_zemu/snapshots/sp-tx-memo-text/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00011.png b/tests_zemu/snapshots/sp-tx-memo-text/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00000.png b/tests_zemu/snapshots/sp-tx-multi-operations/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00001.png b/tests_zemu/snapshots/sp-tx-multi-operations/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DLY4J!`+F7TWAEI6fR*NwWU-p{sso+t;{M@TJ-Z(Z>9ZJ zH*xPX4b!spGT&@}weY%#?UUG0>AgS17ex5HIl;T%Lreea&;7sTqf$Ag`hToG6rvob zSiaSZQKxsuuBwtKtG^=2`!iS=7!KrF?Y8}WwQ<_DwoCU?rP=3KB+m`6|9y2M|F**u z-Je{q5Iyi;<55=Co{d+yH$;8+{SlpcM$T`iMcb^fwY6Lm&P~hTUhsZD%gcg)7VBcg zR@bH-P}7@rXs)yG^xO=+J^2%?W-tA0_oZ?->zBS+ij)7DOkLqwZbP0l+XkK{vxO? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00003.png b/tests_zemu/snapshots/sp-tx-multi-operations/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000R_7 z#LP$XP@UJdv-8&KN2y=-dwayBnt2GJnp=9Ln2>^`@oLN>&bJ4xUA4a2N9(Wtoi^E< zM@~SYD9wIC^@v;wn?{BUF%~U#Yk27u4ajwN*?OJ-w+FAFq;u*g!yb;j745w72IQx& zdJk5Aiu3uMfM>?H#(h1X(aC6?++WrzF?%bnAUZSv0001Zkw4KMbx>Z_U!YlJ)nBGk zYSmv%58mV!dXwMbHz_Xw000000000006gXoGm7bnN-$uv00000NkvXXu0mjfAO4*~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00007.png b/tests_zemu/snapshots/sp-tx-multi-operations/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a420c39d7df2143a689a346ce37c0e2d5fb27d GIT binary patch literal 531 zcmV+u0_^>XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00008.png b/tests_zemu/snapshots/sp-tx-multi-operations/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00010.png b/tests_zemu/snapshots/sp-tx-multi-operations/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00011.png b/tests_zemu/snapshots/sp-tx-multi-operations/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..32de005c456b5ae769d87622e96cbaca77997b2e GIT binary patch literal 360 zcmV-u0hj)XP)v&$ zvEsD*lN^Pl6zyz0{zAk~=S(RO~^)Z_zZy@H~n!+SsNY0J&< zH5Z%buc4Pd!j}R&Kf=|X?IFqzWx}oS<~6io-j(!Un*Iu+%>n=b001xYKiX6$UBH@kuW0000uBrV1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00012.png b/tests_zemu/snapshots/sp-tx-multi-operations/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..8a547eceeee8ca5d48ad7abbaa349d86fa57a390 GIT binary patch literal 620 zcmV-y0+aoTP)a?AW~9Fw>!fX`yT-(M7=xB>XgeX_Nd)Nf`XvPl2{0001hP}tQ_ za;H~HF8uWE>8#waM9Zcgj{wi;#E$Zar)7}(_TTzQY3b_hd3;ij$BsC<*v(_#B<@8l z2)xXKd;?83Rzn89wb_`wvuf4I#1KlZTx%a!qItj@qo0QN1coLa;xGYAx&a9#aGl`2s zv^sY^K11s@4dbhdx0816KE9i#Jb3>Yg2-3s{!btVH`$(rfP&#<#9%Ajy+$?EEF^ep znf0e)qhhDk-~7nglM8OWtY0}Feehg6d6gGS2(4cimK(_pR;Gb%P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00015.png b/tests_zemu/snapshots/sp-tx-multi-operations/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00016.png b/tests_zemu/snapshots/sp-tx-multi-operations/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc5760b7a4620978346549b6b13a69f583a4278 GIT binary patch literal 351 zcmV-l0igbgP)wICmx7Z;iN zkv!_?!Yl^vCvYfj#OwCNkLqp>Ayh9c4JiszNIG84EOI{gpf$0yT1Nu=6X>T6x_<{0 ziq`B4s$1kxY&tU1h1B1o{#;-yZQS%5kn1nZt+t$h-mFJZ(%QV&W4|6*8#w6x&(K3J z;X?xlU&7VO)*MoGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00018.png b/tests_zemu/snapshots/sp-tx-multi-operations/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a99176ab4e74dd7410e970932b2b4306ba934d GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Aba4!+nDh2#bl+hG9*01y zS#vl1SKT=Mr^8l(_XanXytIv9p()|vB=lGYs43yy*6lk5nu^a=&!4)zySMvoV2Jhn zUl;inoT{EbFQ<3f*1u9mI#T*l5)@h9?~Td6YVYy&=gS>ZE2LC+PhEZYw$oES4#kw| zDLYM0zJIB(I#e(AF?ZviXmzj1Z1Jhq3erB7s~%QZm8NH%W#1*0WW8H8qxYNBon6Ui zB5Ybtd&>B|zO_f6#p>J(-HeAvLsm`k7g20qa&~p&B@N@fKrbB-kNj=$kE8r#n_YgI zx~#YBl9NXx)}^sV$p@!$Z4O;JImNel&ffz55Z~!(PyH5te*QD9{VMMqpJSy#QxCta zI5VmA4a=5IpI=@)DfaKC@aDV6R~_bmSR`t9slC~|zK;Dx?%yemNel0=&bjmd^&Csd zqdvi2)xCfFO!>3FKM1qZXG(Kid-(pTiNXQ=Us^ZIx3(1C>72iyIrPPngDS;*A%=T_ d;fD+wX4zj8aJ;Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00020.png b/tests_zemu/snapshots/sp-tx-multi-operations/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00000.png b/tests_zemu/snapshots/sp-tx-network-custom/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00001.png b/tests_zemu/snapshots/sp-tx-network-custom/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee8afda081af92a391d342f3046b100910e4011 GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s}ba4!+nDh2#bl+hG9*4kk z6YIqP-k;*0DX(%hTvD>+M$5g=Q{9Cp@VYHj0_ol19(H(DmCTf&H(xCJ-Z-Rm$J*~a zdpd3VO5f78?R<;t#goKl|ga>-AoFHpNMxiG&gsP^Mx#(Qhi zCVmor5E<}FDbKzL-H_M!LXX61jkufBh4%B$!# zH+k3gpTB+U&I*=ZvuAGG?W(p_p8qKp*K>Qyf_L}Xq<8o-&Fb3Ndt1ff-|XhcnzuD# zbJezX7exGD7s33xTu(Ihv)Z2Mb04qrH2ZuxT;k;WrFmkrPsl=_{3ahhJ=Y3Gp#4ao b;q)Iy``iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DLw~ba4!+nDh2#?4&~q0&anG ziqzlKd%j7P3ktfy+wo^x)%oDAGh04pHwn&V2I|_jTejw{z@gFyd-Z!uuFI_1eD?1b zR-Huq?xI&45s~Le;Q_a{lEOfdXTWEtDnm{r-UW| DeYd!- literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00004.png b/tests_zemu/snapshots/sp-tx-network-custom/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00010.png b/tests_zemu/snapshots/sp-tx-network-custom/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00011.png b/tests_zemu/snapshots/sp-tx-network-custom/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-public/00000.png b/tests_zemu/snapshots/sp-tx-network-public/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-public/00001.png b/tests_zemu/snapshots/sp-tx-network-public/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-public/00003.png b/tests_zemu/snapshots/sp-tx-network-public/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-public/00009.png b/tests_zemu/snapshots/sp-tx-network-public/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-public/00010.png b/tests_zemu/snapshots/sp-tx-network-public/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00000.png b/tests_zemu/snapshots/sp-tx-network-testnet/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00001.png b/tests_zemu/snapshots/sp-tx-network-testnet/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..76410f07c2b71d597d000b9f758109427f0d58a9 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|y*$fTKi(vNqAa@0a9`{RzCSlsZg|9V!NtVOSAFlv zeG-=fIe&|OKap~f)#Aj8<-^fdqVT%KUEbZdqpn!nIj<=de>`RPE=!Y&>0Wz2v9cC~zi!Lg zP_#O-&~Tmm)wBDiRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00004.png b/tests_zemu/snapshots/sp-tx-network-testnet/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00010.png b/tests_zemu/snapshots/sp-tx-network-testnet/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00011.png b/tests_zemu/snapshots/sp-tx-network-testnet/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-reject/00000.png b/tests_zemu/snapshots/sp-tx-reject/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-reject/00001.png b/tests_zemu/snapshots/sp-tx-reject/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-reject/00003.png b/tests_zemu/snapshots/sp-tx-reject/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-reject/00009.png b/tests_zemu/snapshots/sp-tx-reject/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-reject/00010.png b/tests_zemu/snapshots/sp-tx-reject/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e3760f173a82de5b7f9e5d26f9ed652496714d GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2#Am1Sc0oRKc zcL;ymzvO1Oyh~2wtgek`vfux_)FJp>bjB)4pe6`tFt~H~?(w+Zmv+@m%DY0RY1gWW zIe2N>uQ(MuZyKZ45vC1sY`d0kGM{(D(ViqU&3s`dzE1uU!vtC zMjijVYxjAy#xdlcSDx!A>+s?IhO33I(l&4%xT|`r^PP%n+P}^_TZ^?q>g|kX^z%GZ zW{&Y*6Yo6z^?U!^)PEfowy%@FvD{lU^_fH?(~DQ@I%^K!xF@>3nLi@PzUyCfK-I=l z)7!JZZE9Hc@$UBH3%4-sle+dVQ8M@i!?fjx3S^Vt*|>hu%~-ze)WO$rF8R)@x%c0? ov-()(dBvKuaojMUGB6k%7Jec)@~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-reject/00011.png b/tests_zemu/snapshots/sp-tx-reject/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00000.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn$PAP5flUFWCS$Nym8+Mz#gjb$*do*<}BYgyG?}k_lpU(aOM0t`V zNs@dnwi@bG3LBbU*uQF9yQ1r{o4>iozcIU9D^sxEc7HskaG-vqE7(@bsdwauOD0rhaI8gH{oUwvwXkzeS8|IF*_GUfPF+E`VceKBE;d-bnC_ zw*R_5yKdr~|;4trj&>S*!^*e^WX;F@k?GoiTTu%WsPlmxf7_BuSDae+fek)ud2O zfSfJF+M%huYNtO@s^tENTI^VjZ%IA=Z(iL0ho%&YLZkQ<6lw;=ax9U0{4`5|=qr}^ ztpVQtzaWk9bMjLMZ(9vDC-0iye2t5U|23Nm7DyLZ$>DcOe9d8{+T*7^0NUM?M~5=a zdfIAQtg}-s^)DMFW`PD*9P{kArl4@KW&f5*TSmCmZykVg*BG2;{YGrZSMmLUvxG=b z9hY?5Ui4Rp){8S2dES2kd(b3Fk|arzBss(nTp8|4a!3lw00000NkvXXu0mjf)v2-? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4ebd9c14f539d5c837e89a639547c4bc07e22f GIT binary patch literal 592 zcmV-W08JtVIbiLO0#A6ce|4Pv!Xt#{F#o}45q$;WV zQA?^4Ph#TTnt3`uM<~@sn~%{xr{_=;bK;JW1gl)3)6O1-1YrAZVi1pdy2XIQXWRW7 zOzh7R!bsERtjKAGq@W(E`v$!XI-S+C`q0iLdtJixgM}N zRlnKo(i-&Arag-bJ&(OZTo)hS3K|249*@Jhve3IWNoz%v=I4^=Rzkq2R)nVQos|VY zXrxl}&(+85OhM+bAfE(hIk_XQ`FD8T2+_&7KKM|67xS8NXF0VopSz3i zZ$+%OB`0%#0K8P5NYDW^++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00011.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00012.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00000.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00009.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00000.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00001.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00003.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn@clZ-xbQt2KkJOt*Sh+kt|ml!-Pn1NLfhpH)i`Lv6mO^;Fvrv9l<=i-j`)EGf*c ziEO^sF*sFn4c=weWTBcR*Am zNs=VVcj>61%pOjhY0X3+G>S{iSKvs8>RAxdrbrQ%%~HUTnP(Vsvn+PUI#K8MuIkU8 z&2BK*K2FqIeo&lGFY=O+x<-5aJ+$l|tS37UvZ7m0mZ$%G^(O8C4n zkuyL?U=}ksf;VX&541L;8Y1v+Y%YMJP0UH(smPmm3+v!(9nwCokq@>$uPVpt&xWZF zw*FqS4|bBP&`vsyoPDqq-MoD@6w8ffI#w&Y>gkY2v!MQpjRTd}OEg~_F!!Cuot-+P z|A9$^i<<>UJu<>7>2c^Q69aHs*{OzxA2RXD@eS&QX6=hvVlu|=rl%tzFU>J3{l>hS z$S4zxG&tc=xO+yxX&v2k7t;awcDDk)JFC8=16vg2ko3Fr9&mp)n2WyNhPA@#+wKJO z&jThNxwNHD>-EqmkFk#-y#@A(@zSfpgdA(Co{T6vjH&i9vZcP-6&JC!Zsu-IT!pTls*Nya0Xu)D zdQ82rwT`G$)ha2X_%BUvR62*iRhT>5Pn2z0D8_l0ZsOI}T$e}Hi{~fe!vBh3Dg%Zj z$nSY1b9#&_NL9`-APE zPyIlply=1yhKQk-*Fs&V@8MIFQgkLlD#z+C-Tv0`*mVNqe}?oT^iyUw#q3snN$aG| zM_tl7nUxI9ep>l-erI&5gC5>Sf1k4f9U3;QM2T^gE1Yq9q$J?+J47QN?dcX34)3jw zuhG!IN{AqbF-K)iOIdM=VG z_9waa?}>8JxjwlLKkvL1)gLxHGl;{SKAxW|zg}YW94_lk*lGAZXS?>QxM1#Y`xa!& z$cq2N_)4o2pkLyLOSV{ro!#oTy71E;xYY?rT61D2^=#YEuz3%tK658nLp}i+Iroh3 zi8^+i`unSBrLU-G{cw4_;-I(NPQ#TqKE2j$N59&fgPV{3dgNdyR-v5^2ALeBVt4@n n0000000000000000Dv?++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrP=T+y?PbbGWSzubQ!%n7{KT0FKBI z$J+Zy8iJ>gf{fuMw&S+Y42Xa(xB`4k8N*1-NTN^-N;2E{;%_L{0XsUNq6Ng8&MVWc z-rIH{V=2YaMtnWc66aYv1$C*-7c!rU_CxF}a_`w30ep|4z132>W`{Bk*$gquS-TCz zi?F!RX^Zgl9WH!lqFDnADcE#k%f$HR&D$`(DR=|(jzv{%>lAbkAtU$p;s0D50ZEc1 z$&TipcqGs3_+AAp4VSQbXIZbNTl9^|0G*mQF3-fN!i~oblxCoAt;P z{51W)W-$SXEIl^$T17 zEZGMq$yw+mokq?+SPF06z8c!SVdv>st?a6&LnVqC`6D(CR9-ES-|~YCeg7WXqW^)Q z!P&)(qa|8|Rbz=mj}{+5p_P+rX!s!$pB!&cFE|T3fX@lByJ@#4##cT@rQevJCR&sU zi!|sckrcN_z-bGbEH0)4@N%~Tdv{iSi95E)$sy_Y)2jVI*u8Ln6FeJhET8YLl zHAWSrDrbpB8?Bi-fQ%0NUE*U}sAjwxkl*CFng?P1{#b|M21r004wl z$Iv0^7*`$j9+y{@x8EuCBd?`Z|CqE7S6g)X{h%9eET1n?YF_T}F|_+7=eX1=pSged zTaaYOs7SxMoaH?L?Z5BcC0qY$BvsqSwuNs?IPU@2wC1dx)Y7)U!z(^TymKe;QD?x8 zF}L*ZgL~{hw3UH5s(oTR>$}V2j6rQ5I}JTwTzuBY_I`4B3_iT~{V@h7u?n3u=w!xV sE4mi|000000000000000007wL7a&ZL>tQeH*8l(j07*qoM6N<$f@{_6UH||9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00011.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00012.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00000.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00001.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00003.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn$PAP5flUFWCS$Nym8+Mz#gjb$*do*<}BYgyG?}k_lpU(aOM0t`V zNs@dnwi@bG3LBbU*uQF9yQ1r{o4>iozcIU9D^sxEc7HskaG-vqE7(@bsdwauOD0rhaI8gH{oUwvwXkzeS8|IF*_GUfPF+E`VceKBE;d-bnC_ zw*R_5yKdr~|;4trj&>S*!^*e^WX;F@k?GoiTTu%WsPlmxf7_BuSDae+fek)ud2O zfSfJF+M%huYNtO@s^tENTI^VjZ%IA=Z(iL0ho%&YLZkQ<6lw;=ax9U0{4`5|=qr}^ ztpVQtzaWk9bMjLMZ(9vDC-0iye2t5U|23Nm7DyLZ$>DcOe9d8{+T*7^0NUM?M~5=a zdfIAQtg}-s^)DMFW`PD*9P{kArl4@KW&f5*TSmCmZykVg*BG2;{YGrZSMmLUvxG=b z9hY?5Ui4Rp){8S2dES2kd(b3Fk|arzBss(nTp8|4a!3lw00000NkvXXu0mjf)v2-? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00006.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4ebd9c14f539d5c837e89a639547c4bc07e22f GIT binary patch literal 592 zcmV-W08JtVIbiLO0#A6ce|4Pv!Xt#{F#o}45q$;WV zQA?^4Ph#TTnt3`uM<~@sn~%{xr{_=;bK;JW1gl)3)6O1-1YrAZVi1pdy2XIQXWRW7 zOzh7R!bsERtjKAGq@W(E`v$!XI-S+C`q0iLdtJixgM}N zRlnKo(i-&Arag-bJ&(OZTo)hS3K|249*@Jhve3IWNoz%v=I4^=Rzkq2R)nVQos|VY zXrxl}&(+85OhM+bAfE(hIk_XQ`FD8T2+_&7KKM|67xS8NXF0VopSz3i zZ$+%OB`0%#0K8P5NYDW^ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00010.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00012.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00013.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00000.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00001.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00002.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ec205a318554d64ee7d4371f0ab6cd9388238 GIT binary patch literal 488 zcmVP)Ji`!4$bfmI={;Ww!^^@3j6(nb006f8+SXD^sr(ybd|uCR zCGX>Bb9)a%c18aK;-2ju0KvSSd++g_U(^s|EC(#5q*Fvg`ya3G4Q-TCO8FvlEXs>F z6Llrxx0Cs{plHi)db(p%kQfFhQ54VPlz*45^xF=Y1^uQMIXnf0*C$<1CT9NfSy|ej z4R%jKnR%W5#p{Uc{EguoE;!xpZK$};-bL8YZ>Ho)Nq68K7GVGYfd6TH8)}|z){Z>I z3#!-}>PpPap<$b7maT0-MIX#o!s}kv>HpSkYwaymq}Sf>$NrY*NG*MH3Yt|prx7B* zQ?}Q!H{mfYciDBr-X01KG`-^RX{-=x<|$n&@xF7@Wi`bka?b8H1$=F8}}l0000000000 e00000u*@%GUyBC(H00Z|M#S+rS)*p5&{4K05IKS;k8BNcoAc4RsL@C zVms5kR^Px7{&P=UbbyG&7}ekn-^2OHG@l~&=~A}SD$e&@bzzJ65k7g9Nma8Gk(6&b zF>j|@T*Ac+XsPCMjQv)Bq|c}p@}{cARn~WaT1?838}3Ld@2cxR^*8de1lc40sbi`U zd&oWU(gCFuadq|RR66abv9F2%005X~>~3i1d9^%rTCwb&wsv@q?I!hB6^(bbjm{H) zdC2mjJl%3F%SH3gsN(1ch4otz)1-Y4SHs!wlkndzKHsYSsL{Q(-wdcO+^JIiG4O1& z4(O+EJoogJnTypHvmw9X8@_heNxZwP zn_Fv!O#0JQq9*;x=!2D5g;qKVnLZebcmV(a000000000000000fMMQ7jzr;J@-K`4 O0000ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00005.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00007.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1031d9e1ec602fac2563233d6ecd580b03ab78b8 GIT binary patch literal 523 zcmV+m0`&cfP)7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00010.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..003d3d48ffaac210da9e5205071934b599c0a6bb GIT binary patch literal 355 zcmV-p0i6DcP)9rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00011.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00014.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00016.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00022.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00023.png b/tests_zemu/snapshots/x-fee-bump-tx-hide-sequence/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00000.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00001.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00002.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ec205a318554d64ee7d4371f0ab6cd9388238 GIT binary patch literal 488 zcmVP)Ji`!4$bfmI={;Ww!^^@3j6(nb006f8+SXD^sr(ybd|uCR zCGX>Bb9)a%c18aK;-2ju0KvSSd++g_U(^s|EC(#5q*Fvg`ya3G4Q-TCO8FvlEXs>F z6Llrxx0Cs{plHi)db(p%kQfFhQ54VPlz*45^xF=Y1^uQMIXnf0*C$<1CT9NfSy|ej z4R%jKnR%W5#p{Uc{EguoE;!xpZK$};-bL8YZ>Ho)Nq68K7GVGYfd6TH8)}|z){Z>I z3#!-}>PpPap<$b7maT0-MIX#o!s}kv>HpSkYwaymq}Sf>$NrY*NG*MH3Yt|prx7B* zQ?}Q!H{mfYciDBr-X01KG`-^RX{-=x<|$n&@xF7@Wi`bka?b8H1$=F8}}l0000000000 e00000u*@%GUyB?Kz&DJ@6m4@dG^55GR zbpQOkZka|y#}SFm=cM=T{ygn+Nyiud=|+BQ3-{QsXaC+I|8Vkpqu{i6E-s%}+xtA8 z(W|#ig3&ZBZri^2)$R8tyLvd!?2Y@wJ;7Hk^*rzX6CqKnUa$WpKP#2%mH)?uhh}Kb zQ+%H_jcJO>(PwWiW@H{Y`K#_42hcCeGuM1O<*gp2GVyL$o$2*WyZvJ#l3&Niz50LQ zp8OXZrM<^jGyHQGRF}DR>ea_%A<_w^@BMzP=)QgHjYL+&)@d?~s-LISbMk9CG?zWU zTldx|(l(u|s$+Ir!Q+6>cZ{y^Y^n}hb$WTu%~|LE^&Y)cYHc`uwnKP`uhC8UV;-hA r<$I(mlEgk8slFlnk`)*>$RO`Cf6nXpk0GZy#X-WJu6{1-oD!M<9X7JT literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00004.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3740dc71fb04d59033c8435551ee52ea210e5f GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2#EZ-po0k?}6 zcL;ymuk!7Yvv5ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00005.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL?=YFXP&-i%opn`hDM(Pv!H)f6siDT+8gd zW`6Ys7e<#O)$@7c%4N<)FZ(ExIbUzr{Gi7*`K!6Nf3V*EeCgy0SN0|5smFWYaC>e=7}cc7&g> zjabSM)nT!_DkMtluS&9gCJO_@0p}32%3q81bcH)f4F zk~eYVe^$un}1#P3@?u~&tEHH^wNKF=d3U4i`k|{wCa4c&*`jS1O^5Y aXh_^wytr`Xiq#yyK%$EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00011.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..8f29aba58da8825776a1635b29e8195581e65b3e GIT binary patch literal 501 zcmV++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00015.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00016.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00000.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00001.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..36f530e6ec8c456c655fea1f15caf1250caf82a4 GIT binary patch literal 920 zcmV;J184k+P)JpFC0 zb={8Jh}(7V@fC@d(&B6xNO1>$Rtl47eDFFSgA5>Y+vr=r*7`h8-|mZj5YPbxaX8P8 zadE7bcl}G(C_IHYGP)L9|G?Dzy>8+)BHDE+rPkV4UQFah$Ti43EJ%EbuF1@6d8RN1 z35Z;RNH>5)QoQw3yY3mzajg}Gt})`;7`|Y}FF{3mi4_=h-v_(nSz$+b0ZULrtS7EK zuM*F1Y(96vDVrf?djhth;v{`xc?skEVoF<-v|VFgcIaB%bYjcI_?0c(|3JTexMktn zS?_?TNRlK;lCNX14F!8Il33t|66lNMk>z%{(;eF9Y8pu)mc>%Qk(g&1?G>+yh?)Yy z^J`D}^-$Hoil$~CCvtTQ6t|~{M1BeT5cQvb$o?WHI-qZYp|WOHJ;L`OIf8=na8F6FOAuM9GwF8V3S#v3>D;VtV6Q)tf;z~w$)J(554OUacdUkDxlv5VYUNNpo$@Fa0jGDg=q{!M@at{|_U>%@5)W)skW@lRaz@Av{&c8GBOYn#DJC<8}q$Ej_B)P-*FG^fN zBp)(ZR>Y#Is9z36Q0*w32f)QktqKk~R#ZJLqU8bf>6`*r!S`+NDBH79jME-1qSaPhmuJcCizvj`HQ)5;^YI2t7+Gx$x0c3R82TQmpW^7ZQ(^!SrfGq?c$V?47u|=>5 uN*saqa<75LNHlySHA#{rNs=T3_wwLDmU@{kHlTFphD3S0xSl1;{R4@VnAj##{mEU0BrXf$s9t+f1c+#UXHsE zch#xJ6o!Z)rpHA6OkRS+mpf;2{_a5!O*Xr3hVFrW{Qk3~{PCtu@x)AYq<>6*VQCG3*yp|E2aatzK06ol$ z)6)tu4dHw^=bDSG)dbC|HPI`@PMXzo(flRocn{9n*~IhtTv-}VMNjS1Bb=}VCB^rw zzr3~G^_MW7v7XEEQkP6Ph8AaN)UyfKpD(7QMM(#6X%nt&Hezqrg^P@v&u{-ketfvM zkms7x0aGFY06fmnF|?m`fD?y2ce*HCe>^u2$IYnzFzcKk4sh1Z!PWHf6vrKg+srRv zhvMbW?P64W#{QDKpm8gDrRP>^zug_6KirE;cI5(~QmoFa6F+Uj?e2g@YtGz3ZEgE2 z+`I=wpSct4A!opfKJRH?$20vG-Fe28OV_AJeQ|jl(J1Y)!*J(|n{_?5^`o2n;Nh*m zAAN8qR-rpJ8ks&=isl6X000000000000000005Tx0pkp*>z&CrTmS$707*qoM6N<$ Ef>?Kz&DJ@6m4@dG^55GR zbpQOkZka|y#}SFm=cM=T{ygn+Nyiud=|+BQ3-{QsXaC+I|8Vkpqu{i6E-s%}+xtA8 z(W|#ig3&ZBZri^2)$R8tyLvd!?2Y@wJ;7Hk^*rzX6CqKnUa$WpKP#2%mH)?uhh}Kb zQ+%H_jcJO>(PwWiW@H{Y`K#_42hcCeGuM1O<*gp2GVyL$o$2*WyZvJ#l3&Niz50LQ zp8OXZrM<^jGyHQGRF}DR>ea_%A<_w^@BMzP=)QgHjYL+&)@d?~s-LISbMk9CG?zWU zTldx|(l(u|s$+Ir!Q+6>cZ{y^Y^n}hb$WTu%~|LE^&Y)cYHc`uwnKP`uhC8UV;-hA r<$I(mlEgk8slFlnk`)*>$RO`Cf6nXpk0GZy#X-WJu6{1-oD!M<9X7JT literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00005.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3740dc71fb04d59033c8435551ee52ea210e5f GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2#EZ-po0k?}6 zcL;ymuk!7Yvv5ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL?=YFXP&-i%opn`hDM(Pv!H)f6siDT+8gd zW`6Ys7e<#O)$@7c%4N<)FZ(ExIbUzr{Gi7*`K!6Nf3V*EeCgy0SN0|5smFWYaC>e=7}cc7&g> zjabSM)nT!_DkMtluS&9gCJO_@0p}32%3q81bcH)f4F zk~eYVe^$un}1#P3@?u~&tEHH^wNKF=d3U4i`k|{wCa4c&*`jS1O^5Y aXh_^wytr`Xiq#yyK%$EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..8f29aba58da8825776a1635b29e8195581e65b3e GIT binary patch literal 501 zcmV++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00016.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00000.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00001.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..afb59c82bdf66ce527f79cc590f0c208dcfcd832 GIT binary patch literal 933 zcmV;W16urvP)RvHU!=Fsna8)5>9pN-!7wbtV}db=-5@~}_~5zkKLu%YM+b}d$3t20DW zNr#;-NDPBhD4Mr%YR^648n>(vcI^Xw<93I+-vt%4i4|ArehjYGXN4=&+u(v4@IC#P z*RQ1OC(SqAa7gABu{|5YP`F4>GMlhpAC@$yWJQgA+pudGbo!Eo@JB+pPoNJUo|5p} zSs#F1nh-(=`E|r$Xfi=~Vx_1=;3(=_l}i*>mM&y0Zqy6AunH|{p;mrk6|y-Snok?# zQ*z-6OOHCV6jY|48M>`i0=1gsl2pV-u0G?yGuNG@20+i0?eXuHcw8TJ=ggWJ6784f ztn`)@;2ioj+651Jwxlx7&Q$JqL60w0p-fmOzs+O@FDY%pN;|WmSMY|j{;q`ukt<-L zGnj4^9&qjj>emIVFJ$P-p|2^T8Y>KiU1U0is(SU`Fx@^L)5x^`Z2(i#`ZvQdcoKS{ zCkc$qF}M_M-c&Z!IS~43MeB?sVmO`t)cG$f?P~o6JGFvQDA^CA{gkb*@BoMUTt{3( zx97}*C0{&bB#i!*sh_M+lo2w$Sj?P+VVbF`uU0<;YbEWH|CVIjNis9D-plzg(S@Vf zoX*|~=x-#nM_b>nuU;r6a31Fm(Bv#2f&_B(58q2bn(L_Ow!PR}h}BEd7iIRp4KXMogb+dqAs6u<+cW_#IwKxd00000NkvXX Hu0mjfRK~si literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..34178afd8358551c6c4fc34a57629e6da9f47bbe GIT binary patch literal 614 zcmV-s0-61ZP)}9H;)NJ9{lBM_DiBn(*lhy<00000U^+h|ol7bFFZ9fH=<<3v~Xin6HCZ-8{NL1S9ebjb2_)q zadV;_A4L?jL>Q_x?R|Ci>P%Pxr4;g#PiOjQ3bhjP95g=dC~TRgxs?$r{q#s!0eYI7 z%hPj_rZAt*oYN%hh2Ye*MvRI%NLeFyke`CKPv^XyO|<80@9^F8C2 z_qMxw4dWf-UL7yhM8YxDT%iXwn{eFTlu%OA4m54T!Db`&cCB1=oP2)!C-CFLy-L29 zlmSTb1ONa4P?S%&TsPR%rbI$5*BZ2G)1SqKUc`E6`hBmz5+T-J2Ik`7Tv_Nno1~Q@ z3ai+dzhZz%W+@_u7uw3$CC2(t{uzDE$`oWa3-U>@mV@U<3q2B2kRIp4YBl_;AT^mv zOk0l-)^kZYx)pP&#)Z7ah4sj4=;=(D+ z1#XZL{b?AXM)W6xF}M?Cp*uMVGRELiba;m@<;OA4tn^HB@7|nu)bii}?dkbCylRA~ zWQ;dHmEXm@Vq7at6Z5&V`2JGFYEyDD_YXku&!;Sc3ZN;U$+{^h5ii6mB(8M_plLNc zH;>^My2LsF00000000000000000000002NbfANC#0Db6lj{pDw07*qoM6N<$g7Nhm AVgLXD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9d65b3196dba58168876c2a69cecd733e9f80d GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{!ba4!+nDh2V;HG8;9*4kR z%d8Xsd!LHC*M6C&wPD57hT`+#-DYJ%4hk$lO$j@uKi=$`@>?Kz&DJ@6m4@dG^55GR zbpQOkZka|y#}SFm=cM=T{ygn+Nyiud=|+BQ3-{QsXaC+I|8Vkpqu{i6E-s%}+xtA8 z(W|#ig3&ZBZri^2)$R8tyLvd!?2Y@wJ;7Hk^*rzX6CqKnUa$WpKP#2%mH)?uhh}Kb zQ+%H_jcJO>(PwWiW@H{Y`K#_42hcCeGuM1O<*gp2GVyL$o$2*WyZvJ#l3&Niz50LQ zp8OXZrM<^jGyHQGRF}DR>ea_%A<_w^@BMzP=)QgHjYL+&)@d?~s-LISbMk9CG?zWU zTldx|(l(u|s$+Ir!Q+6>cZ{y^Y^n}hb$WTu%~|LE^&Y)cYHc`uwnKP`uhC8UV;-hA r<$I(mlEgk8slFlnk`)*>$RO`Cf6nXpk0GZy#X-WJu6{1-oD!M<9X7JT literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3740dc71fb04d59033c8435551ee52ea210e5f GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WNba4!+nDh2#EZ-po0k?}6 zcL;ymuk!7Yvv5ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL?=YFXP&-i%opn`hDM(Pv!H)f6siDT+8gd zW`6Ys7e<#O)$@7c%4N<)FZ(ExIbUzr{Gi7*`K!6Nf3V*EeCgy0SN0|5smFWYaC>e=7}cc7&g> zjabSM)nT!_DkMtluS&9gCJO_@0p}32%3q81bcH)f4F zk~eYVe^$un}1#P3@?u~&tEHH^wNKF=d3U4i`k|{wCa4c&*`jS1O^5Y aXh_^wytr`Xiq#yyK%$EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00012.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..8f29aba58da8825776a1635b29e8195581e65b3e GIT binary patch literal 501 zcmV++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png b/tests_zemu/snapshots/x-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00000.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00001.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00002.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ec205a318554d64ee7d4371f0ab6cd9388238 GIT binary patch literal 488 zcmVP)Ji`!4$bfmI={;Ww!^^@3j6(nb006f8+SXD^sr(ybd|uCR zCGX>Bb9)a%c18aK;-2ju0KvSSd++g_U(^s|EC(#5q*Fvg`ya3G4Q-TCO8FvlEXs>F z6Llrxx0Cs{plHi)db(p%kQfFhQ54VPlz*45^xF=Y1^uQMIXnf0*C$<1CT9NfSy|ej z4R%jKnR%W5#p{Uc{EguoE;!xpZK$};-bL8YZ>Ho)Nq68K7GVGYfd6TH8)}|z){Z>I z3#!-}>PpPap<$b7maT0-MIX#o!s}kv>HpSkYwaymq}Sf>$NrY*NG*MH3Yt|prx7B* zQ?}Q!H{mfYciDBr-X01KG`-^RX{-=x<|$n&@xF7@Wi`bka?b8H1$=F8}}l0000000000 e00000u*@%GUyBC(H00Z|M#S+rS)*p5&{4K05IKS;k8BNcoAc4RsL@C zVms5kR^Px7{&P=UbbyG&7}ekn-^2OHG@l~&=~A}SD$e&@bzzJ65k7g9Nma8Gk(6&b zF>j|@T*Ac+XsPCMjQv)Bq|c}p@}{cARn~WaT1?838}3Ld@2cxR^*8de1lc40sbi`U zd&oWU(gCFuadq|RR66abv9F2%005X~>~3i1d9^%rTCwb&wsv@q?I!hB6^(bbjm{H) zdC2mjJl%3F%SH3gsN(1ch4otz)1-Y4SHs!wlkndzKHsYSsL{Q(-wdcO+^JIiG4O1& z4(O+EJoogJnTypHvmw9X8@_heNxZwP zn_Fv!O#0JQq9*;x=!2D5g;qKVnLZebcmV(a000000000000000fMMQ7jzr;J@-K`4 O0000ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00005.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00007.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00011.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..003d3d48ffaac210da9e5205071934b599c0a6bb GIT binary patch literal 355 zcmV-p0i6DcP)9rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00012.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00015.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00017.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00023.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00024.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e3760f173a82de5b7f9e5d26f9ed652496714d GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2#Am1Sc0oRKc zcL;ymzvO1Oyh~2wtgek`vfux_)FJp>bjB)4pe6`tFt~H~?(w+Zmv+@m%DY0RY1gWW zIe2N>uQ(MuZyKZ45vC1sY`d0kGM{(D(ViqU&3s`dzE1uU!vtC zMjijVYxjAy#xdlcSDx!A>+s?IhO33I(l&4%xT|`r^PP%n+P}^_TZ^?q>g|kX^z%GZ zW{&Y*6Yo6z^?U!^)PEfowy%@FvD{lU^_fH?(~DQ@I%^K!xF@>3nLi@PzUyCfK-I=l z)7!JZZE9Hc@$UBH3%4-sle+dVQ8M@i!?fjx3S^Vt*|>hu%~-ze)WO$rF8R)@x%c0? ov-()(dBvKuaojMUGB6k%7Jec)@~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-reject/00025.png b/tests_zemu/snapshots/x-fee-bump-tx-reject/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00000.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00001.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00002.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..afb59c82bdf66ce527f79cc590f0c208dcfcd832 GIT binary patch literal 933 zcmV;W16urvP)RvHU!=Fsna8)5>9pN-!7wbtV}db=-5@~}_~5zkKLu%YM+b}d$3t20DW zNr#;-NDPBhD4Mr%YR^648n>(vcI^Xw<93I+-vt%4i4|ArehjYGXN4=&+u(v4@IC#P z*RQ1OC(SqAa7gABu{|5YP`F4>GMlhpAC@$yWJQgA+pudGbo!Eo@JB+pPoNJUo|5p} zSs#F1nh-(=`E|r$Xfi=~Vx_1=;3(=_l}i*>mM&y0Zqy6AunH|{p;mrk6|y-Snok?# zQ*z-6OOHCV6jY|48M>`i0=1gsl2pV-u0G?yGuNG@20+i0?eXuHcw8TJ=ggWJ6784f ztn`)@;2ioj+651Jwxlx7&Q$JqL60w0p-fmOzs+O@FDY%pN;|WmSMY|j{;q`ukt<-L zGnj4^9&qjj>emIVFJ$P-p|2^T8Y>KiU1U0is(SU`Fx@^L)5x^`Z2(i#`ZvQdcoKS{ zCkc$qF}M_M-c&Z!IS~43MeB?sVmO`t)cG$f?P~o6JGFvQDA^CA{gkb*@BoMUTt{3( zx97}*C0{&bB#i!*sh_M+lo2w$Sj?P+VVbF`uU0<;YbEWH|CVIjNis9D-plzg(S@Vf zoX*|~=x-#nM_b>nuU;r6a31Fm(Bv#2f&_B(58q2bn(L_Ow!PR}h}BEd7iIRp4KXMogb+dqAs6u<+cW_#IwKxd00000NkvXX Hu0mjfRK~si literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00003.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..34178afd8358551c6c4fc34a57629e6da9f47bbe GIT binary patch literal 614 zcmV-s0-61ZP)}9H;)NJ9{lBM_DiBn(*lhy<00000U^+h|ol7bFFZ9fH=<<3v~Xin6HCZ-8{NL1S9ebjb2_)q zadV;_A4L?jL>Q_x?R|Ci>P%Pxr4;g#PiOjQ3bhjP95g=dC~TRgxs?$r{q#s!0eYI7 z%hPj_rZAt*oYN%hh2Ye*MvRI%NLeFyke`CKPv^XyO|<80@9^F8C2 z_qMxw4dWf-UL7yhM8YxDT%iXwn{eFTlu%OA4m54T!Db`&cCB1=oP2)!C-CFLy-L29 zlmSTb1ONa4P?S%&TsPR%rbI$5*BZ2G)1SqKUc`E6`hBmz5+T-J2Ik`7Tv_Nno1~Q@ z3ai+dzhZz%W+@_u7uw3$CC2(t{uzDE$`oWa3-U>@mV@U<3q2B2kRIp4YBl_;AT^mv zOk0l-)^kZYx)pP&#)Z7ah4sj4=;=(D+ z1#XZL{b?AXM)W6xF}M?Cp*uMVGRELiba;m@<;OA4tn^HB@7|nu)bii}?dkbCylRA~ zWQ;dHmEXm@Vq7at6Z5&V`2JGFYEyDD_YXku&!;Sc3ZN;U$+{^h5ii6mB(8M_plLNc zH;>^My2LsF00000000000000000000002NbfANC#0Db6lj{pDw07*qoM6N<$g7Nhm AVgLXD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00004.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..45b232ee0b376a3e717357408eac8d4761476839 GIT binary patch literal 420 zcmV;V0bBlwP)C(H00Z|M#S+rS)*p5&{4K05IKS;k8BNcoAc4RsL@C zVms5kR^Px7{&P=UbbyG&7}ekn-^2OHG@l~&=~A}SD$e&@bzzJ65k7g9Nma8Gk(6&b zF>j|@T*Ac+XsPCMjQv)Bq|c}p@}{cARn~WaT1?838}3Ld@2cxR^*8de1lc40sbi`U zd&oWU(gCFuadq|RR66abv9F2%005X~>~3i1d9^%rTCwb&wsv@q?I!hB6^(bbjm{H) zdC2mjJl%3F%SH3gsN(1ch4otz)1-Y4SHs!wlkndzKHsYSsL{Q(-wdcO+^JIiG4O1& z4(O+EJoogJnTypHvmw9X8@_heNxZwP zn_Fv!O#0JQq9*;x=!2D5g;qKVnLZebcmV(a000000000000000fMMQ7jzr;J@-K`4 O0000ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00006.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00008.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00012.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..003d3d48ffaac210da9e5205071934b599c0a6bb GIT binary patch literal 355 zcmV-p0i6DcP)9rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00013.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00016.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00018.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00024.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00025.png b/tests_zemu/snapshots/x-fee-bump-tx-with-muxed-fee-source/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00000.png b/tests_zemu/snapshots/x-fee-bump-tx/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00001.png b/tests_zemu/snapshots/x-fee-bump-tx/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..032576f4fae7277182fd3079f4c9ab63435fa78a GIT binary patch literal 463 zcmV;=0WkiFP)741i%y=j??2FNwYM!5Jpy8Wf3_|9fg_4HyJ%>Kp(70I=NO`YuBV@~!vYD##W5 zTXj4oW#0Q_CT_=U0unNhac+u@-5_yRwnIV)vL(ihpUMd9SJG#3e^Ce_o_x%XOiHma z58@PA+vY&NNEq&5W)qNSHlLEDu^7Zv=4PMu8`@R2AoqJ2CL6_rnXQ26QhUOS?g3KV zN#ur8Y)sT{45N9x`=iv2weK+tTw(>h84~~i?=@TvH7}mHT@RY_So!uyoOXHRT4~ybOlU#sM3s}ee-nnzYpc`^6!iePp-e(kd#YPGm=hvA9gWbQ#HwCf0;t6 z$^K%@fhBe!OPwS$2d5&v0000000000000000002MX}$|>YJX1SmdyYF002ovPDHLk FV1g9p(AWR~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00002.png b/tests_zemu/snapshots/x-fee-bump-tx/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..d72ec205a318554d64ee7d4371f0ab6cd9388238 GIT binary patch literal 488 zcmVP)Ji`!4$bfmI={;Ww!^^@3j6(nb006f8+SXD^sr(ybd|uCR zCGX>Bb9)a%c18aK;-2ju0KvSSd++g_U(^s|EC(#5q*Fvg`ya3G4Q-TCO8FvlEXs>F z6Llrxx0Cs{plHi)db(p%kQfFhQ54VPlz*45^xF=Y1^uQMIXnf0*C$<1CT9NfSy|ej z4R%jKnR%W5#p{Uc{EguoE;!xpZK$};-bL8YZ>Ho)Nq68K7GVGYfd6TH8)}|z){Z>I z3#!-}>PpPap<$b7maT0-MIX#o!s}kv>HpSkYwaymq}Sf>$NrY*NG*MH3Yt|prx7B* zQ?}Q!H{mfYciDBr-X01KG`-^RX{-=x<|$n&@xF7@Wi`bka?b8H1$=F8}}l0000000000 e00000u*@%GUyBC(H00Z|M#S+rS)*p5&{4K05IKS;k8BNcoAc4RsL@C zVms5kR^Px7{&P=UbbyG&7}ekn-^2OHG@l~&=~A}SD$e&@bzzJ65k7g9Nma8Gk(6&b zF>j|@T*Ac+XsPCMjQv)Bq|c}p@}{cARn~WaT1?838}3Ld@2cxR^*8de1lc40sbi`U zd&oWU(gCFuadq|RR66abv9F2%005X~>~3i1d9^%rTCwb&wsv@q?I!hB6^(bbjm{H) zdC2mjJl%3F%SH3gsN(1ch4otz)1-Y4SHs!wlkndzKHsYSsL{Q(-wdcO+^JIiG4O1& z4(O+EJoogJnTypHvmw9X8@_heNxZwP zn_Fv!O#0JQq9*;x=!2D5g;qKVnLZebcmV(a000000000000000fMMQ7jzr;J@-K`4 O0000ov~TF>_#Wpnr&xJb@7=oYI{CNk z5*gjq0j2Mg)-l|xejf8;kK&O(zCYhS{yDYsMIm=(w${C_?|L_#a`s6E^;PeBbJoW3 z-kM)049uDMRvnM+EPegE?Ag*#Zh;7njqOJ@Uv!+_dAxSNQKawYEJhVBLmy4wpQ&P5 zK)XLUsQEc3pWL@0eZTyCzPle%_$P`i*yO)|&v*0GrHecM=otT5qbu7zZJ*uq#_1ta zj8nyJudj|SVwv+xW9ONu@9`@czP_3DJlpL0lUDx6>paDHN?&qpxZwCnG?c4eX`WT| zwhbKSk4&$c{tGosximjbJ?ql^9;u8Zu}fDtW=iq6?g2Uh85}T(*D}7k-h_{(4kYa9 L>gTe~DWM4fc#E2k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00005.png b/tests_zemu/snapshots/x-fee-bump-tx/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00007.png b/tests_zemu/snapshots/x-fee-bump-tx/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsnQlWc%g+C=$&hr$9+Rp*fL$H1!-Ez^Z=cXO~ZYF}KM)_M} zMboYty@HUZ+7dA$1EEXAh*uJ~=oRi>95p*Yqy08}qSurjJ`?jn*-ULo(8>YtSF*EKOlro&z@*4Y(;5M=nO;;FV@VrP?kHyd|A5K@q= z2^_xZ2ZwBym^Ilo0dYvV*M4{81|cg>`{Y5fsY`U_QMX%D`y$d;Fn2c8TKIO>C!op` zLI@$>OQMD%Ih>~v%2&^bS@}>2t7*YgjnXE(LeE<2RjR7aXRBbc+-1jUwbaOvED>k! zaXHdZTv<1vb*DIGdQyt;*nPq2l+M@4CmlU z7=@lB8D!4ER`l??YUq%Z=-q3&yiH4UyXfPMmU!5mYM|CTEXLiw;^OH0gO!&%$N|uuF741i%zr#o@~OJXm5a3;e^AVwR+w*U9!P%aS=D9Zu>003O>@BJ!DDJo@M*F&Wu z`4g2=q(uos#jvGsi8fDN!(Eh8>`0_!&Q&)p&o&-EPh$Mflv~&~Uv*1RhIIX-R7-z(g0a*Tr=!}Pa-73TGyKVjJ z6pXJDD#&KcStDl+S%M;@`vz?W!On`bK6JYp^#wRfO61fO?7q_l{Zh?J25kmI2EboZ zwz;piTxZGh&wNr)>a-~~vx=%d>hvO4ryv_ALQ+nU6OYl~AY}kjA^`yWw1nHxbL4Po zPpI|r&ffe;`eKfi_Kwr9*0!GYb|1h$aoY#`Z!S_pFaL?lk3mNL6F#b*q4G~HcS<(z zj;6cI0PL!}FMVv%D~y|V8COerf4j=dv--AvYpw6`*K6mYS#bBhPnGibgDZW^6682E zsqeNE=mD4#TzzwCcjKcq?3%a)?L>I1sqwA4olNgvrqR{({>2!BnOKEpVjrG~?gan< n0000000000000000ET%1As)rYHIZ;<00000NkvXXu0mjf$*t!C literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00011.png b/tests_zemu/snapshots/x-fee-bump-tx/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..003d3d48ffaac210da9e5205071934b599c0a6bb GIT binary patch literal 355 zcmV-p0i6DcP)9rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00012.png b/tests_zemu/snapshots/x-fee-bump-tx/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00015.png b/tests_zemu/snapshots/x-fee-bump-tx/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00017.png b/tests_zemu/snapshots/x-fee-bump-tx/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00023.png b/tests_zemu/snapshots/x-fee-bump-tx/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-fee-bump-tx/00024.png b/tests_zemu/snapshots/x-fee-bump-tx/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-approve/00000.png b/tests_zemu/snapshots/x-hash-signing-approve/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-approve/00001.png b/tests_zemu/snapshots/x-hash-signing-approve/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..61e944eb510d87ce2b579484a5545281dfc5fc5e GIT binary patch literal 459 zcmV;+0W|)JP)CfIRlSPXe#5Q2?(qz$D#o4ZIfMGF%p5bG$p91TG73C10}xcv*X-hY&s%$q>G0 zKnTHI#tml$c=|{0?oRMMJAhN%r5gYM$l|%;t)8S;D*NSb*MXfc+08N&)mnbweO2i~ z2%)UO??TK`_RHvV%$oIkjCAEosE4@ihKdiL1{baAIzngN&@@NuF}`;b1^@tn zCYASs%yZb-r_0wxHYT z+xtR&s)-~Du-VqX35fzM9W@wugO$2h&%XzBZbA&qmq_Z9`2{eW5PR7fxVfmgPbtbg zp`LkQ9eApNRPF({rLq!ksCV8KP6Yq}0001v_yNuI??;B-2?GEC002ovPDHLkV1g6^ B%?1Df literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-approve/00002.png b/tests_zemu/snapshots/x-hash-signing-approve/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..efb147a70525a4721c1801da8ba4176db0d18cc5 GIT binary patch literal 895 zcmV-_1AzRAP)S@#3`CVoI${4Msh50s!a;Cxc}a@1@5`nr0=z(Q?c*SX5JCtcC29;^%GECmplCx(`{vBeI<2}_yaQR-XyzrfDE{*P%SPbw$?gPrf4fP z?N;0rK$?(+SDw#r#e6*6eNB0P{>rI92qEOZ@R2`8QpPCRuV14^+{&tc)PlTiByU+0 zQDM|t)2rrva6EGb6X!@O82jpGdr1b8XYqMCVkoa{O;`ylPoJ(?C^$aXqS{2-D_0dW+hLn zq()L}^vE?DC7^E0dFq_Yw4hfbw+dI-13$Q}*$-XvB=`tdIzcJa?NqbNOP6`ZQsP3QowVETJ!&YZ#>`uJeHbv2IEE`uh@r*=v~SM8 zB!AR&rkQaLpBA_OOhO1Dgb?ya$^IJ}>3qF~1Hz%wAe$1Sm0c4nN_n;UDB^$eOMQ|q z_u;CH?$@MHmPd_%3TyNA#FMB&+vadV*4?-X&j^ag?;V{`yg!$9 z4OS8dY~-<~Wtg&iE|;k%C$+7H&X~b9XIE*!jYgq=xIxuyF2I57%;nJ`Xt~ld{}WTR zjfP!%^aLDN&B2YJXTSjN`H@Enml`_UpW2W32#KtKu?RW;Y@J-SC4>+{2qEMVd;??Q V8g`Q7WUT-I002ovPDHLkV1iZHt0n*d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-approve/00003.png b/tests_zemu/snapshots/x-hash-signing-approve/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f6dbf945fdeb1a0de5ddd245471ff7df9335d GIT binary patch literal 478 zcmV<40U`d0P)ENb5Oic0%#tf+t17{^*`(VEwvAIq%h&QE%c4z&a7Osut9QHY;WSw96YPnW*} zL_o!A5Pefm7Gut;ffm<}XRKSyvKGyYR;>Wh+~C|lRzn}$V7NuGsmYOR$sSM^Y^t?W z_JZ!;I?}MycCX|C*xKEvf=5mt3r8lGpUrpkPrT;CEqu{eZgqZ6P&YbjJGEx?flb(X z@)5iJcsr+6h)T(atKU>UT*?5Xv;+Wvr{u@bxb5XYJU)t-hVi@5cD@Wxmg=LeQ|);7 ztlqr=^&6aXFn(f+)L@l&u07eRPZ6{F8Ty#8*8B5e+e*5Xy9~gtK78q8lU`xmss9I9 zQu;q;`R!P&t^bwlEq=as4%7>+KOw9-Px!Af=xtJvV`@_0Z6}Zea7p9ZpQ7!?vo-9x zFa_R@Z;c=z?&U0Jo&Z@H zuKyH~yW8Gc)R^rh*(!oMfUTT)0)`&^F0*OWIIDuEdBq-ZX92AA9jo&BEm!i22>|3O z35XUnKE^91;I2sOkug{$aQT*Y^)!6EB7JWXFBZ!q{C4IiVAV(nA%qZz4}4jwE~*YA zPj8X)oZBkl;NAidoksgr!;WfJQSdq1{Q&}6&OwJEbvj~^VZrT0(t>$T3&P8xz3rfb zbW4bxk+56wC%}Ckuj_J4L9G?PseT3l5nP92ln7i!BVjGNhE}2q%#1$)cjDTNm#;aM zK8a_49yOpv{WNVRhYd_3K*YG(goI0q+T6*`HNWX{1>WO^Mn zbfz1iKDM5g@?#y>g6By0^f{zxj-Fx@2k2#3qNeJpUbXDFBlS{Ft?YcPK_+^agrtae z+SL`UCf!{lT{K{K*InZED#DPYy1e&3x@E^pzBa_$s?P2Jx>k7QS_5-M!^ph^AL5b_ z<3@MsO`@A6nRHjBTPIa^ZPivCuJmj5u98thCl$x8u-31i3Zz|)0RBY^`rWiE&V)Vi z?`U^Pmci^t*q8lDLLX$hO{QD>(xGL3gL0Kr>0l|5AV_ei(kIwEA%qY@2x%EpL#@-a z^;*~&fj(*-3L|nRwhT$I#W*|Sms|Dxy8a{z)D>5CQSA}SkaMKDYfM}PZmwPseG{%D z;-wtZ!50&-Jl!GT$yjnbQ8_yC*`$3f?A&s1p=vM1d+^nAB#r7nh}^nr70fs%wIEf7 zye-!1lgX8tO(;J@5~jqJNG+oOjvf*(=anz@HeM^JN#fHG{de>oZdANn#W%|S5C=*S x5ESv2kdrfmMmYxSaFII@6G8|fgb?x~{sEv4Gl~$f%g_J-002ovPDHLkV1jakli~mX literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-approve/00005.png b/tests_zemu/snapshots/x-hash-signing-approve/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ab081997ee0fbf297fbf3848326a5dd251a6b1 GIT binary patch literal 440 zcmV;p0Z0CcP)$;>$JWaVm&nb1UvylPyL<9in7(JR`uMp_;+k-PAC^2#YGesuSxdUvWzwU6_x zt#u>iSxFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YaC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-reject/00000.png b/tests_zemu/snapshots/x-hash-signing-reject/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-reject/00001.png b/tests_zemu/snapshots/x-hash-signing-reject/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..61e944eb510d87ce2b579484a5545281dfc5fc5e GIT binary patch literal 459 zcmV;+0W|)JP)CfIRlSPXe#5Q2?(qz$D#o4ZIfMGF%p5bG$p91TG73C10}xcv*X-hY&s%$q>G0 zKnTHI#tml$c=|{0?oRMMJAhN%r5gYM$l|%;t)8S;D*NSb*MXfc+08N&)mnbweO2i~ z2%)UO??TK`_RHvV%$oIkjCAEosE4@ihKdiL1{baAIzngN&@@NuF}`;b1^@tn zCYASs%yZb-r_0wxHYT z+xtR&s)-~Du-VqX35fzM9W@wugO$2h&%XzBZbA&qmq_Z9`2{eW5PR7fxVfmgPbtbg zp`LkQ9eApNRPF({rLq!ksCV8KP6Yq}0001v_yNuI??;B-2?GEC002ovPDHLkV1g6^ B%?1Df literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-reject/00002.png b/tests_zemu/snapshots/x-hash-signing-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..efb147a70525a4721c1801da8ba4176db0d18cc5 GIT binary patch literal 895 zcmV-_1AzRAP)S@#3`CVoI${4Msh50s!a;Cxc}a@1@5`nr0=z(Q?c*SX5JCtcC29;^%GECmplCx(`{vBeI<2}_yaQR-XyzrfDE{*P%SPbw$?gPrf4fP z?N;0rK$?(+SDw#r#e6*6eNB0P{>rI92qEOZ@R2`8QpPCRuV14^+{&tc)PlTiByU+0 zQDM|t)2rrva6EGb6X!@O82jpGdr1b8XYqMCVkoa{O;`ylPoJ(?C^$aXqS{2-D_0dW+hLn zq()L}^vE?DC7^E0dFq_Yw4hfbw+dI-13$Q}*$-XvB=`tdIzcJa?NqbNOP6`ZQsP3QowVETJ!&YZ#>`uJeHbv2IEE`uh@r*=v~SM8 zB!AR&rkQaLpBA_OOhO1Dgb?ya$^IJ}>3qF~1Hz%wAe$1Sm0c4nN_n;UDB^$eOMQ|q z_u;CH?$@MHmPd_%3TyNA#FMB&+vadV*4?-X&j^ag?;V{`yg!$9 z4OS8dY~-<~Wtg&iE|;k%C$+7H&X~b9XIE*!jYgq=xIxuyF2I57%;nJ`Xt~ld{}WTR zjfP!%^aLDN&B2YJXTSjN`H@Enml`_UpW2W32#KtKu?RW;Y@J-SC4>+{2qEMVd;??Q V8g`Q7WUT-I002ovPDHLkV1iZHt0n*d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-reject/00003.png b/tests_zemu/snapshots/x-hash-signing-reject/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f6dbf945fdeb1a0de5ddd245471ff7df9335d GIT binary patch literal 478 zcmV<40U`d0P)ENb5Oic0%#tf+t17{^*`(VEwvAIq%h&QE%c4z&a7Osut9QHY;WSw96YPnW*} zL_o!A5Pefm7Gut;ffm<}XRKSyvKGyYR;>Wh+~C|lRzn}$V7NuGsmYOR$sSM^Y^t?W z_JZ!;I?}MycCX|C*xKEvf=5mt3r8lGpUrpkPrT;CEqu{eZgqZ6P&YbjJGEx?flb(X z@)5iJcsr+6h)T(atKU>UT*?5Xv;+Wvr{u@bxb5XYJU)t-hVi@5cD@Wxmg=LeQ|);7 ztlqr=^&6aXFn(f+)L@l&u07eRPZ6{F8Ty#8*8B5e+e*5Xy9~gtK78q8lU`xmss9I9 zQu;q;`R!P&t^bwlEq=as4%7>+KOw9-Px!Af=xtJvV`@_0Z6}Zea7p9ZpQ7!?vo-9x zFa_R@Z;c=z?&U0Jo&Z@H zuKyH~yW8Gc)R^rh*(!oMfUTT)0)`&^F0*OWIIDuEdBq-ZX92AA9jo&BEm!i22>|3O z35XUnKE^91;I2sOkug{$aQT*Y^)!6EB7JWXFBZ!q{C4IiVAV(nA%qZz4}4jwE~*YA zPj8X)oZBkl;NAidoksgr!;WfJQSdq1{Q&}6&OwJEbvj~^VZrT0(t>$T3&P8xz3rfb zbW4bxk+56wC%}Ckuj_J4L9G?PseT3l5nP92ln7i!BVjGNhE}2q%#1$)cjDTNm#;aM zK8a_49yOpv{WNVRhYd_3K*YG(goI0q+T6*`HNWX{1>WO^Mn zbfz1iKDM5g@?#y>g6By0^f{zxj-Fx@2k2#3qNeJpUbXDFBlS{Ft?YcPK_+^agrtae z+SL`UCf!{lT{K{K*InZED#DPYy1e&3x@E^pzBa_$s?P2Jx>k7QS_5-M!^ph^AL5b_ z<3@MsO`@A6nRHjBTPIa^ZPivCuJmj5u98thCl$x8u-31i3Zz|)0RBY^`rWiE&V)Vi z?`U^Pmci^t*q8lDLLX$hO{QD>(xGL3gL0Kr>0l|5AV_ei(kIwEA%qY@2x%EpL#@-a z^;*~&fj(*-3L|nRwhT$I#W*|Sms|Dxy8a{z)D>5CQSA}SkaMKDYfM}PZmwPseG{%D z;-wtZ!50&-Jl!GT$yjnbQ8_yC*`$3f?A&s1p=vM1d+^nAB#r7nh}^nr70fs%wIEf7 zye-!1lgX8tO(;J@5~jqJNG+oOjvf*(=anz@HeM^JN#fHG{de>oZdANn#W%|S5C=*S x5ESv2kdrfmMmYxSaFII@6G8|fgb?x~{sEv4Gl~$f%g_J-002ovPDHLkV1jakli~mX literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-reject/00005.png b/tests_zemu/snapshots/x-hash-signing-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ab081997ee0fbf297fbf3848326a5dd251a6b1 GIT binary patch literal 440 zcmV;p0Z0CcP)$;>$JWaVm&nb1UvylPyL<9in7(JR`uMp_;+k-PAC^2#YGesuSxdUvWzwU6_x zt#u>iSxFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YMjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-hash-signing-reject/00008.png b/tests_zemu/snapshots/x-hash-signing-reject/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00000.png b/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00001.png b/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00003.png b/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000t8%mH;UX7{Z>}%lfTYZ(kVZm9h7#w!x$Yn`_D`Da9wgzWQpgpdOqqeJnKXC(jVDwYsCB~pzPLt zD=oWUu1;l8q6m=plryKbzqhj-`z$_sP(08)Gl-nL$y#RwrLsc(XNPQi&FJ&}; zyW5pnYksX%zx99JZ1&Tt{<#}=BKv(|di=naK2-Dq)MGOHQWoNxa1^ODWtOsm-Ekq00000NkvXXu0mjfA)(>B literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00007.png b/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..924a0fdab5262e278ea9a8b7aa45445af3e5d6ac GIT binary patch literal 951 zcmV;o14#UdP)#q9}@@D2n2B{zQMA=XpIG z#}TDG$7SmULnP;UN@uKlGR5t>s4ah=ad?W}fd25BUDu*YjJ%S)uSNot`eEEUjwAJ~ zo9vn0Qr0tmn!Dzr6t!@rSGG~|881GvA9%)BKzCHNJnHmj=7{Y?@Kctu_2AhT`7b+5 zItikU`j-T_l&=6693_B@WOzvjl}!0+yW;n-WB{UdDl?3^hzq_P{nv8Kc`5{r^}Ech zqEKo`7I7!?Sjt1VhDhtrHp>d zmjf_=yJHbD=?vJJ+Rf(ovUcNGFq~*tM^~S>FVnJm#H!Ml8QoKl5}#7!K2vjMc;<DG*o&RC`;y&AbyxWXR!;MQgzZpoA6U%b*uN}+C}(k7?2 zI_M_sUc~xEX$L8BA<;^D+U_@MD5=KGTe%(vOaRAt#fdRQeVRDgM^8_s=%UXXUE-nI z)kv-PwitK$%8R4>2dn7p&^G|J$3)E;Yi1sTW`t<#u9~MyR@icuz0@V3_JBSHY2Sgv z-z{xjRf7LYok>re!@I@juStrcD2k#e{!`Gmp^?saH*r8XR2pO|F^cD;{X5v005ZIhbg_T>mHov=}F$> z-fO}}ja=82`a#-kde1w~=L-h^h+=&iOxxGoQ3_2j7o=Rz@s9JAnsuIMYFXK@Og2|( zv)a?#+|H9!2`jDAhmzy?Q#s+Oxh)GPSN}(}*!IZ&yae_6 zT~4m5P`Z&^VkUB*WFRg1)M!BG9Z;%-_jo8&bJB%owDhV#a##f+b%#`_g+-4%)Dad# zscON)x;jZ3r)?Qxd7xyw{{g!(Ds4SI_CMhvR59P@pDh3Y+`M=P#FVFD_3W#jj8%V0 z$`AES)IG~st=@gq>3#w63tA6!o2W&DH@~HsF^65Ap)y17gdN_@@!Gm;*(CreRnvHE zY~JhKrSx<|hco2-y2_Vv^=tJ9m)Hg(|GrkXI@@q;^z@wzz?Ix%Lu*5jo z)YP}}Qw=E#OHg9rR;lqc_+&W5cP zzMb^}sEPyt0KnHHAM5Jol2vmG9aHR5>QstxX{cQBKiXfx8-PU_XOpP|JP{6uEi$MZQ;_5G z`D3b=eyH(gtyy5FzWLo&n-uJgCxtbAE zfg-RIjKP~A3%$vplQ9Nck=;A^Hk59gt@@Vbwh6mDP+*~KLp*rp(-bl*3h0qd(lP5N>h zMpe~MdlE!ffT|V8-N;GtlvtT$(PQm9NGrjfNO$L-nK%jlGK!^*>&eiMdz zsx%TY>rnq?+!Tqgwf0eUs@f$*H2aIm7nRN_{3hhi_KABb8^t*5(jr!C)x12bUYuWu z8$V5qG{%{dPJPQ`u%^YVg4E?K)pgKXXaLykh)C_(a uMNsC*>92GS3`Sy+o2dW*000009OW+<&Qu}gpm@vx00006%X7RLGZ223d>5y~JrXZ}dBbG;F6P5ic+#^qXPHWftlZ=D~GeC^W>Rn$Wr<$adeWkfNr5a0uo8S^eDj-pIX2We)+1OxIG_Zr zTM0xT=s&z3Bpk)+Qc)$eW>+rkG(2hxRh_2@8<&zr0~v74BqRHmQAstje=+ETouCTs z1ncllbb3AChK9$%Ka1l!vs>@14lufo4uzB7cb;L%S8w>oRUpg7j$*y=FV`j1u&Zc}54EKlK&pbJkr| zX#X0}<;ad$Gpa%|_NGDt00000000000000000000004kD@CyUu8r4MX$cF#`002ov JPDHLkV1f!X5SIV| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00011.png b/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00012.png b/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00013.png b/tests_zemu/snapshots/x-op-account-merge-with-muxed-destination/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge/00000.png b/tests_zemu/snapshots/x-op-account-merge/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge/00001.png b/tests_zemu/snapshots/x-op-account-merge/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge/00003.png b/tests_zemu/snapshots/x-op-account-merge/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000t8%mH;UX7{Z>}%lfTYZ(kVZm9h7#w!x$Yn`_D`Da9wgzWQpgpdOqqeJnKXC(jVDwYsCB~pzPLt zD=oWUu1;l8q6m=plryKbzqhj-`z$_sP(08)Gl-nL$y#RwrLsc(XNPQi&FJ&}; zyW5pnYksX%zx99JZ1&Tt{<#}=BKv(|di=naK2-Dq)MGOHQWoNxa1^ODWtOsm-Ekq00000NkvXXu0mjfA)(>B literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge/00007.png b/tests_zemu/snapshots/x-op-account-merge/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..924a0fdab5262e278ea9a8b7aa45445af3e5d6ac GIT binary patch literal 951 zcmV;o14#UdP)#q9}@@D2n2B{zQMA=XpIG z#}TDG$7SmULnP;UN@uKlGR5t>s4ah=ad?W}fd25BUDu*YjJ%S)uSNot`eEEUjwAJ~ zo9vn0Qr0tmn!Dzr6t!@rSGG~|881GvA9%)BKzCHNJnHmj=7{Y?@Kctu_2AhT`7b+5 zItikU`j-T_l&=6693_B@WOzvjl}!0+yW;n-WB{UdDl?3^hzq_P{nv8Kc`5{r^}Ech zqEKo`7I7!?Sjt1VhDhtrHp>d zmjf_=yJHbD=?vJJ+Rf(ovUcNGFq~*tM^~S>FVnJm#H!Ml8QoKl5}#7!K2vjMc;<DG*o&RC`;y&AbyxWXR!;MQgzZpoA6U%b*uN}+C}(k7?2 zI_M_sUc~xEX$L8BA<;^D+U_@MD5=KGTe%(vOaRAt#fdRQeVRDgM^8_s=%UXXUE-nI z)kv-PwitK$%8R4>2dn7p&^G|J$3)E;Yi1sTW`t<#u9~MyR@icuz0@V3_JBSHY2Sgv z-z{xjRf7LYok>re!@I@juStrcD2k#e{!`Gmp^?saH*r8XR2pO|F^cD;{X5v005ZIhbg_T>mHov=}F$> z-fO}}ja=82`a#-kde1w~=L-h^h+=&iOxxGoQ3_2j7o=Rz@s9JAnsuIMYFXK@Og2|( zv)a?#+|H9!2`jDAhmzy?Q#s+Oxh)GPSN}(}*!IZ&yae_6 zT~4m5P`Z&^VkUB*WFRg1)M!BG9Z;%-_jo8&bJB%owDhV#a##f+b%#`_g+-4%)Dad# zscON)x;jZ3r)?Qxd7xyw{{g!(Ds4SI_CMhvR59P@pDh3Y+`M=P#FVFD_3W#jj8%V0 z$`AES)IG~st=@gq>3#w63tA6!o2W&DH@~HsF^65Ap)y17gdN_@@!Gm;*(CreRnvHE zY~JhKrSx<|hco2-y2_Vv^=tJ9m)Hg(|GrkXI@@q;^z@wzz?Ix%Lu*5jo z)YP}}Qw=E#OHg9rR;lqP)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge/00011.png b/tests_zemu/snapshots/x-op-account-merge/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge/00012.png b/tests_zemu/snapshots/x-op-account-merge/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-account-merge/00013.png b/tests_zemu/snapshots/x-op-account-merge/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00000.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00001.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00003.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000O&azJ#%vl)xR`0GqdRyRUrjQy?`U(egF4P z##uabn?41pRa|-r(~>M1sx=*k{^ZEx4!ysfc)6fd!yPw_vY)VO{sT)-$GE4D@knslsMLnQc3SBh_SoG3MY&oI+2!NHTNaiu3{i000000000000000003@&0Tr{Ee;cNK Q4gdfE07*qoM6N<$f+cO*XaE2J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00007.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00009.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d7877240e5e78a0435d47f0d9efdc7ba441e712e GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t1ba4!+nDh2#EMK#NfLq|L z67@Iro^O`&tF`dhE4^x;QGIXAwTY54yjJW$O($xn9CYG1XZe1w!l`BI)1Ix$s@vpY zsIS=adGXrR+&nY(7hC~T&R=`<$JF|A)Gp=AcVyR#ro#ixn|zt5=QUD28?qj{oQMc2X3VDh8fSE9lT zb6%f{=n|Xq?f#y%+kc<`8S^B4h3PuY{=B2v8UF2s?sA9H(l_>hm$@U)4Rqx7N$cAB z471AKW}&ZZ@vQU z<#n5D7{k)zo%MevRPQ{;dhYrDws%Xuv!37be6`xlH>X8{e7_xCanPq^;mop0KD>FZ hRg6HpkU+!jKaA6!J+(~Fh&=@o_H^}gS?83{1OT}7t_lDE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00010.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..7a54b4da312b1dab38be6102a3bdf6009c0ca0fd GIT binary patch literal 741 zcmV>sR<}`W-I2D;x1+4qr0cruW_UF{y9iY-|&3+W&hE{HuNKsT~<5h*0-?Ft@ zvGu9fx{95za8Zh}>SyyVMJ|Y{tBj89%#Ln+$Hn(JV4Pb9VB2iz2 zy&Zf6%=aLf;Cz)ZyDZO3%e%eFSDR}Z?kHA<=KX*Ul^#Sdm?#g)!TN zjDc9oT*}YN%FURz=OHPUKKi!C8zc?H{tg*OfXYKNgL-5rauB3*K<~WiLk3b$k@k{< zPms<5B|+vgGAozS0c-2+n{vzny)B@6-n5LIv3%B(tpS<8Bmj>P5r`oV3IG5AfPDN1 X^2~5iTF)UO00000NkvXXu0mjf0#jI9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00011.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00012.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00013.png b/tests_zemu/snapshots/x-op-allow-trust-authorize-to-maintain-liabilities/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize/00000.png b/tests_zemu/snapshots/x-op-allow-trust-authorize/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize/00001.png b/tests_zemu/snapshots/x-op-allow-trust-authorize/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize/00003.png b/tests_zemu/snapshots/x-op-allow-trust-authorize/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000O&azJ#%vl)xR`0GqdRyRUrjQy?`U(egF4P z##uabn?41pRa|-r(~>M1sx=*k{^ZEx4!ysfc)6fd!yPw_vY)VO{sT)-$GE4D@knslsMLnQc3SBh_SoG3MY&oI+2!NHTNaiu3{i000000000000000003@&0Tr{Ee;cNK Q4gdfE07*qoM6N<$f+cO*XaE2J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize/00007.png b/tests_zemu/snapshots/x-op-allow-trust-authorize/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize/00009.png b/tests_zemu/snapshots/x-op-allow-trust-authorize/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d7877240e5e78a0435d47f0d9efdc7ba441e712e GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t1ba4!+nDh2#EMK#NfLq|L z67@Iro^O`&tF`dhE4^x;QGIXAwTY54yjJW$O($xn9CYG1XZe1w!l`BI)1Ix$s@vpY zsIS=adGXrR+&nY(7hC~T&R=`<$JF|A)Gp=AcVyR#ro#ixn|zt5=QUD28?qj{oQMc2X3VDh8fSE9lT zb6%f{=n|Xq?f#y%+kc<`8S^B4h3PuY{=B2v8UF2s?sA9H(l_>hm$@U)4Rqx7N$cAB z471AKW}&ZZ@vQU z<#n5D7{k)zo%MevRPQ{;dhYrDws%Xuv!37be6`xlH>X8{e7_xCanPq^;mop0KD>FZ hRg6HpkU+!jKaA6!J+(~Fh&=@o_H^}gS?83{1OT}7t_lDE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize/00010.png b/tests_zemu/snapshots/x-op-allow-trust-authorize/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..e02cf4d265c37fd10bbfdc5250e66d6fd5d3d0a3 GIT binary patch literal 496 zcmVD_bv*%{+7XYOb31+`b#;Qx=b!Ph^1481%s53~I^dR@RfXMOG+ zX72>ZLOYM_=eno%fWdm}vURJPRRjzAAQQ~~0Pv9HbK1TKs81!4nqSJEM&ALB3#2{) zJ+G*7na)eo4~v7}J{McqtJ;e8{Ppqyx`WKHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize/00012.png b/tests_zemu/snapshots/x-op-allow-trust-authorize/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-authorize/00013.png b/tests_zemu/snapshots/x-op-allow-trust-authorize/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00000.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00001.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00003.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000O&azJ#%vl)xR`0GqdRyRUrjQy?`U(egF4P z##uabn?41pRa|-r(~>M1sx=*k{^ZEx4!ysfc)6fd!yPw_vY)VO{sT)-$GE4D@knslsMLnQc3SBh_SoG3MY&oI+2!NHTNaiu3{i000000000000000003@&0Tr{Ee;cNK Q4gdfE07*qoM6N<$f+cO*XaE2J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00007.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00009.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..d7877240e5e78a0435d47f0d9efdc7ba441e712e GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t1ba4!+nDh2#EMK#NfLq|L z67@Iro^O`&tF`dhE4^x;QGIXAwTY54yjJW$O($xn9CYG1XZe1w!l`BI)1Ix$s@vpY zsIS=adGXrR+&nY(7hC~T&R=`<$JF|A)Gp=AcVyR#ro#ixn|zt5=QUD28?qj{oQMc2X3VDh8fSE9lT zb6%f{=n|Xq?f#y%+kc<`8S^B4h3PuY{=B2v8UF2s?sA9H(l_>hm$@U)4Rqx7N$cAB z471AKW}&ZZ@vQU z<#n5D7{k)zo%MevRPQ{;dhYrDws%Xuv!37be6`xlH>X8{e7_xCanPq^;mop0KD>FZ hRg6HpkU+!jKaA6!J+(~Fh&=@o_H^}gS?83{1OT}7t_lDE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00010.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..e133cbef71279588f2ae1175e44f2ad6e0f98003 GIT binary patch literal 515 zcmV+e0{s1nP)_jA;k5&ZN_mMk_{+f6`DAK?g~rH3RBoRc!Da=R3gY>JS|vO>4ED z7w61wj2-F#=LtC0?tY7VdvPhug)Q<)L20r!GG;&By=I5AaoM-KW|?!5+a3_i&S%d> zvbdUCMdxx$6OM#UuQIe6?B-1bgoA9*z2?C44!{KGU&5cQ_B;vz|CG-jkUeF}+gkb1 z+hXQ5>ee!K?RcklYGjv$SM33{gCPCrmc2F(dFI~Mez?}I)%pFNHq6=n7+O54e68j| zy1VVi(fb^jSA8Dt?!*M#H$gFF>yL)QrU84Z*aNCta^P-w><)M&FWG+#JhG`CI*QOc zLG~BQNw3?OvF@>RK z^bcbWo literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00011.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00012.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00013.png b/tests_zemu/snapshots/x-op-allow-trust-deauthorize/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00000.png b/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00001.png b/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00003.png b/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000yF9I*o8R?cL0M8&1fL5FPGb1 zQk2tgyD-7J37{wgbhVrpgyd>2YmUoPP)E!jDQ<5|?C6K9iY`PapfA;as1P%zVy`%~ zlpo*QrDBe~UD$=);~N+QUeJYgDF}#Q0zTAbFaQA9mXI1ct%KSxt41-Wh`LL44i#7P zEB{ZWM2cX`cHAg^WqD=AD|=B59W50zu|$vaU;YUBq7i7}#D_y#@8Zo!X~6g%veRlWbxg2WD!2)gu8FNs|IJ^n(hAItI=j+6$%R?}3psamXEypgP{3gsaqJ9YL zm-x}(7%n&y_Z_{uqSvxZUrIdd5Eaew^VQ0AX_>cXw<4%l>`akA8TmV)A}=c)*5wLX zq8oSv$hwi_Pr#b@57|%p!+#V(y+PhOoaQ0#1z99(qpbZlvkY#EPQF5p7Nev}y50@1 zW;xmiMbKM^000000000000000000000002kkUt!!iw9k952647002ovPDHLkV1fjk BH#h(Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00007.png b/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7f2d8e831d78662cb2d477d75f46624018282b GIT binary patch literal 930 zcmV;T16}-yP)3`Lz(ZqoNZ5_ieM2}Nn*3j{c6y;T|`BnDyp?Oa!qBuSDaNs?^m!&SSKQvZIv zUeUn>a7RdDYYW>h@S3%LTh7}Q8>|(Gxy>h7ul0I^8$OWQ1u`GJgjc97T>8{%R-7+1 zWC?9GX^VoCi}_^RB8Gv8ZN_c`jtt=L#UPADA%@%L6SAP%M65r>oo4{j&RDK%xh3M5 zfbLo=rF1jeu(ECMv8W}juN7-wqkE6>;>&>8eCM|{m+eFDMw3H3F+=`K`EWgy6h;6OI$m}r!=fZ09*}tnxyt|6+Uy2nw{I6}I)@>CASEK_kD;x?^B3EnWXA*$5$(8oV{=E? zoi=1r$>X{R`aS@BydK;2$QFDx^TaO=IMNy!29#S6fdriZFp)Kvl<>R}p&7s<5Y5Dc;3U-@>2}mW1m2Cs4Umk9nDm{FJo&V+4!qYP zr!J48A^&MN zZm7IkA!)p@&-Yp{<7a3@|1*-tHWv-O9uZ*`^yvDD#9%nBoK!=@A2RJH$0w*4oP`s> z_k`Hf^l&8Lr7^tH@6^}P6-1fvemezvh zllOr6Y!Eknehh1c)u-JF#@`1FymD!+Ui!zT^B!YgLuwoBj_q#$Ju{yKf7pLwIdw)# zk|arzGxYyco-2stLB^I9ZP8TJFS{bB_9~nQz{N|g3j=bjsCpuztQ%47Lu5;SwJR># zt#vDRYua7t>Z!aDq*;R)DPov`54P43^;ES=iYWR=lLwVf7j_rMp6v&0TNa9O+NDXf z-irIOSH0Muh^xf7Dt_4*OVX&Xc?4@}con27XNj)C)}RR>s{>yw;i4Egro1NDh1h@* zf?vqE7M(aEwg^fb8RIp)2ZE7kjIGopNs=T+wJS zQsSJ;c?-HLWL0Hl>9aAB#KB31-bxE1DwK05o&W zd#_itK1v@OJRT+KS}Ss2no-P>nobuT6)?BnQ*(PKbP3~@C|C>|^oA(_mNkm*&>fTx zv5c*4Voloy$(ERFhV>dMPoAzrI6T_VQl;dZhw#WXR9DuG$p$XZjN+#M?M!*8u1WfC zK|jx|wB7Nk^ph0;0PrX}x}hV~u4~zq?zB9cTy{Pz9VC5~FUHutsC5^5<>QiVeU9Vu zYiQcxxevjrJ-L6r9lewlQIVh7cVKq_a< z7OjYTo&g>0RR91000000000000000000000G9CqphLO4wz9%~00000NkvXX Hu0mjfq0s7d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00009.png b/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00010.png b/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00011.png b/tests_zemu/snapshots/x-op-begin-sponsoring-future-reserves/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-bump-sequence/00000.png b/tests_zemu/snapshots/x-op-bump-sequence/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-bump-sequence/00001.png b/tests_zemu/snapshots/x-op-bump-sequence/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-bump-sequence/00003.png b/tests_zemu/snapshots/x-op-bump-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8Ji{;u3&O*K_@1v6V<3{jHmP#}006+_er&rBA*6qL?^k!R zsF!ZP)&p>EaYVfLvHkS(CjP7kP;gzd-uw9BDojh_bsdkUEwn^AYr)DEGawDLUM)?A ztk53HEVUnvcCIZFFg*}@Q}U=`4z@_Zn|)^j^tDJHHM|XMk$~a~aJSHZ+D=ir=hT>UngG}@vQwTNDe;7Hi z#42Q|5@d3)lnk%&|Avmx_c-yKqi5}_cSAA3(U-qt24KkPm%n2Mm?HrI0000000000 d007`S{R7cxuy>aItYiQH002ovPDHLkV1oFv=E48~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-bump-sequence/00008.png b/tests_zemu/snapshots/x-op-bump-sequence/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-bump-sequence/00009.png b/tests_zemu/snapshots/x-op-bump-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-bump-sequence/00010.png b/tests_zemu/snapshots/x-op-bump-sequence/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00000.png b/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00001.png b/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00003.png b/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s>M{9=G(W zUBch?t9-x2ey$*+L13y&_WRmT>`YI%1wMWS>0;n`{x+rj_O_zAL0bNwN*PMoU*+BD z&F5cyaNoO40j1X;?%-Guz_ht6;IE3kkEW*Tag0#5*Y1cIHhg*b zwff1;V6Rfa2g(zpbW*csmv+ldR;Xg*=y`YH^*hs~kI6T*s+KY=?#y2k6!BVZ5EI=Us1u@@8nyMDKhtzo4TWX5dOvP>b*S@T z@uO3=4);TD*M=UHc<=S~aAQr8&*~$VXY;F-FI{-~T6DJ8tQ+54wp{X6o%-ZP z-Rdv#BGs?gKd$^U^ZbRA{gw~*+RKJN{+n>&fmho)w`K-4KR4#^0)0@-po0c!`%Hy{ UP3yOJZ3ansy85}Sb4q9e0H}uX1^@s6 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00007.png b/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..25afd4f291d923322c2ecc3092eca37134a0fe7d GIT binary patch literal 494 zcmV{ALtsDZXMc=1Z69v?LA%|H*xOu~jB~C>BRAR5gt!zA@6Y$l=vfnR_O9<7L7n?8W`m1u z6`RnPL?~zLog1A|BAiY@_EG5{eJ7)OXXGAL=Z@OrhEVYg7(V({Z9SDdh8~ydR$`nQ zvn9pq;;E4RHG4w!9E+HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00009.png b/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00010.png b/tests_zemu/snapshots/x-op-change-trust-add-trust-line/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00000.png b/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00001.png b/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00003.png b/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*rFo}91VB< z@+bY4Ke_wMLCJQeO=^PXZ)@&Pe$DUbaBTueI|IYE&r#azuHCwQyl{$DC2B zLD{+0?|RiYxXfH4TdP0a;*eZl)ayc-wfoJxID)QTPCpfBxnvsqtQ*fywTa%S*OGnr zd8=1|&-Lis^*5c&-Uw}f+ZT2F=&wCXPrupqbzbO_ISl3@r@w5wJM)_J^j7n1y(2q+gq*Q>vcbx_ZmxBs0;+NhuO})t3vK%heX8PJLvzlh0yl#_d0U zg>4@nbzjmKx5*m#{_t+G}_g?>Ri&H$}e|*mKgq8XZhw0ZV4zh>c(w4jD_NVK^d_IV0ZDnf`njxgN@xNAUPbkR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00007.png b/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00008.png b/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00009.png b/tests_zemu/snapshots/x-op-change-trust-remove-trust-line/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00000.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V_}@1nyBJPvpL z@(=y(f3myeA?IQ*1rCKrOWv=QNouiEV6o!^YGP=3Tf=(N_PnwE@+n29zwTjN*%0zL z?~e<|-8Zk5xEIT1`FSwNd^$3PZ<20!ve(JV&6)=#ZN2sEA{u|D2T1I@-j%(G$AiCb z|FrmdMY~pW#&J(t`dn5sxKCmuN7;G?*X7oK_MPW?`SI~KonNOIu87s8Pd^i7zH*DO zZ1Y{s4569qk79(Uez+|Co(^lR zT%h{HrzN$gWwxy6vmWu3Ul!8#Tl?_Bs#_&>ckb+X(zm32 zW%CT1mE!gcE4clZch~stbP%(dTh6?7-?okIxAv|vbhJ5Dm;ST!%&s6+|JmN@B^Ax06W$;C zHmB~XxzcL4x6ci#Sbvn=ntSc~vA~U)2R_)P*{5HVdfRbL+n7z4U7R$* zEo8O1?wR%#w>F*fV7jm*;hYoqb*tBt*Zou7Xvi@CgANNHuexw^K!H9eYS4j$#Quws Vmlwp$XITl7@^tlcS?83{1OT11+T@3$zL>FI_?9HNa|K+8|JM)0;lZ=+g^V)s(vNAFieg3!j%2PXdC|*+c z7|$9HUIx|@x&26&b!S1vg8|j`_IxLr8r5h6jOQ+IhN+GhY&nzMtM{pBM;ky+l=FIu znyHT;GL`EYD^Qn>j-w5#pAPmurO-MMYXoB7R5i01!tN%H|i14JE+@JCbtu^ ziduEW*;$2W&q8XhZ;7)j@*DCV^?N|DtoLogs?gSKF9rYrz+|1r(DSv({i@D?!O5@oCe?V0{i&t$+P{#`HnXH| zKTCoL%wTf^Zh3sAn+ynQ2$BaXGZA0hShM?Ut^M7Jjg@c0Zn8{<;almQJKVwBGNRS1 zVxP}@IrcjdG3ct^1Q;$PzSR zOxcaGyVq3^C(ntMdqBLY+I=<9INpQXy9e^kNuZCR?fu`FgM8~4diiu)TX0OYEm2Q# zkCMURxczI;es$R+{&~KCpE0fmdCr*+$qhBppNu|OsTykfV1kPv(+5KlUH||900000 i0000000000V3;3F3!d~1omc1p0000pI9^fuS2hfS<9tciWh(XnXyG@M}pnyZM;Bj9N&NBS_o>^`)c}%toN#w3}&C% z{ou)Y{ALtsDZXMc=1Z69v?LA%|H*xOu~jB~C>BRAR5gt!zA@6Y$l=vfnR_O9<7L7n?8W`m1u z6`RnPL?~zLog1A|BAiY@_EG5{eJ7)OXXGAL=Z@OrhEVYg7(V({Z9SDdh8~ydR$`nQ zvn9pq;;E4RHG4w!9E+HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00012.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00000.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00002teJkoAmxi@-F)@F$5^>6q;^(@5@?6K&47s0{{R30C=2_TyeekSw4;&#;@L_kJA5sGo%<7OAS4E#+JJN_7u3vE#~u6*wQ2 z4*Ps&35uC|EAxggWWjcE%kEq2yI7w~rp&3^tjVHe2e?bM-8S28X=i9z_~4Eo)7QJD zWCF&XwJs~QBv-f!J9U~r5rP)9w_Ri?kPEZUHR;jDrD_6HIG&I9&l2v3H*UFeP*KZV zN>g+Hp3@xw006+hz`dRB3uzm-*)I60Cc$toJ!sacwLG=5S?+4sG4@A&w^9-E@^Y5! zR4vcC$Y#m~>V9-ThhzKN$~(A8+2$p?l=8_J>0q6@D>1IzdF!gQql}dq?5(rMwLtn% zI=YVe4M+T@3$zL>FI_?9HNa|K+8|JM)0;lZ=+g^V)s(vNAFieg3!j%2PXdC|*+c z7|$9HUIx|@x&26&b!S1vg8|j`_IxLr8r5h6jOQ+IhN+GhY&nzMtM{pBM;ky+l=FIu znyHT;GL`EYD^Qn>j-w5#pAPmurO-MMYXoB7R5i01!tN%H|i14JE+@JCbtu^ ziduEW*;$2W&q8XhZ;7)j@*DCV^?N|DtoLogs?gSKF9rYrz+|1r(DSv({i@D?!O5@oCe?V0{i&t$+P{#`HnXH| zKTCoL%wTf^Zh3sAn+ynQ2$BaXGZA0hShM?Ut^M7Jjg@c0Zn8{<;almQJKVwBGNRS1 zVxP}@IrcjdG3ct^1Q;$PzSR zOxcaGyVq3^C(ntMdqBLY+I=<9INpQXy9e^kNuZCR?fu`FgM8~4diiu)TX0OYEm2Q# zkCMURxczI;es$R+{&~KCpE0fmdCr*+$qhBppNu|OsTykfV1kPv(+5KlUH||900000 i0000000000V3;3F3!d~1omc1p0000pI9^fuS2hfS<9tciWh(XnXyG@M}pnyZM;Bj9N&NBS_o>^`)c}%toN#w3}&C% z{ou)YHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00011.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png b/tests_zemu/snapshots/x-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-claim-claimable-balance/00000.png b/tests_zemu/snapshots/x-op-claim-claimable-balance/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-claim-claimable-balance/00001.png b/tests_zemu/snapshots/x-op-claim-claimable-balance/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-claim-claimable-balance/00003.png b/tests_zemu/snapshots/x-op-claim-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000b@?P)+3`2#G`3aNsy;XvR011RGI1T^+004mHe2uFJA*6rL^BmV% z*=S!|qQl*KwjhL%jz|3UYiL7-ef;>TF0G8T{3;9~oaY%QwJMO-O@)Qdv?Nt!&v8|o z=!rdqZoWq<*C6^A$EI2~RuKYGNi0`&3O$z(>N|PW&4XLz5c+Uj0Rmx~TtJ;)O=@F_ zQ%t`dLI>*{kYX69G@Tc8sj0bHK6Vd55jA>DQF~ibkNtAxF@#YE#HkuzD%6N+$Quf4 z%8$Rx#ly#~L)eAg`RLwGm+Mn%7Op=n>jt(#cu zcIU1CDQ2c3ZW9ctSj^anM@IhAL%*8Wv~#GH8P?TQuG~C&s2MJ!qPKoqz9#xLu_zhm z{XIE1;ybmavMw9yo#5=&-&%2QcS9$l9)GK1d*xvUc;;S^LErVP z_hmZ=9U(S05RLe{F zb9BzTUO*ZHvF0j%$$4$(Jp#m5@~x?E8w>Wr&h*XxHM(2T zCNIRkS-Nd3SjJSFPU4GR{d(Ef;@!|G%7)Kjc)(z6qTFW{^%}C2Z9QfH%I(kgmQ|k< zmar=FO!uZdW&lJ!JDq1*8J2za034_HO0#NZ&u6r8lD%B^@dI#`asioLPtKIBAIi5Y zW>x$0BZ>0F(O9s0p(o*JuD!iP53g0)@c1mLAFi8ZvhPMnHQ9H@7_7u9w9+8SjKQro zO|P=EIJGeu3wq7?N8hq;Kb0kD zSo0FQ%mC4Bf{feFFVuXWeFwmv%`=rR_a?s$eXd<*fbx*bezqE~x8gr{0000000000 e0001hH}ebmj64JzTigTy0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-claim-claimable-balance/00009.png b/tests_zemu/snapshots/x-op-claim-claimable-balance/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-claim-claimable-balance/00010.png b/tests_zemu/snapshots/x-op-claim-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-claimable-balance/00000.png b/tests_zemu/snapshots/x-op-clawback-claimable-balance/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-claimable-balance/00001.png b/tests_zemu/snapshots/x-op-clawback-claimable-balance/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-claimable-balance/00003.png b/tests_zemu/snapshots/x-op-clawback-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000P7R;wZi@000000055jH7}8Ku0N)f z<~5Czj?G039@Ys#&beL>`M7VQfP!QE?2~StjJo}9%sHo&%BB`O)MM+;M6+(GrSv^6 zsu4@{B@FXDGuQ&LudGeN<&rHe zn{s-02?Lx9K#k&{)^`7@^F>d}BqeWq?(z!O{uN|_o8aiLX>?)AtcEC38K(B4S zU&7vkZE@DH<65$lw#9*-0L4xB%9Sq}mkV0ou6)MUbo*@62P(644esp1mu{kW(R4Dr ze+*0GB zm#*9hH+Q=kpn3a@XqJfXIBI;}wIfm88dpYLh4oYwNDDe%zuKI^?um7NRTT{ER-@AK zyr^kNb#}~t1E`~^w1;}yG-eO=Yn*cZbZZ|?hXOXzHzT9=%mSz1pc-0NS#swF>fT+A zo6yA91|UuYG;{9!+LHOkZV*{fZ+#AAGyDin15C~a&*8Db2d5yp2FQLSZFcSV7hpxb zB6ck`ZcjHJ0k3g%5hjEXLJ0XxhJPuKzuh*j4CyeEr zOV>&7maA}#inWI4##_%Gky_nDHL8Z5f8eJlS=`ppoBrs^qD|Q>v9{;!&Qld4TB%*e z9RZ;1ZhKSh)e%szAH)s5XM^NKlJ-maZBB1lt&+|NZMgqB17J=fpC+aVTdFo0kp8!- zuZ<>GUAM#DV!Zd)(Ya#nEz+;w0InXHwLrN&4zCCiYjK(kAkHa;5<&+DMJJZ8Ohjb-diP%ewIKukZl7100013&X-3yrBr_1_g$A% z1VSjiSYk^lpB%3x%E$2ghdz3{q4`ko>WYnHjWJxM zX*gHC?olj0WlIPlxCQCW)FNQvif&*D=8D1xw4jTqv%Fxp7cQC}W5WpB0}k@k?oF1V zKu=gK9is)ISX&m4kmdCTC={Rk9{600C0t&&DLpm*t*JJvg1~t)DXSp=Zsa+lxVQQ5R$QAPQke5!q{bDtAh;9xu;F zn<%H4L*1tMBB|OmPkChcCkR>Z^ZnR6*}9CJi50a3t(w*%^k+R z?UY!yN~a4&*Z625mh-q~d3{g+K)OjL`^#vgn(Qxz8r%t8=uQSnrUsWndI4T>{X6=0 zJU`9A%T*U3YkA^Xke#HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-claimable-balance/00010.png b/tests_zemu/snapshots/x-op-clawback-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-claimable-balance/00011.png b/tests_zemu/snapshots/x-op-clawback-claimable-balance/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00000.png b/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00001.png b/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00003.png b/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000Q31IlGsZ>7+KUfKp+NG-SaV;L13OC33FWl006*pU-KbijQP(H!hFom zO2_I_4IYkjgcxJqANA9(q5}ht`SA;VcV*=1DKW+vLXbsmX2{FtnN`d@B@b0!<7PC~ zl6n`0ea{r`q1q>XGe=g6s0JL{QU6`E!S*r3-VeXif{FQ(` z>DS-O#bb`2cHtDKx35q(ctID|Z9yvIVsppk{4afeOQFqs}#=GhkXbkTO&&B`V z?I1Jy%NRq==r6_`?8Gj#Q)7^s16K?$0000000000000000002s<`3`I$*Z^HeL#9gwWno`h!0ApzPe=D0o2qXr}ga7~l0002M?fi6=PAQe=7-LDv z&jZX?ItF>Fv-hbbg!ag#270}oJNNMn%MJ0d!`j>E=|$o({zt#XcFuKDJ5!1 zu69#%gI`Y}C-F^?hP%MWtJ0Orp|wgDP1mT}5+ygA4sRQXl6jX6`J7cVK+9^5m$+y& zJEOT-em?bTz-q30m+v%-MdF#xde$+)4xj83Om!o8dEjl`V5~< zIt);{nlW;Fl@NC`@f@kO9!#fpYS`5Uu1`}#0000008r?QhOWbi=kP2~ik3AHu6aIr zQ0#+z*Mq0}AuRtA_VCS~cx5o|KuTy&44|H1_=g*S#zFIgxEXBZh$ZNofdLL<aye?(>_xnk+)-;N$yz8nD4mK42AkFdwrIKN3E? zQ_;}$|GE-=tv>g~KkQs5;#=`S}^`vEtoJ2Vsc;^1$8T zytD}#@1#4B$BNp8)anLtS>pI@;^CeyT!L=!DZVidTfG{@+vddnJ;2^n`Mzr4^mn8B zupV zXS&9j6;MjiCY>=cYoXY8B-@OwFz$CXXI2338m;AtNtxddw8EX7Spg4WbGjFK)&OWL zW1anU7g3%y0555aGH@YBOm6i<`#I_t{6X&RM=ZQM^8=6-2><{9FbdxfknLIvsUsE| zrpQm8uU+q5`&|DpV%DxQ9Eo)}<5C3Ccv}&M7up!|&Mm#!2dG*>6N{XYXukY~19cv8 z5Nid_|7d>(YXI7~{nL51sSVr_c8AR~s0&k&;qv|v6%q=2m{k*tmIVBcj8ry;Q!?r5 z+noU*k4mDEO`5W&*b|n~d~#cL4;YAyUy}Re(i0L{DCz5lLsvj(>ry|b_Ynyrt0NNc z#$o~_eZm)grxlOgDy+ue@cAxMExc#%+gp^enjTY*BCryS!AX#XPSWXQjKNZP_jcY5 zZMRK)ldhGEJ5;`J)2f9$YCF8Hg2s)A?zBQt@8c)U=-HEEXsxyk>$zOhZ$lp2Lb2TM zG4$0FgW2Pr9m}ab5&!@IaEAUr<+*}L4l=f^Xp5$ze%Td4wddeG04`o? zO&E}4Mb*@t8F@{7?CTx3$)hb*fq=MHKyw z$%9H~2)hYmXZwL`TNa9O+E0^ctrhcfRK3{05Es6h=xK~GC5`%;M`ulqsDf1GEYY>o znri^a?C?*PbWzONr@W@K3Aq7#NPZv_nsj21*di!#Wc1f?4s=GMF*Z{H000000NBbm X6Q$*OyU>O*00000NkvXXu0mjf3`CBO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00009.png b/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..110b0c580a64c99e2f20c5ba981cccc79d3022be GIT binary patch literal 547 zcmV+;0^I$HP)BlR$zQLI3~&000=y*T~LdjQQ=hZO!%X zI`_UrFG-$+x=pTO4BsO=OKfl2s?EJ?S~(v;p^a|em7kHFY0`{4Gb{Ht-qgujD|W*g>#d^jT{iH{mF$F#YMU{H=u(VpvLAnf^-m$L4_!s;pl2v< zy`w5%9Cnl%OgtMp?P%ipuN7gVg0S3Cc-vQhW9Ls#jJ+lII+o&b!}C0?n6?7;iGNt_ z={kn;k<$U(A_VDbPk79BV2u#;k6FV3^;KViuCvaHLi2OLA;~%-XPCm^>`jFP00000 l00000000000001002ovPDHLkV1oa3`MLlA literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00010.png b/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00011.png b/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00012.png b/tests_zemu/snapshots/x-op-clawback-with-muxed-from/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback/00000.png b/tests_zemu/snapshots/x-op-clawback/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback/00001.png b/tests_zemu/snapshots/x-op-clawback/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback/00003.png b/tests_zemu/snapshots/x-op-clawback/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000Q31IlGsZ>7+KUfKp+NG-SaV;L13OC33FWl006*pU-KbijQP(H!hFom zO2_I_4IYkjgcxJqANA9(q5}ht`SA;VcV*=1DKW+vLXbsmX2{FtnN`d@B@b0!<7PC~ zl6n`0ea{r`q1q>XGe=g6s0JL{QU6`E!S*r3-VeXif{FQ(` z>DS-O#bb`2cHtDKx35q(ctID|Z9yvIVsppk{4afeOQFqs}#=GhkXbkTO&&B`V z?I1Jy%NRq==r6_`?8Gj#Q)7^s16K?$0000000000000000002s<`3`I$*Z^HeL#9gwWno`h!0ApzPe=D0o2qXr}ga7~l0002M?fi6=PAQe=7-LDv z&jZX?ItF>Fv-hbbg!ag#270}oJNNMn%MJ0d!`j>E=|$o({zt#XcFuKDJ5!1 zu69#%gI`Y}C-F^?hP%MWtJ0Orp|wgDP1mT}5+ygA4sRQXl6jX6`J7cVK+9^5m$+y& zJEOT-em?bTz-q30m+v%-MdF#xde$+)4xj83Om!o8dEjl`V5~< zIt);{nlW;Fl@NC`@f@kO9!#fpYS`5Uu1`}#0000008r?QhOWbi=kP2~ik3AHu6aIr zQ0#+z*Mq0}AuRtA_VCS~cx5o|KuTy&44|H1_=g*S#zFIgxEXBZh$ZNofdLL<aye?(>_xnk+)-;N$yz8nD4mK42AkFdwrIKN3E? zQ_;}$|GE-=tv>g~KkQs5;#=`S}^`vEtoJ2Vsc;^1$8T zytD}#@1#4B$BNp8)anLtS>pI@;^CeyT!L=!DZVidTfG{@+vddnJ;2^n`Mzr4^mn8B zupY{=nDo1vGb=!Ljn(qNpe&yUR^m?1tbm8GIozu}YXGd3 zvCe+Di(Z~J0GGB!87L@GgIoSl{_gcl{-~bqM=ZQM^8*l76G8|fq(MUsRmDq7(NvX| zrXE?{LM|OgvZ|H^DKuGiwn{mU)I8mQd+KTvEfZya>#qE5*=$zEx9=y)lYvtlPf1R3Ub!In?w+uWLW0|p5HwITStRzgB~qnop@gp+m3jrp8mPt8jo>8NUDfQU zjtG1js{yd;6Lrxy8uH}b!aDF)hxCtW;mrDytk|MTc1gb{p8@l$K@IwH8&(RdPkR!KzYiFA;ib=`r>- zq!nOyguDIEOr8XP*uP^rwMQa^5JJw-{-?ZD5UYcXFDv?@sj6Q#MNsQixU7H_FRdmF z$g!&GiHNe@sA?Y~TgtmlanZNd%-qcBH=(JgN+XC_hr|DrANXKv9Z{#MRZ>KY?mwVNV{R?rG7?;H_A7@HB`7MuNPK#azDa%=^YtR}r z0M+ckCrh{}2KK4U2{s|N!U(}HWV$Au+9SRQS~+t1Yd8jiHL)0*se}+h2qA=Q(ODG?45I3}+b0000G?kjSzQcC;hwr#`X z?=knW#3;4BHtIfYgc#qEgH_v~v0>ZnnzP(qz(F6~f2yCz!L(X&Jyp5)@k+bp{i~ha z;7a!-tbkIAS8)ebxi^{<*S_%%Z_&(?umbcnc^~`cjx4fbCTUdWE=yPeF?y;vc)K?( zlmKsK42)?8%)J>blz^A@{p7+M#f$pd+}}i>YeVBr+}jg_JlBu}47m~j0L}%ShMMP~ z;z8FtZ|G?k!Sy4wc?$H=RsCb$R}1e@Nc8`-{eH_q0W)&mGrt%5 z9ABsCsc!&!L|ygf_ISrhw8xfVHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback/00011.png b/tests_zemu/snapshots/x-op-clawback/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-clawback/00012.png b/tests_zemu/snapshots/x-op-clawback/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-account/00000.png b/tests_zemu/snapshots/x-op-create-account/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-account/00001.png b/tests_zemu/snapshots/x-op-create-account/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-account/00003.png b/tests_zemu/snapshots/x-op-create-account/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EK>+-uO^$@|&-a_bzz7{?Q!sHw>-nEUHd*i_c&zc$A)Mm${$=tGZy3V9D+neQ;D_H01^~xekPTH9=1Dr64jumeU6&-W%<1m?{jnRuB>`t0ZQq!(nL2?r~kC||AaT^ke!mO+vwNO`Lk^P ze94&gAK^*`6(mo)_B?L>2+KHmpG%PkG^Y1IIML@TPBOEP)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-account/00009.png b/tests_zemu/snapshots/x-op-create-account/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..dba8ca3c060cc0ab666e4b2fed83a185ef0c3e1c GIT binary patch literal 467 zcmV;^0WAKBP)Q31IlGsZ>P!Y13o*6=#d%m715XTG&>2(1B007&4nOl1A<8SBOcqpMm zb606R^?n8~G}n)o-jJ&%vKKbK$LXe!Xt@H^(XFdLvKMCXFmz= z*MHUp06d9)tLZ7Z)Po_O4GsOjm(H3#=vR*ZopsI}fH_}72MxZ@h%c$n@}hG8)ofI~J%JylDSHw`${nf1@Y6&mS1;kE4FD<+xj zZ<9$i+24#YxD&h3of=7I43;9j0000000000000000002MGQVUubBDkumKOj3002ov JPDHLkV1mwJ(QyC( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-account/00010.png b/tests_zemu/snapshots/x-op-create-account/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-account/00011.png b/tests_zemu/snapshots/x-op-create-account/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-account/00012.png b/tests_zemu/snapshots/x-op-create-account/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-claimable-balance/00000.png b/tests_zemu/snapshots/x-op-create-claimable-balance/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-claimable-balance/00001.png b/tests_zemu/snapshots/x-op-create-claimable-balance/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-claimable-balance/00003.png b/tests_zemu/snapshots/x-op-create-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000p67F$ zl}>%WvI)EGY(WSijVJp#&e4Vjef*3wt(}at{b~#$oaY%gwb&sYn|97@rY)%{dyk9O zvYFT+xcPoExQ1+gF*b2!Itn zErV+MZ3qtLB_PFEAZu>1T9$_Y;hVO|LW5fboWTm=IF_~(R#`MwON?)iuVM?}}*Nw~}H zt5QE`^|k*^wT~2`31mkhDwG;S)Br>gqUk|b(^)l-+I++i>;PACds>ZJAzrHKZ#R|} z`p&1O`c*PXj4PiooBI2_3?29~HB_r4S{Uwg?Uqqn2kxbY&eVL~r7zu*p8&_(jO(6e z-!{vuTK&BwU(MRBuZ~ryHKIx{R{wvtx%Na|WLAF~!cw#PlOYEyp$e_!W|7IkP|D@) z@NH;E#Mj?qxAh84C)RuyWZ?Te>%DB3fD%!v)GleAZFLqt*e`Z^sj3~d%;#)(0)cK`qY07*qoM6N<$f>0<6jsO4v literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-claimable-balance/00007.png b/tests_zemu/snapshots/x-op-create-claimable-balance/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9ea0566f32f18e4158b22cf0f82572f4142e32 GIT binary patch literal 521 zcmV+k0`~ohP)dIZT_w2vM25u^s#S54bo zDasvCvQ~!hAtnZC8ZZj0N1QF(ElL4ea)iDb;1Oiji82Y_L}oci-m54DQ0K|f=$;0Q zg1cMC*#ZCn0RA<(YV;hzdz7@c$(27UMEjY+Bgz-Csc7F|-{mm{_*4{NGYYU71qdei z`r+xz&`IAScl~1wlT7xPQBqCz7o!F{@f6yLd3Yz8-b)*^>NXzvvfG|!Yycf?%yM2L zPk9<2eF}ABQrWX4H-yRKGVES*4Xz%yBaNLu&c?eK^%qlv-LiUi)c+IDkNw|-)$NGu zcaEro*E6Eq-KZzrRePJW8mI9Q-Ef~D*Tht_W8>Br|R7Y`Fl^P?f zb>$|w@e#COOv#Dybk(~gF1si8&jI$ND(6*$bG#dupB~7kuf6*J0Ck<$tw9fwL3^b* z9euJjW0@#>(!Gnilr$E{{+Ay6|Dd5V3I+fG0000000000z(f23l_kW$J^&%g00000 LNkvXXu0mjffL7^V literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-claimable-balance/00008.png b/tests_zemu/snapshots/x-op-create-claimable-balance/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..ab78f5b799928bfc4a5275428dfe150cf1f473c4 GIT binary patch literal 739 zcmV<90v!E`P)TP9Yl4&sAquX#!3jvX{l?p zN^`PAS6XAk$J%N>6!`padfN!^_I26FQ~YERoqy0>J;+rS#{Z|>(raFuJh%^Dz#CSf z=h6r=`d}%q4X;lRSXcOMG;iJ)ofBf}lp^RZMv+33uvt^Y#YCdR?r{`7r>V9|?OdBI zs=3umy&g8(aci_X{tvTGn7=x95Az>O{b3n;A+trlHPY+h_y>1g zvQ=T|)5Lh~uot(74$al~=Z-l^IJK5(J>OcyQ98c#;3^(k{+HmOOHYlUnK>hI*zHOo zZd+%4p8gNn_Db?(dedpO7@o2O0RX^WERTuXJuy~Xs(kHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-claimable-balance/00010.png b/tests_zemu/snapshots/x-op-create-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-claimable-balance/00011.png b/tests_zemu/snapshots/x-op-create-claimable-balance/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-passive-sell-offer/00000.png b/tests_zemu/snapshots/x-op-create-passive-sell-offer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-passive-sell-offer/00001.png b/tests_zemu/snapshots/x-op-create-passive-sell-offer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-passive-sell-offer/00003.png b/tests_zemu/snapshots/x-op-create-passive-sell-offer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000R+%h{2f5Jzv!*A|g*ox@`ae00000Oy_G{L@A{%?)yG2 z(>Z8tET(W+&JvVT>iMu@-arcqjPa8vy0tUv`lGUxvhO=Nwc4QWTQ_Dh>zZ1W?c=I6 zrind;FyAAcJuv-fZmMOe3u{0^s9u%Hn705mhJjk{JVB+d;jUWa^bka-(c==ar!{`;!&SxC`WyX=GS`8j7i5{mEbr?gUZjPEL%BHAqF8_kwRjQ&C@t*N^1qY!kJ6JK@aF zgSh9ztU*{NRVG%qfqNPFBO~{@8jsuo9+tH@h6iQw7a3!Mvft)=YX(l-bGN*NK|ezC zz3(z6o~*Ui={9jZ+-cKRGE|%S|4R73TJ&+vM-?N{1?S%z8HqmV`nmm2!d9j?o6gMF z4QJ$Q_g`!3y6FEzk@op&!R!+p*1hFFFf(z%_xX}-_vOQvRY;zxzi!%p_CDiv)wfeixehG<^1Et>MNILg949M<8xajR%Y5z6wrk!$;`)7)`o(8e zGnV}G+4ScAGli?0>Wxi1Qn*|{$@Qu11^O5YJ{ayl$Ta`i-n0#3AQ4YjKbLh*2~7Z# C`htD{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-passive-sell-offer/00008.png b/tests_zemu/snapshots/x-op-create-passive-sell-offer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..4a19f3bf3c27a296fa55addafbbe8e4c07f215a4 GIT binary patch literal 598 zcmV-c0;&CpP)&u`}Mv;iifc+)|Q0Ek%T#QXU@ZNLDf$7xQK2`3^k0zd=&b~L#==N#AdH(^px zN{M;@ikx|f05hN-<6q!+BESrwu}>dKNb+wA2><{9007XaccB)EsK+87Rh2&|61~XY zT=^EeC=Ubd527B$BT9Ees=AU^M|Oqo0G!+j=bXh2R7>tq<;JdUvg>6#VcM^fHMOK< z$ooE3V$GHkU-RXGA25aG#L*PgDi!5ERo(hsdAGSGH|jWN06QNZg=JV8M=iNSm9crL z$C39&tzFOLBCM1;2AbH!(&Ny(&Csms!e@XnjMSf!@oR~DjQCVBBWs)4bYZ2sHXj|c zcfZUo)c^E*_d1%E!~2gR*dP5Xg#$4-$+0X1uC9|2gRRu=oxK~%G>X@x#9bTP(2MoE zMaG)7!F9t?%j@2cok@t#;z#@8VylSNv2UpqGek+(a=nS2N3W&SV}u<-h;`n;KC2c4 zVBU9i7`AfntIJF>bD}lLf&k2)G+1Dny1brsYSJhxkevWG<8IhEog97o4-8N8=r3aW zqS{(lMbd|5#;NSfjVspx9pyG>%a3AqW;sXCLM+!?>>RRup7Z|^GrqqA0000000000 k0000000000007bW2hu2bt``mceECxA%NC@=KO5PN)a~006Mu*X{(ma?bU~lu~b> z=BB6k-krdJU)+?^qpL3>uiXiplXFffm4UCGfcl|1f;JM(!x|uFYEtpK%5@~?d^B%K zjweKKK(pMoj&`>a=`}2f=nc3&W&@7;TJ)FjBwOX+bua!%1LXHyZ)gAD6A=Iaz<+aY zHPl&s^j88VBjwAY6HymcaTO_RM|QWF+{$uOVV9Vi+4d5?#QAY=H_iXi{D$saqK^2- z`U$I`iZqY4hs@;T+xbK6${2B0){bGjW$EpWD@I=nlK$jy@wD~S)SPWp0&>stM#KiF z`qnktn7~argloX?Ce@q6c@GayW&fqKUaSVp46%>TMIZD=KDq(Jmz%U6NxNw#(z}PU zzx_B==dWh@`bH+tpi=Ucm%nqBL5EngU7%ZJs=rL5)Kq^ldax6-&`yIQ(}P=4UH||9 m000000000000000;5I*KhEcWaAKcsk0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-passive-sell-offer/00011.png b/tests_zemu/snapshots/x-op-create-passive-sell-offer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-create-passive-sell-offer/00012.png b/tests_zemu/snapshots/x-op-create-passive-sell-offer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00000.png b/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00001.png b/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00003.png b/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000gq>RS$cL+lF6BuKw59-1H5X zGF)mdHB5L4%#)JvJl~1)q8BnhtUd;Q56CmoI#MMz9<_HuDNG=S$Du|I4lo&H)F6~` zc-_=c_6E^Ub%O-^;V2i7*E*AxrMDpb!z_BbE#!O6CisjF*YLix`ua0%{^W2C?|?4( zoI{rQr<&-Jv^jN~YND&!XLdET60t9v)eCAd|0kgdXvV()XTCq|F3Au7=0nw_odm{! zW)##l{O|-gc2G>PoJ@IuknHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00008.png b/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00009.png b/tests_zemu/snapshots/x-op-end-sponsoring-future-reserves/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-inflation/00000.png b/tests_zemu/snapshots/x-op-inflation/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-inflation/00001.png b/tests_zemu/snapshots/x-op-inflation/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-inflation/00003.png b/tests_zemu/snapshots/x-op-inflation/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000(1HQ`{P~5>JsGlnZ;Ua95YkO;9w5(^2dkK}MTRQh<7PC~ zlkyO{{a!h_h3a1#o0-{kiaH<#N$qA#6=$D=_D=5S9*bM!5c)Vi0g6h^@c{GwIu$mx zIMwv(5IT&T0I86m-0eJ|OQ$Y(*BrZ-pv0^mw}h>>v@0*JJce*}0@AIT78Pd2EF515 z*wVheKQ10~e0B({SiOG-#|{q|!nhIy6BF>_SHS=PS=D8RT#7WVNuIU(nyj3xOx=5EHAm5V{W}Qo?dR8WuYhFl;uzGmDm_kW;1W;K459HWxnk14Dx%O;uZ4`Za7><`8q%tRHMsgh*oz!m8Q p0000000000000000002o`~&3JP_=4G{K^0T002ovPDHLkV1o0s$n^jK literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-inflation/00007.png b/tests_zemu/snapshots/x-op-inflation/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-inflation/00008.png b/tests_zemu/snapshots/x-op-inflation/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-inflation/00009.png b/tests_zemu/snapshots/x-op-inflation/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00000.png b/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00001.png b/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00003.png b/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00001r;P)-bgqH<7se*eZ0N!o1SLT(>STIeF{pR))i+LVl|$%5aR)Hi)Wi+M_0^;{NR)DV zaR?o(3jifEL8;}uz@;X0vtq2Cf&yapn4-2QsV9H9(ip;M0K!rYhYB%cX4+>I*2tgF z?V=Im)*)EIx_=R|!wZJ6E(HM*1mKNc1_Jku!f<4UNoRiP)edeUKTGkWfJhjy@# zpfsYTwV+}_l(kHCq0MLo?fE>$R2GF&ePiKCWY(#;67#~5zltu6I5U?$#kgGya08D(%NWI&oD({&jTP)UhPrCSQS^t*VN@04}A9Xb>8b7cn-P_{# zg#ma(4|h2|*X}_t5QbuKA-1y6Z4@RMF;FF*-U;7^PDFhEo^IllE5ZiiH}Pe*c5%#2 znB9z0x4ifQ6?bGcRBVVpQahld0-CB~YF9T~Ip(W~ku$!LxfVGl1$8Hi_-)4&$LxSX zTED$r#xcjxx&MU4mY@Nf%ejMFQjl2?000000000000000000000DvOD$~XtDGetF8 P00000NkvXXu0mjfWp(|c literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00007.png b/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..dc37e17f61cbafd272f2be3f472f8e92eb441e6c GIT binary patch literal 925 zcmV;O17iG%P)|^$Yy#r!>4v!SS z|ExCR&T!kDi4B3)g$ZbXhz{DxgLiqb5V}Elmk>|>oqD$?GdbeEfPHW5UAP1n^1Fzu z#*r{B}%E(W+8c1vUl&X{=_N?l`3}Sr)0v z)UKF)@hU<#u7eS)RAea9el^36VS$rx!pwQZEk(E%NU`Q$Ta2zWT=7MN0}n^h-NK## z@d;CGPn!wQ`BlOcqfKpTW-DSEW3-3#B+6&yc_=|g#COU0uqR;Z^I4&h^gXL8<7nP{ zaWhCn4P_21SE%;~FaI4zoD1CO$z!=+_r}MLz>G}8?DA@3_C-4Yj5{es zm>W}1}2nOmpt&@(Cd`KeP#HFw!B6= z$gUcC-ROS^s0{6YyFLZuHAp@<-emjB&6uQ&DmJZ!(#(=1Ns=TAab}A-;VuD`TG33QF5t@ zp-h`21R5F#_u;krimD%@>tPHz8ssrfxT!#qo7k%HO^q^M;0r%moGN`o6hpe0Gqm;X zX!GLcV%Ox~w-d0y=vtm5H)@v8-0f^e^;G2+*XjO;<{1)->PYiE zX}0SJUE+>M(6+er;NyZ)#Kr6vAWEAvn15&LK4DXm6jj)sYv_87^j>}-euHX~$^J4< zs>%LhtihEyg|5^{GHWmu=>-4)0000000000000000H*l^)>6TkvN`UHB3JE#X!q3vwO4Eyx6dBCl=L| zt}P1r*?Lj(Re=G}(KiBrpAG+c`oR|W>>t`k`0IDDKCM1JukBiaw|2by=i*~;|Nn0| zuFTjyvEiu4fwVXBoLTSP+2<*%w@X_@=KXa3n8I-S@%upDqRKD%H~zj*xKc0j*LXtn r)NgB@@;Chc{$caRy+BKl!GYX=44!GhlGb9Z-5_yKS3j3^P6?{ z7aO^*3}+M7pWl#H#wo)#;~#p(&b7ktgI8>GB9e1XDb-`pCEGCc68UJk=u7OL+bYp# z)m_!c)0W-56_DPfJv>ulW>Np#Vy6#GH8aO8=Jax0x?0!Y?fGf*CLq7*!v1`eI{pFo zSKf8bdG!mPfZe-ERESU9JN=}5cSBZyKVF@5p;L36+*=OQ+G-}Hpb}z}$4#}mL?`7> zuT`H_KQNqK?eq`;001Y1?S{r`eH;6?eWdXvII71_;@JW9d_$Oa)_jFueLFhD$~S)e zcJzFtmtcn}$g@c>dRsKg{Zf!;KgUyN5jUHFhecoNXTS=*H-8+;|6ZB5%+5=vtoL9z z2=AI%@?n}mCi>ItgqrA2#vFVTS?HS%g3KHYMR)-K0000000000000000Dxis04LEK U9T`ltJOBUy07*qoM6N<$f~O$CGynhq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00011.png b/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..eb3932d2f028d10411cbeec962c8fdd0ce1e62ae GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh3gW6@y+9*2ut zF3&FbuUt4?Z-xPnn1TVvoIl&WIwr2%aByn8K2X+}xLH_X0nseLzVDTmoMUx#fQ?sy*jTblgXZeu0qrafQQMcO6S z*By{E2#k5bypa{?1~#!UXYEvvjk_+anRJdTi1W5}TXAb)xBs=X>hHYHCR9zZzPmi) zYk$PcD#;aVbh(N+E=L6z7tWfle)#CchnCiVruzAo-PT&&zclWb!qTPdD|`0+)+yV% zV25_dHujC-RWCD}GV&&#GMv9K;6H`l1JI?o(3ma z<$M&ax6R4_p4j^(Z{=}6%a_esCyy?iRBL>wLH@hBjcoCT%aN-uY|m7gX&KS=1r+AU a;PfA6og0ZW%-r~tK*FA`elF{r5}E*v2 zS2Il4WDj@Yal3E%{nD!&)%r>&pOoIeY}uj{r}Xu-YM#B`oNqywf3%)i%kZ<{XYFDm zhu?3GUFWyHrJiiERdhn}j}M7l)4zX=IePi_Hf`g_`!0GqY?`T}m@&KU@9(x#-cH5b ztN083lZ4Jn-%{9ik1@LAvBvcHD|7d%tn}T*#=vkO=-cwWhkmYq_N?%#xQN`>4@=@d z&tI^tAoMGzh~1H#e`42?UVH!GpU9A^;vmUskao*+L5+aVsr~bmtylLKU+SK_x!}3S z8=DhxWjSSRdkelaHw)g9|B`f~ahdcRC+^*6t1CQP#DTs?1`^MBd7tS%3O75w4J7R8 L>gTe~DWM4fnO2@r literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00013.png b/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00014.png b/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00015.png b/tests_zemu/snapshots/x-op-liquidity-pool-deposit/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00000.png b/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00001.png b/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00003.png b/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000JAgdqg)eO%OHgS2njnCMI;sjBiC7qt;j z%0n3Dd!};>#J@N;ab{x|(jY2{a#1JI^TeRt$)_(*ZjD12L-7qDkg4Gf#P!vsHcFIo zdUXf`>+RT(>v`FUXy~#_0E>N&1SO@000000000000000000000000q_yzey V9tohyHv9kp002ovPDHLkV1iHD0v!MV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00007.png b/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..dc37e17f61cbafd272f2be3f472f8e92eb441e6c GIT binary patch literal 925 zcmV;O17iG%P)|^$Yy#r!>4v!SS z|ExCR&T!kDi4B3)g$ZbXhz{DxgLiqb5V}Elmk>|>oqD$?GdbeEfPHW5UAP1n^1Fzu z#*r{B}%E(W+8c1vUl&X{=_N?l`3}Sr)0v z)UKF)@hU<#u7eS)RAea9el^36VS$rx!pwQZEk(E%NU`Q$Ta2zWT=7MN0}n^h-NK## z@d;CGPn!wQ`BlOcqfKpTW-DSEW3-3#B+6&yc_=|g#COU0uqR;Z^I4&h^gXL8<7nP{ zaWhCn4P_21SE%;~FaI4zoD1CO$z!=+_r}MLz>G}8?DA@3_C-4Yj5{es zm>W}1}2nOmpt&@(Cd`KeP#HFw!B6= z$gUcC-ROS^s0{6YyFLZuHAp@<-emjB&6uQ&DmJZ!(#(=1Ns=TAab}A-;VuD`TG33QF5t@ zp-h`21R5F#_u;krimD%@>tPHz8ssrfxT!#qo7k%HO^q^M;0r%moGN`o6hpe0Gqm;X zX!GLcV%Ox~w-d0y=vtm5H)@v8-0f^e^;G2+*XjO;<{1)->PYiE zX}0SJUE+>M(6+er;NyZ)#Kr6vAWEAvn15&LK4DXm6jj)sYv_87^j>}-euHX~$^J4< zs>%LhtihEyg|5^{GHWmu=>-4)0000000000000000H*l^)>6Tk}8ba4!+nDh2VAm1Sco`yt| zdo91^SC)Tl^pH9wG5g}QxBur&*cjcanAzDH-i zpSEuBRhm?+cQ}N5X^eD9_LtbR#k1UBrp5gUclhjmMgH`Smrj@0#NGYNRa>q5d`_*q zz3YsIM;9V)2=Y(z_v@I{bWQf4zU6v`xwCSM?k8REs#deqb>X_?`SXJA-R&!C6M6FX zzdgmw!0_Sg2fhTC_kwTFU3%x3o>g!lVR9aSKspy=>ks9!^uTjX+in;?@8+~+{Jh-x zwGyjkGE)=h)*DZqubYJD{x0lYKR3bY=q*wEL$R}CJMM4)A?Ww2}@#Pr-PF{|RVR?f4%XR7n`_5;BQ z0uwJacndo2rWy_g=i(Rj<#&4D{jG7h4zn zUAm@f!|HOY_g}W#JWgJ6@9L(9?Z?G8?ytJ}aYn;_Cnhyz#>o>I(*LXxep8zA&Hs3? zYH&!>2Z5x;txmoo%JDBIiE)`~3;%yLeTz(y!DZ>Rg{6C+TkcWXB@PS(Wbon{yF#t@ Tc^2ItMj&BNS3j3^P6 z=8gIJtJ}09v)`ZF7x?(SyNl8HS081*a2+t^v6ZNAc{l6NhG5<0tCo9pm4El=<^K7? zTtPu;<#DYUO$ko1PTZ@0Yp%BFbSy2OQ{`Lzw@-$s?J(td|x`&R_e{>`>sF_PLz7zX0~v9 zh;Ny+!~9j6jx+D^p3O14V-<1yQvH#84Gccp@))wp`1m$tFvJ=CPCLu6C;gjpScH0q zy2h9KWqzU4d;(t_=89djB`}=%7CB3_(L|^`Y=X{ILaK_6Poh|E&_Z_xQs$v9& c2oh+>tCQ_hXiN#ZHWei5>FVdQ&MBb@0E#i8I{*Lx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00012.png b/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00013.png b/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00014.png b/tests_zemu/snapshots/x-op-liquidity-pool-withdraw/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-create/00000.png b/tests_zemu/snapshots/x-op-manage-buy-offer-create/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-create/00001.png b/tests_zemu/snapshots/x-op-manage-buy-offer-create/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-create/00003.png b/tests_zemu/snapshots/x-op-manage-buy-offer-create/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000D`I zv+1Vw@>Mw~kK92@sTl>gXwAv>M;T}Cb$;jHt)-Mwj4^jOFE@FYC`a@k?rFV=(~Ug3 zhUUsAdd&@|Yu086A;wsbY5WLcT)Jll@xU38apVytxZRE7cL!v8$2R+EIwE>-qa@)y z0S%cUcdl#Goavd6T^~Wk*FC(=xEFrgP?^N^BpiB)aZeJ~gN*LELst#}0DzOMwxNm%4=j(ymsQT6|gz4Wl zr*(gLD5gX0Q(9b%+ix@|W%0^&J+T!#KQjT!$W9zJ|0mD-a`gF9SNCO>Pt)hM6L5uH zn#_cCa_%P2`n3E$t6M1cd9% z!82X%DfB2CgUlS5Vt4@n000000000000000001*@)YEUzX=3e-00000NkvXXu0mjf D30>6$ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-create/00007.png b/tests_zemu/snapshots/x-op-manage-buy-offer-create/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..51752fb4b8913dc39e92354c0e2257f59c996d24 GIT binary patch literal 422 zcmV;X0a^ZuP)741i&KraNK(OJXnQ!D)se7(ogc`+rZZmzoI>HQhD<003aR*XjUj#Teyt2*EgJ z-{_adg}h)kTDzfTQ~s&@eT zbEk)4sQnc>tt8j3`>kku2Ouq!<7P@$snc%6szqbmftonz1#PMw)H(a)*X~g9=5<5u zo9fYhwJ3aiEjZKA+L*6^)PvZLnZ(dCNOISbFOLRqb^iL)v43v?ted-rIS&+kui zm}Kw&?Kx6NHQAqxF<9v^)r`ReCrM@uh9bQH000000000000000006)+{|3bw9}?~t QTmS$707*qoM6N<$g3|}T<^TWy literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-create/00008.png b/tests_zemu/snapshots/x-op-manage-buy-offer-create/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..14e8a577d93ba8854b8a02c65f1c65946da97a09 GIT binary patch literal 467 zcmV;^0WAKBP)b&>aFfSviuHJ7~ z^+h2OBbNtR4b`*N_~mRiI9<%2f85{*C?7{%vPn7K^=I){m7j7i((B&@5$Ad(z4{@*Q~!8ClTKO+;%^M(0mi_vg=NqjS(PcZmjH<0K7%A zznz|vd=s|%IANgKfWv#P7Dg zu#o+F_5T+yte@{IFHi8}I9NTOt?nDkiFP%!X}Z^JbQsson6;@)GWDjAQ^(2ZOUF5{ z2?y|&OCJBU<;o?m8G_e@3u@0u$$Xvk)&8Ml>XhE&ww5Z4@7~A6pZj-AT?y#q|7p9V zR*5KlO*(K_cayEAwv*plS_Ixh28fp ztobLm3Ks53o6z~sXlj7)-=ilE`kisIE^YGR%X6(@1cnw8Xt@1{fp4{em*|`gvp~Y0 Lu6{1-oD!MHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-create/00011.png b/tests_zemu/snapshots/x-op-manage-buy-offer-create/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-create/00012.png b/tests_zemu/snapshots/x-op-manage-buy-offer-create/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00000.png b/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00001.png b/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00003.png b/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000Aj-xt9K>)c^qsf z3hsRU%lH0#{>0N8!+!2sx8%-**ekiE>*w$|+r_@qh<YpZKh;-rxMgxk4-L-;4h<7ur?4 zRla)g>AmPo*$x??tNkvAIk!u4J1+dVI4pPNF%!4fW&fAkcyqsUYRy?G=D0gnZcB|} z-sWqEE@r=t=zBM*KG;^(>20e1?Z76TyHN|L@ol|z!(A`dZSU(DLRZ%6Uj4npT;=*> zQPmZvgKyeyebM@g^M?Gc%?_*eHJcZAoK}9mFL=+=$@hZuZZ9^S?DK7VV36-O^JKnx pE}~UI>LHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00008.png b/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00009.png b/tests_zemu/snapshots/x-op-manage-buy-offer-delete/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-update/00000.png b/tests_zemu/snapshots/x-op-manage-buy-offer-update/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-update/00001.png b/tests_zemu/snapshots/x-op-manage-buy-offer-update/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-update/00003.png b/tests_zemu/snapshots/x-op-manage-buy-offer-update/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oMXsAuS-PD z@^rcWz}fm9)saaII{pd&uQuPRz2@RZ?oEF<`%@G5ny13L6m(IUB3=;pZ14&=9#iI9ov7v^`qWQU_kSv^&a3zcB93RL z?fxE_isY x$p|uYFcski0000000000000000001{`2}W}N5PvipPT>y002ovPDHLkV1k}=&qV+L literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-update/00007.png b/tests_zemu/snapshots/x-op-manage-buy-offer-update/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..51752fb4b8913dc39e92354c0e2257f59c996d24 GIT binary patch literal 422 zcmV;X0a^ZuP)741i&KraNK(OJXnQ!D)se7(ogc`+rZZmzoI>HQhD<003aR*XjUj#Teyt2*EgJ z-{_adg}h)kTDzfTQ~s&@eT zbEk)4sQnc>tt8j3`>kku2Ouq!<7P@$snc%6szqbmftonz1#PMw)H(a)*X~g9=5<5u zo9fYhwJ3aiEjZKA+L*6^)PvZLnZ(dCNOISbFOLRqb^iL)v43v?ted-rIS&+kui zm}Kw&?Kx6NHQAqxF<9v^)r`ReCrM@uh9bQH000000000000000006)+{|3bw9}?~t QTmS$707*qoM6N<$g3|}T<^TWy literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-update/00008.png b/tests_zemu/snapshots/x-op-manage-buy-offer-update/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..14e8a577d93ba8854b8a02c65f1c65946da97a09 GIT binary patch literal 467 zcmV;^0WAKBP)b&>aFfSviuHJ7~ z^+h2OBbNtR4b`*N_~mRiI9<%2f85{*C?7{%vPn7K^=I){m7j7i((B&@5$Ad(z4{@*Q~!8ClTKO+;%^M(0mi_vg=NqjS(PcZmjH<0K7%A zznz|vd=s|%IANgKfWv#P7Dg zu#o+F_5T+yte@{IFHi8}I9NTOt?nDkiFP%!X}Z^JbQsson6;@)GWDjAQ^(2ZOUF5{ z2?y|&OCJBU<;o?m8G_e@3u@0u$$Xvk)&8Ml>XhE&ww5Z4@7~A6pZj-AT?y#q|7p9V zR*5KlO*(K_cayEAwv*plS_Ixh28fp ztobLm3Ks53o6z~sXlj7)-=ilE`kisIE^YGR%X6(@1cnw8Xt@1{fp4{em*|`gvp~Y0 Lu6{1-oD!MHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-update/00011.png b/tests_zemu/snapshots/x-op-manage-buy-offer-update/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-buy-offer-update/00012.png b/tests_zemu/snapshots/x-op-manage-buy-offer-update/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00000.png b/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00001.png b/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00003.png b/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000L6#&DyXRHMamI0n@%Mm>a@EL1oqitn5{Y!FY}!(JX;b#0x81A{rSc^H z9*|bzHPG2Q9mZ09rirRA+8uP5kS$2gfh-&r)OO@vn}J57ao&Q;PA}U`=c#rzy8r&i z(CVtkh2=pID`+D42n!CK+Ef*t9}be&m)6yDB)g8(6f5E4vpIP$s~+0P-9H}Ku# z?fMBQ6`G0C;ik)Ld>o#sh-v~|vyqlr#p(sEs)N(_plN$UT3xMh5nyDiOAmaDD@p~B z(C<=fI!EaNxGf;nB*X(EDmIe=O%Z$WNXhLp;1O7c=L8u0S`MQ9N0tenE)ip{bY%oy z^h8Xue=-ZiFn96^usdBAg5=tiE(|J`X3eO3DCx{z5nzzHW-7tCTl=6P%jgLQQFL?g zN}7@Sm0#??IXr;+#;|NLo`N+ky5Q&mYTbK{$gNR_nscy##vpSJLUA5m$CTXTr8J`6 zj3Y)mZo)Vt2(BkMC;A>KH;nmCVDmyLjX@8Xgi?vV7%=uyF{J1Cer5(oYHhBIYz zLcZ!o-in}8B*^&8tNr?9?oM-_0f~9LNykas+OtH{Qz{!aNiXx1b$HmWk$HKS^9+zX zF?DoypH3UO{B9B1sF;J~HF6F9OOPG|oj4t^y=0H)Df2(i^PJ}rRNK&AR#rW;w$V*+ zehfA5`gWpjVeK)ro1SgLM{_YLbCyeu8EwIe^s#O|vxWxwUM>URQWF3GHfd~SbN^$FmetEK37UOI70C@-Dv<*;diYA4hC%NSiv?=Qv}?8GXxQ>T*| tgHUuY0000000000000000000G<{!jxY|b&+l?4C*002ovPDHLkV1ji>$Q%Fw literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00008.png b/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..b99ce86ca30ee4e04b58ee63eb5ddd78a58109f2 GIT binary patch literal 560 zcmV-00?+-4P)m zooY{Q^0O^DY|CS4M*sOiYtAetPc*-_jTobxgW-xTu%5g9NlRQ?eWyQvV}?(%y-7Z4 znO>bmfuvbRmfuhou*I?dhaQU_8X2I8AA(A>^jypI>hzGspd47NIr?kOsEq5PmGoDq zezDpZQ=7_w0hu$3jbQ9`V{B}erbXparYM}8H%feyz75bv=$Oome8$+!Yes8}?zAHF zBbaAzqPqlb!c6_O$IANCYekkd=kV@pX!E(wZqF@E%NK+6RPH&1jl^<396Onf30{5= z-kPm$##=eFj(z65k0$^Cuo2a3=otDZuD?YS%)6k|dhteRD7mTW`waT5?>hZwx(mj@ zX3N1Td=uThpquc=sU4(7kG}ceN4R(coHJ~eCap*Qsx-zLV%hr{n+pr0&BYtw>C?&2 z#iOFuqL|08u+~z(oTVkG7@jk|++hcryfp)y>{EhkJeC17@fg)B!{7^?+WVQJ9-TT) zpJkgie%{uNvBR^}{OPp4@|-S3hj;-T?30gKy%MRp@JIEHZm= yD=aSn000000000000000000000002MZTtgSLfCS{3$v&I0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00010.png b/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00011.png b/tests_zemu/snapshots/x-op-manage-data-add-with-unprintable-data/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add/00000.png b/tests_zemu/snapshots/x-op-manage-data-add/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add/00001.png b/tests_zemu/snapshots/x-op-manage-data-add/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add/00003.png b/tests_zemu/snapshots/x-op-manage-data-add/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000L6#&DyXRHMamI0n@%Mm>a@EL1oqitn5{Y!FY}!(JX;b#0x81A{rSc^H z9*|bzHPG2Q9mZ09rirRA+8uP5kS$2gfh-&r)OO@vn}J57ao&Q;PA}U`=c#rzy8r&i z(CVtkh2=pID`+D42n!CK+Ef*t9}be&m)6yDB)g8(6f5E4vpIP$s~+0P-9H}Ku# z?fMBQ6`G0C;ik)Ld>o#sh-v~|vyqlr#p(sEs)N(_plN$UT3xMh5nyDiOAmaDD@p~B z(C<=fI!EaNxGf;nB*X(EDmIe=O%Z$WNXhLp;1O7c=L8u0S`MQ9N0tenE)ip{bY%oy z^h8Xue=-ZiFn96^usdBAg5=tiE(|J`X3eO3DCx{z5nzzHW-7tCTl=6P%jgLQQFL?g zN}7@Sm0#??IXr;+#;|NLo`N+ky5Q&mYTbK{$gNR_nscy##vpSJLUA5m$CTXTr8J`6 zj3Y)mZo)Vt2(BkMC;A>KH;nmCVDmyLjX@8Xgi?vV7%=uyF{J1Cer5(oYHhBIYz zLcZ!o-in}8B*^&8tNr?9?oM-_0f~9LNykas+OtH{Qz{!aNiXx1b$HmWk$HKS^9+zX zF?DoypH3UO{B9B1sF;J~HF6F9OOPG|oj4t^y=0H)Df2(i^PJ}rRNK&AR#rW;w$V*+ zehfA5`gWpjVeK)ro1SgLM{_YLbCyeu8EwIe^s#O|vxWxwUM>URQWF3GHfd~SbN^$FmetEK37UOI70C@-Dv<*;diYA4hC%NSiv?=Qv}?8GXxQ>T*| tgHUuY0000000000000000000G<{!jxY|b&+l?4C*002ovPDHLkV1ji>$Q%Fw literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add/00008.png b/tests_zemu/snapshots/x-op-manage-data-add/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7b9199c607264aab5a75039eae99b1cc4f0ed2 GIT binary patch literal 613 zcmV-r0-F7aP)^xo zoF0S5ST)&zq@2H`EjME8(VAoj19|}E_z*~^PSIMGYXCy;Xas*weBb=G@U_<8|YYX1KBs zEouO1PwyOLtA0RLfBQ~q^AI%TU8ByDN#F13dw8-N>Sw`NRQ7Xa*|?^ycwZ@&ZNHR<)XA(l;MNZ1 zN-0djo6&wLFP*C?b5#44cS->O00000a0&ha5yvQxo~~P_6_M<{%nrD zRJ%UJ*0zsh#qG({Pbypd*^#ZL$Z~PVB8kPZ348b09*y(+l5wH5w(hPeZ)LMf@nz!| zMr#ebS%Xq+*S(d#IeE>#xog?ZFzEiVzM?g8-D{v+_LAN4ytn_^<>pQ@sAaP_HD__e znr(gRBA3_g>zZMEY}$qVKinI{FaI*KecF2J+$$M#yWnXH_#a9ySrle?;=tL2Q-)u@ z?Yhy@e@R)g`sGJE=`V~MD|TEdH&mN;?@acs1~X^BWAYVy?wy<j^fuY1;+v00; zvvvpM-T&j9!_6EdSQR5u|6649+wGk5d!1|#`*n+7P7Jr)wAOj2?KEE1E1B2iCIo$G z*|d?<-bc@IZN1^^J!xIVrKln2jg$Yb lmnruShLq?7gAo}RoRz=Uvh;m;cTP4)*wfX|Wt~$(697&E!_NQ! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add/00010.png b/tests_zemu/snapshots/x-op-manage-data-add/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add/00011.png b/tests_zemu/snapshots/x-op-manage-data-add/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-add/00012.png b/tests_zemu/snapshots/x-op-manage-data-add/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-remove/00000.png b/tests_zemu/snapshots/x-op-manage-data-remove/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-remove/00001.png b/tests_zemu/snapshots/x-op-manage-data-remove/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-remove/00003.png b/tests_zemu/snapshots/x-op-manage-data-remove/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000#+{(PS2 z9A{!smyXe1rIe`P)s|M0J;??|b%R&Pt)jghIM37LRZ7Y4c44Vir0sGaoX!0@eKO#| zagBfWOq?KvJ-^Dol5#_-dM-=n+e(VDpLujw5)_ zI!WQ_^bf!&PXGV_fd9-moq9z4cNfhE>7H8aSU&*94Y+OJ&@|0T&1OJ0G-G5vxec`x zlcR@ukkK-CMlB;tT0Jp|>Cb^V(J=ObklPqn?TS=EOj|anRfB^^fZdiMRb@&9%&1sR zU{po?n@7%S@U-J_Mh-yefeAJCf63xmO0;!n26W{PJaPb>?4P1C_ORiU1KbqjojMU;&j*#u!XxaQ6;O$$h<)M(>+(pp(E!*v<$V#}hjz`W&fY zIP;x`%>$)08Y7?+NM*vm4;U3tkh;Jo{9#&NPZvw*3-z?HniGAF6aWAK003~YXIk+) zq%t^&eVEEYY|pgfeWhaTnO3~7l*p7fdH?_b literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-remove/00007.png b/tests_zemu/snapshots/x-op-manage-data-remove/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2cea1c0f39ede5d8311e1bca3e6eea6a5f73ee19 GIT binary patch literal 482 zcmV<80UiE{P)Jkb!4urLoh?LA)^M-eg@Y?BZG004mPzC1xGCHWjl!l5Xj^oF{IwsH1_U$jLXzU4MjGn4eO8&C*NVS*q)*CU-7Jr;&dCHX{ zVvJIjdUaSQ5bX1DUQlX1MP`3m>)VM-LdOiS>ZmV6nSk|7tot|rtbW@y^WsaWhE|T( zF=}}u{55yX0QFLJHe*FvYvqOH{`hM-)j4X#_;n1xF?s7QTY6jWO5R?w{V{d?c#P%x z5_F;8>z~M)5Z=4yA^wUo56DfY$unmih)!gQuFC+pK=$STYN}J*gl|?ZLDoMcgNi=_^X9B0`9E3t z!CO+za?-tQA#GrGGQGcz($)0-W{km|ScUF%(#ed$Qgkl>000000000000000006Me YFXy7Q<7UUn0ssI207*qoM6N<$f*3pJ8vpHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-remove/00009.png b/tests_zemu/snapshots/x-op-manage-data-remove/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-data-remove/00010.png b/tests_zemu/snapshots/x-op-manage-data-remove/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-create/00000.png b/tests_zemu/snapshots/x-op-manage-sell-offer-create/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-create/00001.png b/tests_zemu/snapshots/x-op-manage-sell-offer-create/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-create/00003.png b/tests_zemu/snapshots/x-op-manage-sell-offer-create/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000D`I zv+1Vw@>Mw~kK92@sTl>gXwAv>M;T}Cb$;jHt)-Mwj4^jOFE@FYC`a@k?rFV=(~Ug3 zhUUsAdd&@|Yu086A;wsbY5WLcT)Jll@xU38apVytxZRE7cL!v8$2R+EIwE>-qa@)y z0S%cUcdl#Goavd6T^~Wk*FC(=xEFrgP?^N^BpiB)aZeJ~gN*LELst#}0DzOMwxNm%4=j(ymsQT6|gz4Wl zr*(gLD5gX0Q(9b%+ix@|W%0^&J+T!#KQjT!$W9zJ|0mD-a`gF9SNCO>Pt)hM6L5uH zn#_cCa_%P2`n3E$t6M1cd9% z!82X%DfB2CgUlS5Vt4@n000000000000000001*@)YEUzX=3e-00000NkvXXu0mjf D30>6$ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-create/00007.png b/tests_zemu/snapshots/x-op-manage-sell-offer-create/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bfcaa634c7126c841292931e62169608cadf2c87 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QolW2978JRyuA^a*KEMU5McIJ zZRh`qMbm2)Tmw&OOpTIBe_!i3n?L!uTGDL>h6iQw7a3!Mvft)=YX(l-bGN*NK|ezC zz3(z6o~*Ui={9jZ+-cKRGE|%S|4R73TJ&+vM-?N{1?S%z8HqmV`nmm2!d9j?o6gMF z4QJ$Q_g`!3y6FEzk@op&!R!+p*1hFFFf(z%_xX}-_vOQvRY;zxzi!%p_CDiv)wfeixehG<^1Et>MNILg949M<8xajR%Y5z6wrk!$;`)7)`o(8e zGnV}G+4ScAGli?0>Wxi1Qn*|{$@Qu11^O5YJ{ayl$Ta`i-n0#3AQ4YjKbLh*2~7Z# C`htD{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-create/00008.png b/tests_zemu/snapshots/x-op-manage-sell-offer-create/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..4a19f3bf3c27a296fa55addafbbe8e4c07f215a4 GIT binary patch literal 598 zcmV-c0;&CpP)&u`}Mv;iifc+)|Q0Ek%T#QXU@ZNLDf$7xQK2`3^k0zd=&b~L#==N#AdH(^px zN{M;@ikx|f05hN-<6q!+BESrwu}>dKNb+wA2><{9007XaccB)EsK+87Rh2&|61~XY zT=^EeC=Ubd527B$BT9Ees=AU^M|Oqo0G!+j=bXh2R7>tq<;JdUvg>6#VcM^fHMOK< z$ooE3V$GHkU-RXGA25aG#L*PgDi!5ERo(hsdAGSGH|jWN06QNZg=JV8M=iNSm9crL z$C39&tzFOLBCM1;2AbH!(&Ny(&Csms!e@XnjMSf!@oR~DjQCVBBWs)4bYZ2sHXj|c zcfZUo)c^E*_d1%E!~2gR*dP5Xg#$4-$+0X1uC9|2gRRu=oxK~%G>X@x#9bTP(2MoE zMaG)7!F9t?%j@2cok@t#;z#@8VylSNv2UpqGek+(a=nS2N3W&SV}u<-h;`n;KC2c4 zVBU9i7`AfntIJF>bD}lLf&k2)G+1Dny1brsYSJhxkevWG<8IhEog97o4-8N8=r3aW zqS{(lMbd|5#;NSfjVspx9pyG>%a3AqW;sXCLM+!?>>RRup7Z|^GrqqA0000000000 k0000000000007bW2hu2bt``mceECxA%NC@=KO5PN)a~006Mu*X{(ma?bU~lu~b> z=BB6k-krdJU)+?^qpL3>uiXiplXFffm4UCGfcl|1f;JM(!x|uFYEtpK%5@~?d^B%K zjweKKK(pMoj&`>a=`}2f=nc3&W&@7;TJ)FjBwOX+bua!%1LXHyZ)gAD6A=Iaz<+aY zHPl&s^j88VBjwAY6HymcaTO_RM|QWF+{$uOVV9Vi+4d5?#QAY=H_iXi{D$saqK^2- z`U$I`iZqY4hs@;T+xbK6${2B0){bGjW$EpWD@I=nlK$jy@wD~S)SPWp0&>stM#KiF z`qnktn7~argloX?Ce@q6c@GayW&fqKUaSVp46%>TMIZD=KDq(Jmz%U6NxNw#(z}PU zzx_B==dWh@`bH+tpi=Ucm%nqBL5EngU7%ZJs=rL5)Kq^ldax6-&`yIQ(}P=4UH||9 m000000000000000;5I*KhEcWaAKcsk0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-create/00011.png b/tests_zemu/snapshots/x-op-manage-sell-offer-create/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-create/00012.png b/tests_zemu/snapshots/x-op-manage-sell-offer-create/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00000.png b/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00001.png b/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00003.png b/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000YxAn2xicOe zK=nXI3LCwfC%c zu4_L^>p>~F>xJc(K8Nu4A! t21}7%0000000000000000001BnP2x_YbZJxOB?_I002ovPDHLkV1iM3(bxb0 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00007.png b/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00008.png b/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00009.png b/tests_zemu/snapshots/x-op-manage-sell-offer-delete/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-update/00000.png b/tests_zemu/snapshots/x-op-manage-sell-offer-update/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-update/00001.png b/tests_zemu/snapshots/x-op-manage-sell-offer-update/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-update/00003.png b/tests_zemu/snapshots/x-op-manage-sell-offer-update/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00001BuhO+OO%>p^Cpu)>jvv%meHr{j8r;o_xSW}vRN-kHtfA;>+Ag;vd3!3C%`#>< z-ui|osqAgJ@15j%T#th;xE>ez*s!Dfn07+FPw4$uA*TFSm(?!Z@;5lK^xo0%fI=JV zoY%X3xvExu+ut(Vxb89&!@3#&c{Fmlmdd{sy1H!R>R{Wy-Yabz-n>qWnxPw*zwTl|uJ+>)ejkW}Eqfe=?`(Mfo1X q8J#*N!Kx>E9K&10fnkXZUOeNKoa1s(P0%$RB<$(x=d#Wzp$Pyv62#>I literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-update/00007.png b/tests_zemu/snapshots/x-op-manage-sell-offer-update/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bfcaa634c7126c841292931e62169608cadf2c87 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QolW2978JRyuA^a*KEMU5McIJ zZRh`qMbm2)Tmw&OOpTIBe_!i3n?L!uTGDL>h6iQw7a3!Mvft)=YX(l-bGN*NK|ezC zz3(z6o~*Ui={9jZ+-cKRGE|%S|4R73TJ&+vM-?N{1?S%z8HqmV`nmm2!d9j?o6gMF z4QJ$Q_g`!3y6FEzk@op&!R!+p*1hFFFf(z%_xX}-_vOQvRY;zxzi!%p_CDiv)wfeixehG<^1Et>MNILg949M<8xajR%Y5z6wrk!$;`)7)`o(8e zGnV}G+4ScAGli?0>Wxi1Qn*|{$@Qu11^O5YJ{ayl$Ta`i-n0#3AQ4YjKbLh*2~7Z# C`htD{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-update/00008.png b/tests_zemu/snapshots/x-op-manage-sell-offer-update/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..4a19f3bf3c27a296fa55addafbbe8e4c07f215a4 GIT binary patch literal 598 zcmV-c0;&CpP)&u`}Mv;iifc+)|Q0Ek%T#QXU@ZNLDf$7xQK2`3^k0zd=&b~L#==N#AdH(^px zN{M;@ikx|f05hN-<6q!+BESrwu}>dKNb+wA2><{9007XaccB)EsK+87Rh2&|61~XY zT=^EeC=Ubd527B$BT9Ees=AU^M|Oqo0G!+j=bXh2R7>tq<;JdUvg>6#VcM^fHMOK< z$ooE3V$GHkU-RXGA25aG#L*PgDi!5ERo(hsdAGSGH|jWN06QNZg=JV8M=iNSm9crL z$C39&tzFOLBCM1;2AbH!(&Ny(&Csms!e@XnjMSf!@oR~DjQCVBBWs)4bYZ2sHXj|c zcfZUo)c^E*_d1%E!~2gR*dP5Xg#$4-$+0X1uC9|2gRRu=oxK~%G>X@x#9bTP(2MoE zMaG)7!F9t?%j@2cok@t#;z#@8VylSNv2UpqGek+(a=nS2N3W&SV}u<-h;`n;KC2c4 zVBU9i7`AfntIJF>bD}lLf&k2)G+1Dny1brsYSJhxkevWG<8IhEog97o4-8N8=r3aW zqS{(lMbd|5#;NSfjVspx9pyG>%a3AqW;sXCLM+!?>>RRup7Z|^GrqqA0000000000 k0000000000007bW2hu2bt``mceECxA%NC@=KO5PN)a~006Mu*X{(ma?bU~lu~b> z=BB6k-krdJU)+?^qpL3>uiXiplXFffm4UCGfcl|1f;JM(!x|uFYEtpK%5@~?d^B%K zjweKKK(pMoj&`>a=`}2f=nc3&W&@7;TJ)FjBwOX+bua!%1LXHyZ)gAD6A=Iaz<+aY zHPl&s^j88VBjwAY6HymcaTO_RM|QWF+{$uOVV9Vi+4d5?#QAY=H_iXi{D$saqK^2- z`U$I`iZqY4hs@;T+xbK6${2B0){bGjW$EpWD@I=nlK$jy@wD~S)SPWp0&>stM#KiF z`qnktn7~argloX?Ce@q6c@GayW&fqKUaSVp46%>TMIZD=KDq(Jmz%U6NxNw#(z}PU zzx_B==dWh@`bH+tpi=Ucm%nqBL5EngU7%ZJs=rL5)Kq^ldax6-&`yIQ(}P=4UH||9 m000000000000000;5I*KhEcWaAKcsk0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-update/00011.png b/tests_zemu/snapshots/x-op-manage-sell-offer-update/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-manage-sell-offer-update/00012.png b/tests_zemu/snapshots/x-op-manage-sell-offer-update/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00000.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00001.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00003.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000;`C48){ch6J+mQp1FO>7QA51Bp?)z|tK-JH1B=)73#J^gIzxsz`F zVSl}n^ZEVPT?UzR@MQ|2Ci;sp20LAbnlV_Q5@g0;D#8l@000000000000000002z$ Y27|D2Nxs%Ef&c&j07*qoM6N<$f;m~@Gynhq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00007.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00009.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaecbbe0d15dd61ff6703fea051485d9dcbf6a5 GIT binary patch literal 504 zcmVk* zvs(LbIp;H9*NboS_jCYN=H$?YwUXmF#8fEXu9$gaejn`HaV4wFS6L`>t<#!bbFH&q zt97$2W`OxqO|PlZX)?bS?5nrdI$I3Dxm@I&#cEK#b@DZ~hHSD+@3;h+snLaz42m@; zSnEz(97A=Q(u_@5RH@CU-G&4J0N@+6kD<*|oq5hP+X)^qMLW)y^~qAl&>OJ+KPXDh zx8~P^A$2Hkq?jN1CFMuK`wGoqf-lAbuHBT4bfoJ>Zt*t$2~YWxqJJ!Va^kGrEP3CY zdqK`zs|Eee%AjvG_l9Sdyr0~1X}VS_zsleMh;Yj;gMnV{=tknb*Y*{&J28Y^0k1PM z0P(oR7BYOn&5Ds>@Y_#roaT_%BI%l)-2>2-#OZTGF0y|cHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00011.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00012.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-empty-path/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00000.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00001.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00003.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000;`C48){ch6J+mQp1FO>7QA51Bp?)z|tK-JH1B=)73#J^gIzxsz`F zVSl}n^ZEVPT?UzR@MQ|2Ci;sp20LAbnlV_Q5@g0;D#8l@000000000000000002z$ Y27|D2Nxs%Ef&c&j07*qoM6N<$f;m~@Gynhq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00007.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1b11a7c4b3edc7c1845621afecc2498d0dd161 GIT binary patch literal 920 zcmV;J184k+P)c_+&W5cP zzMb^}sEPyt0KnHHAM5Jol2vmG9aHR5>QstxX{cQBKiXfx8-PU_XOpP|JP{6uEi$MZQ;_5G z`D3b=eyH(gtyy5FzWLo&n-uJgCxtbAE zfg-RIjKP~A3%$vplQ9Nck=;A^Hk59gt@@Vbwh6mDP+*~KLp*rp(-bl*3h0qd(lP5N>h zMpe~MdlE!ffT|V8-N;GtlvtT$(PQm9NGrjfNO$L-nK%jlGK!^*>&eiMdz zsx%TY>rnq?+!Tqgwf0eUs@f$*H2aIm7nRN_{3hhi_KABb8^t*5(jr!C)x12bUYuWu z8$V5qG{%{dPJPQ`u%^YVg4E?K)pgKXXaLykh)C_(a uMNsC*>92GS3`Sy+o2dW*000009OW+<&Qu}gpm@vx00006%X7RLGZ223d>5y~JrXZ}dBbG;F6P5ic+#^qXPHWftlZ=D~GeC^W>Rn$Wr<$adeWkfNr5a0uo8S^eDj-pIX2We)+1OxIG_Zr zTM0xT=s&z3Bpk)+Qc)$eW>+rkG(2hxRh_2@8<&zr0~v74BqRHmQAstje=+ETouCTs z1ncllbb3AChK9$%Ka1l!vs>@14lufo4uzB7cb;L%S8w>oRUpg7j$*y=FV`j1u&Zc}54EKlK&pbJkr| zX#X0}<;ad$Gpa%|_NGDt00000000000000000000004kD@CyUu8r4MX$cF#`002ov JPDHLkV1f!X5SIV| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00009.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaecbbe0d15dd61ff6703fea051485d9dcbf6a5 GIT binary patch literal 504 zcmVk* zvs(LbIp;H9*NboS_jCYN=H$?YwUXmF#8fEXu9$gaejn`HaV4wFS6L`>t<#!bbFH&q zt97$2W`OxqO|PlZX)?bS?5nrdI$I3Dxm@I&#cEK#b@DZ~hHSD+@3;h+snLaz42m@; zSnEz(97A=Q(u_@5RH@CU-G&4J0N@+6kD<*|oq5hP+X)^qMLW)y^~qAl&>OJ+KPXDh zx8~P^A$2Hkq?jN1CFMuK`wGoqf-lAbuHBT4bfoJ>Zt*t$2~YWxqJJ!Va^kGrEP3CY zdqK`zs|Eee%AjvG_l9Sdyr0~1X}VS_zsleMh;Yj;gMnV{=tknb*Y*{&J28Y^0k1PM z0P(oR7BYOn&5Ds>@Y_#roaT_%BI%l)-2>2-#OZTGF0y|cHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00011.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00012.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive-with-muxed-destination/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive/00000.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive/00001.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive/00003.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000;`C48){ch6J+mQp1FO>7QA51Bp?)z|tK-JH1B=)73#J^gIzxsz`F zVSl}n^ZEVPT?UzR@MQ|2Ci;sp20LAbnlV_Q5@g0;D#8l@000000000000000002z$ Y27|D2Nxs%Ef&c&j07*qoM6N<$f;m~@Gynhq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive/00007.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive/00009.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaecbbe0d15dd61ff6703fea051485d9dcbf6a5 GIT binary patch literal 504 zcmVk* zvs(LbIp;H9*NboS_jCYN=H$?YwUXmF#8fEXu9$gaejn`HaV4wFS6L`>t<#!bbFH&q zt97$2W`OxqO|PlZX)?bS?5nrdI$I3Dxm@I&#cEK#b@DZ~hHSD+@3;h+snLaz42m@; zSnEz(97A=Q(u_@5RH@CU-G&4J0N@+6kD<*|oq5hP+X)^qMLW)y^~qAl&>OJ+KPXDh zx8~P^A$2Hkq?jN1CFMuK`wGoqf-lAbuHBT4bfoJ>Zt*t$2~YWxqJJ!Va^kGrEP3CY zdqK`zs|Eee%AjvG_l9Sdyr0~1X}VS_zsleMh;Yj;gMnV{=tknb*Y*{&J28Y^0k1PM z0P(oR7BYOn&5Ds>@Y_#roaT_%BI%l)-2>2-#OZTGF0y|cHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive/00011.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-receive/00012.png b/tests_zemu/snapshots/x-op-path-payment-strict-receive/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00000.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00001.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00003.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000bXfj|`@bpP+ks8jjVu~ zUvCeoJ)ipDZJxaL&^+X9L>Bjt*gp}y7SvCwMm8zE0;iyj2S8;QsYuJl77qq?9e^!5 zw+CxLFwrKIs(PwtGByjTlbc1;$r{0giuF@fJDJ{}rqI>&{$z~7N@SsxScg}#-Fvqh zs=l%KD7;yotexLH)On^2xK=~$kKF$HnrcV!CcXBtczN|yI%}<*wob!lU_FuhP5MnO zMc6r#7jSClMDScx0|wxJ-`Qb!)LAzzzS#SgA<+&PfILw?H&axmmU`#1MyFbb+st{85W%Dx!gE%4e%A;^|afziTyd%*2zNlDa{2=P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00009.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..618d903846e1aef70095fd20e91a24f86990d329 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>A$>EaktG3V{f*uEA8o`$(+ z@3s7vKe_wOVU?Dp_9Dj?&8)dUSxI;4QjM<`Kurt`+diKPuAP^@S8r*|isHy<)0J5- zqU^5hKj8n3;q4K1s&G|d&{@mu!D^Di$hIwl)jb8OOSLO4$&uhGvB!>FmR@XFm zDXFk>a?anYW@Y=rian;vdg;!XHCN!Jj3?1|Q3d zKNmGPvnjk#jy#%^uUxgH%K{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00010.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00011.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00012.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-empty-path/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00000.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00001.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00003.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000bXfj|`@bpP+ks8jjVu~ zUvCeoJ)ipDZJxaL&^+X9L>Bjt*gp}y7SvCwMm8zE0;iyj2S8;QsYuJl77qq?9e^!5 zw+CxLFwrKIs(PwtGByjTlbc1;$r{0giuF@fJDJ{}rqI>&{$z~7N@SsxScg}#-Fvqh zs=l%KD7;yotexLH)On^2xK=~$kKF$HnrcV!CcXBtczN|yI%}<*wob!lU_FuhP5MnO zMc6r#7jSClMDScx0|wxJ-`Qb!)LAzzzS#SgA<+&PfILw?H&axmmU`#1MyFbb+st{85W%Dx!gE%4e%A;^|afziTyd%*2zNlDa{2=c_+&W5cP zzMb^}sEPyt0KnHHAM5Jol2vmG9aHR5>QstxX{cQBKiXfx8-PU_XOpP|JP{6uEi$MZQ;_5G z`D3b=eyH(gtyy5FzWLo&n-uJgCxtbAE zfg-RIjKP~A3%$vplQ9Nck=;A^Hk59gt@@Vbwh6mDP+*~KLp*rp(-bl*3h0qd(lP5N>h zMpe~MdlE!ffT|V8-N;GtlvtT$(PQm9NGrjfNO$L-nK%jlGK!^*>&eiMdz zsx%TY>rnq?+!Tqgwf0eUs@f$*H2aIm7nRN_{3hhi_KABb8^t*5(jr!C)x12bUYuWu z8$V5qG{%{dPJPQ`u%^YVg4E?K)pgKXXaLykh)C_(a uMNsC*>92GS3`Sy+o2dW*000009OW+<&Qu}gpm@vx00006%X7RLGZ223d>5y~JrXZ}dBbG;F6P5ic+#^qXPHWftlZ=D~GeC^W>Rn$Wr<$adeWkfNr5a0uo8S^eDj-pIX2We)+1OxIG_Zr zTM0xT=s&z3Bpk)+Qc)$eW>+rkG(2hxRh_2@8<&zr0~v74BqRHmQAstje=+ETouCTs z1ncllbb3AChK9$%Ka1l!vs>@14lufo4uzB7cb;L%S8w>oRUpg7j$*y=FV`j1u&Zc}54EKlK&pbJkr| zX#X0}<;ad$Gpa%|_NGDt00000000000000000000004kD@CyUu8r4MX$cF#`002ov JPDHLkV1f!X5SIV| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00009.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..618d903846e1aef70095fd20e91a24f86990d329 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>A$>EaktG3V{f*uEA8o`$(+ z@3s7vKe_wOVU?Dp_9Dj?&8)dUSxI;4QjM<`Kurt`+diKPuAP^@S8r*|isHy<)0J5- zqU^5hKj8n3;q4K1s&G|d&{@mu!D^Di$hIwl)jb8OOSLO4$&uhGvB!>FmR@XFm zDXFk>a?anYW@Y=rian;vdg;!XHCN!Jj3?1|Q3d zKNmGPvnjk#jy#%^uUxgH%K{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00010.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00011.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00012.png b/tests_zemu/snapshots/x-op-path-payment-strict-send-with-muxed-destination/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send/00000.png b/tests_zemu/snapshots/x-op-path-payment-strict-send/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send/00001.png b/tests_zemu/snapshots/x-op-path-payment-strict-send/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send/00003.png b/tests_zemu/snapshots/x-op-path-payment-strict-send/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000bXfj|`@bpP+ks8jjVu~ zUvCeoJ)ipDZJxaL&^+X9L>Bjt*gp}y7SvCwMm8zE0;iyj2S8;QsYuJl77qq?9e^!5 zw+CxLFwrKIs(PwtGByjTlbc1;$r{0giuF@fJDJ{}rqI>&{$z~7N@SsxScg}#-Fvqh zs=l%KD7;yotexLH)On^2xK=~$kKF$HnrcV!CcXBtczN|yI%}<*wob!lU_FuhP5MnO zMc6r#7jSClMDScx0|wxJ-`Qb!)LAzzzS#SgA<+&PfILw?H&axmmU`#1MyFbb+st{85W%Dx!gE%4e%A;^|afziTyd%*2zNlDa{2=P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send/00009.png b/tests_zemu/snapshots/x-op-path-payment-strict-send/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..618d903846e1aef70095fd20e91a24f86990d329 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>A$>EaktG3V{f*uEA8o`$(+ z@3s7vKe_wOVU?Dp_9Dj?&8)dUSxI;4QjM<`Kurt`+diKPuAP^@S8r*|isHy<)0J5- zqU^5hKj8n3;q4K1s&G|d&{@mu!D^Di$hIwl)jb8OOSLO4$&uhGvB!>FmR@XFm zDXFk>a?anYW@Y=rian;vdg;!XHCN!Jj3?1|Q3d zKNmGPvnjk#jy#%^uUxgH%K{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send/00010.png b/tests_zemu/snapshots/x-op-path-payment-strict-send/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send/00011.png b/tests_zemu/snapshots/x-op-path-payment-strict-send/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-path-payment-strict-send/00012.png b/tests_zemu/snapshots/x-op-path-payment-strict-send/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00000.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00001.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00003.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000>~8(Z2m3{Ip5oCk7KET2Th_*e_;4>0 zIs^DK`}=*|L!yS|i$SOZ?y*mn)*N}wD5S(_J$!Sy82a82kv7KkUx0@H&Layo0000G zgq;l~n=>UpBc>u$>zm=we76wn4D<3br+u0m~9`F4oTal1>GN~oh0iHl+ZZ5Nurai0J z1~Z6@CTfM7s*g~6Ohfro*{HQiv6tu6s?9_1haog_i*}y`e6W(~Q3xm)oeUpLg?I0Q zv!UIXS&heXkbpCuS9mALh5|PvCs>;S8x8+!qZx3&#Fs~=&tMw|I9Z#&>)R07*qoM6N<$ Ef&z**z5oCK literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00007.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..76770bb568ac3fcc2c7adc0b7daec1a011b9b209 GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Gba4!+nDh2#U|)*@PeWqb zX7i8#+#l)vc1ZHbycn8U_+$U_&gKpgu7gv6ni$IE|GPh%^ZowqZL#YX?lphDC;rZS zrLL>rx23+4s`*o4rxW@<-X?ByMc0nFE7xxu<^Eh)XDgqU`P@aa^A(3}@IujBzbC&h zyl1>1zo=;MwYbM9ki7HVyMNj7FGK`IO+EZw-)(9T+46kaLe7Ui z2j*Pfd#aQz;`Kwx>q;u`g0wqhdG>5y_-aMC_`{I1Q~f*xH_tk9yXuNjW>e3Xr1sSv z(WIO`Yth&51@Ar|Z=gu9`%AA|GiZ$t| z%(1J}FVdQ&MBb@0Q3aK6951J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00008.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00010.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00011.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00012.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum12/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00000.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00001.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00003.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000a?AW~9Fw>!fX`yT-(M7=xB>XgeX_Nd)Nf`XvPl2{0001hP}tQ_ za;H~HF8uWE>8#waM9Zcgj{wi;#E$Zar)7}(_TTzQY3b_hd3;ij$BsC<*v(_#B<@8l z2)xXKd;?83Rzn89wb_`wvuf4I#1KlZTx%a!qItj@qo0QN1coLa;xGYAx&a9#aGl`2s zv^sY^K11s@4dbhdx0816KE9i#Jb3>Yg2-3s{!btVH`$(rfP&#<#9%Ajy+$?EEF^ep znf0e)qhhDk-~7nglM8OWtY0}Feehg6d6gGS2(4cimK(_pR;Gb%P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00009.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00010.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00011.png b/tests_zemu/snapshots/x-op-payment-asset-alphanum4/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-native/00000.png b/tests_zemu/snapshots/x-op-payment-asset-native/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-native/00001.png b/tests_zemu/snapshots/x-op-payment-asset-native/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-native/00003.png b/tests_zemu/snapshots/x-op-payment-asset-native/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-native/00007.png b/tests_zemu/snapshots/x-op-payment-asset-native/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-native/00009.png b/tests_zemu/snapshots/x-op-payment-asset-native/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-native/00010.png b/tests_zemu/snapshots/x-op-payment-asset-native/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-asset-native/00011.png b/tests_zemu/snapshots/x-op-payment-asset-native/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00000.png b/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00001.png b/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00003.png b/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00007.png b/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1b11a7c4b3edc7c1845621afecc2498d0dd161 GIT binary patch literal 920 zcmV;J184k+P)c_+&W5cP zzMb^}sEPyt0KnHHAM5Jol2vmG9aHR5>QstxX{cQBKiXfx8-PU_XOpP|JP{6uEi$MZQ;_5G z`D3b=eyH(gtyy5FzWLo&n-uJgCxtbAE zfg-RIjKP~A3%$vplQ9Nck=;A^Hk59gt@@Vbwh6mDP+*~KLp*rp(-bl*3h0qd(lP5N>h zMpe~MdlE!ffT|V8-N;GtlvtT$(PQm9NGrjfNO$L-nK%jlGK!^*>&eiMdz zsx%TY>rnq?+!Tqgwf0eUs@f$*H2aIm7nRN_{3hhi_KABb8^t*5(jr!C)x12bUYuWu z8$V5qG{%{dPJPQ`u%^YVg4E?K)pgKXXaLykh)C_(a uMNsC*>92GS3`Sy+o2dW*000009OW+<&Qu}gpm@vx00006%X7RLGZ223d>5y~JrXZ}dBbG;F6P5ic+#^qXPHWftlZ=D~GeC^W>Rn$Wr<$adeWkfNr5a0uo8S^eDj-pIX2We)+1OxIG_Zr zTM0xT=s&z3Bpk)+Qc)$eW>+rkG(2hxRh_2@8<&zr0~v74BqRHmQAstje=+ETouCTs z1ncllbb3AChK9$%Ka1l!vs>@14lufo4uzB7cb;L%S8w>oRUpg7j$*y=FV`j1u&Zc}54EKlK&pbJkr| zX#X0}<;ad$Gpa%|_NGDt00000000000000000000004kD@CyUu8r4MX$cF#`002ov JPDHLkV1f!X5SIV| literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00009.png b/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00010.png b/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00011.png b/tests_zemu/snapshots/x-op-payment-with-muxed-destination/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000P5e1DQxh?BIismQ%dtT zjh&A5#T*{C6M~#G9S^(o>nNbXF~0mvKdlTZzlAyHlu}7*QGvFl%FHH}P*Zx2i`JMY z`VfZsoM~)<`B%m!&TMJI6pE1|7i}^-cMR-K-fip6%{YWH99IB?O--#J=2w^5B5~T& zn?o32UjQh|1U;qm2A8_JTNPvXEvO*w9!tzNC3f_~mB$cf15i@694f>eQ_)upTIAR7 z<>C?J-XTOGx_=e5!yAUMZwmq<2*3}1I~V`}yqio|Vr{JV`L5>?-EjA9?IZYPrQs~g z{h2C7&{`v_z?4g+9!Z-R%a+&gDPTP^p{S{-i4voJT{~HMpb}R=*NW;2Fi?DU@|LfFuGDDWIgKv`6*Yb9qi@QLw{fP{Y-m3nSo9my8|};| z64^_U;(Go!9R|uck4{h=D8h^e*@|wATZ%WJD$9 zx3Q{I%b%)JdbNt$aeewdNnI^r5=%Mgl2WNz?O}G5B9Ca_iE!_P#k^aUjAtLeMYaau zMeBN7sE)0G5{%7R8Ep}q`8M<>)I^-(wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00009.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00010.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00011.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-account/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00008!M`F6MBzoe-pyXnWY>x{3lC?Bi#h>C(!eAvqgsZ{~0ONE(DT0%|Pb6mB? zJh7Y5&EFAa56r*ZHnnH73KPgia=B`g*?Gpm@8qK^gPXGneJor74AwPLK%HMrW^>7+ zm|kr{2m1zqVsubxI&W~Psk&KXygUSD)aWtAY_-IXy}4S^gwX-WQ#EfY)QD-w8wNe) z*XMFsF~+S;h(dJ#1k&LRP1qNLfC>iSmvs>g007=iB22N?SNnL?$3}3jjT|WG{n>rr@YLa%-m3^E1>CzEVOOXzvRb} zt>`aoQuN4ogbMEpP-kfOdXx#vlBpGG23h-D`6j#rpr$9g-I5{8Hr1M{v`t-IM+J+< zpzTZ8?uh4Kr>_(Hw1bZ1^CEBg3TT=d)iisxd zi$2QFW3|NibT8GrDy5@w=3bCLwUGYbFzo0ERo8j_Yunl6u`^+uzCLWdnmE1F=>$)o zw{Zqg+%0Qi%pS-!Q35#4R< z8vq&#a^gDw_53i-8=9h!-1(@dhE$$ay6qjXmB=&k6u6oQ0000SVrw>3V(dFhNl*oEsjzXDYHFW9_|paal)a45y(n;>Rv3AYVZkI2>cYDo;+&=<2mrfm&D i#%C7*0002MUj6|&+bhgso!u({0000*0GB zm#*9hH+Q=kpn3a@XqJfXIBI;}wIfm88dpYLh4oYwNDDe%zuKI^?um7NRTT{ER-@AK zyr^kNb#}~t1E`~^w1;}yG-eO=Yn*cZbZZ|?hXOXzHzT9=%mSz1pc-0NS#swF>fT+A zo6yA91|UuYG;{9!+LHOkZV*{fZ+#AAGyDin15C~a&*8Db2d5yp2FQLSZFcSV7hpxb zB6ck`ZcjHJ0k3g%5hjEXLJ0XxhJPuKzuh*j4CyeEr zOV>&7maA}#inWI4##_%Gky_nDHL8Z5f8eJlS=`ppoBrs^qD|Q>v9{;!&Qld4TB%*e z9RZ;1ZhKSh)e%szAH)s5XM^NKlJ-maZBB1lt&+|NZMgqB17J=fpC+aVTdFo0kp8!- zuZ<>GUAM#DV!Zd)(Ya#nEz+;w0InXHwLrN&4zCCiYjK(kAkHa;5<&+DMJJZ8Ohjb-diP%ewIKukZl7100013&X-3yrBr_1_g$A% z1VSjiSYk^lpB%3x%E$2ghdz3{q4`ko>WYnHjWJxM zX*gHC?olj0WlIPlxCQCW)FNQvif&*D=8D1xw4jTqv%Fxp7cQC}W5WpB0}k@k?oF1V zKu=gK9is)ISX&m4kmdCTC={Rk9{600C0t&&DLpm*t*JJvg1~t)DXSp=Zsa+lxVQQ5R$QAPQke5!q{bDtAh;9xu;F zn<%H4L*1tMBB|OmPkChcCkR>Z^ZnR6*}9CJi50a3t(w*%^k+R z?UY!yN~a4&*Z625mh-q~d3{g+K)OjL`^#vgn(Qxz8r%t8=uQSnrUsWndI4T>{X6=0 zJU`9A%T*U3YkA^Xke#HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00010.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00011.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-claimable-balance/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000W*wnNN;`$mgTO~m` zy*mU4&jo;@OwiqOe!!)n?pDP(JOx$6?6JgbS7Jv$Tty6FHUM?0) z_h+gUL2Hey0#h%QdL(UPEL$F*Q^0y;LQzvu6D3Cdwsx}eKqc;gp&zYKw@LqMACB~f zcHvM%i@qaOSa*Q9Lf!kZEm+=}iYPO*y|2|D!WsavJn43;OTta(2#Uej zldwJ!*S|(z7tW~zNAWqxTfPH^mPYr^X?!WDsOhPXz9}=_#+h2Tq5X7V(eF%ewlkkd zW+yGa-Rfi>7$vixM&AUr%%fstcGd3N-Z9vn?X%Fc4)M=Y%z(g{_0 zEEfw?;w9kN>o#KTNR+HC=q?2BgkL6I03OH>?^Zz==>lM(2B|xhcFnhV=iAVErXG1R zv1k07*qoM6N<$g8EDw(EtDd literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00007.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..62df48067308296627aef7a309dd57c5d626c4a3 GIT binary patch literal 899 zcmV-}1AP36P)wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00009.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7f929de12bdfdb04ecb7d122253c3f15829730 GIT binary patch literal 667 zcmV;M0%ZM(P)v2oMnTp1<;vO9UYroE`@N000000Mq$t_6#A=KhN{* z4klH;G_OA$^?7$xoOefClGwO=EuUu37)KIWmJot&a2H8bQjq*spq4$C_S@_!L8D1x zjTgXeB&p=rtm9?I#i@a@JIm$x(z^mU=a+*m=h)6|n#C{TR7rCtd1b?^z24fZpp0Ds zJvP_9Y}_J>9kmTmHvRbKBdXx6 ze;!a|{koNs!`w+Hz`p2`6vWR0rMp!zvz!-ZkIQRC6oX`G((q|NMNoM?(QBgbk#fUW?^JAFC?(Oj0y=?Iq%H@veLoB-1tj5{sVhe-dmR1B zo;DV1qVJIc0000004CNfD?URif)}xyDZGfSSytRvs*W|wiu+1s8S-V^?iI?JQloOf z))mT`Qb@u#qy57s>0C|8QTCR1N&x@>000261b^3%odFu#=(GR;002ovPDHLkV1iA0 BDxLrU literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00010.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..5c300da852888c4c9f09b41987b5ec482ec5f5af GIT binary patch literal 460 zcmV;-0WJY_TzU;+Z1=AOSeNakg1;}8G<0D$ejh9gr-@@I^3x-vTR zmGk=PnBSf*Cs(IdRg(3QWn_j|eUF7@F-BFbqLfm*z$vm;#a_s)yAwA6+HTMpds1X zD`2L~HJ4S%R~xA=zWxw(^)zk?lbi>jy^Qvk@eK^!o#i!q`uQ(Gj=UC!$*5uyubaW_ z0OVC7FYfYSCXd(3+!_m%QMFp-wx~wg6WKDsbw&C(F3-o0eaLJ~TQ!}JnlzbLs-pCRSxYDeUEG)lR1Ow<&Zry}ub_ za1yJ~NjII$7%WBi0ssI2000000000000000%lraZ^^SV+rk#-h0000HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00012.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00013.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-data/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000@;1iWD+IoAaM00000z;V9TRg_Zb<$d4l zI*mqswwS|iJt-)q(Dty)I70~)`uK@c-CG&7{3$G@-1l84wJ1RAQemc(mQYpt92d1Q zPxL0Z`Ch4Pf%#Y4CiZNt!UU?4S}y8jdY&<`JNeXYgPXAlJ_1(&gLO?SAkMETwY4ND zrVpFo;M@REln&}m=L0THncFqS;UTCZMvpCOhb4COhpUJttPVh(s`a5ljF^hNqR>)) z{a-E-V?5i0EM)hup>_B`6V8PoAc6t-BQAmg0KmH`ge}^9*4It1Bf1gp+ukGiVy5A< zZ1-m=6+v^2ECW+7m3$D3w53JR(m+o zE7}XEDq7?np~AWX#2M;dk8Q%Trz#@N&|2RsKZSJw#Pp=wtu|!os%BG_x~j|dsvu|# z=1#(TM?80pzHaPO2ae=(khgpVOihj9&S`upsEFyIkG?50ZsSaBSkeA;V38kmZ?wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00009.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..b2883ac9749e8e56f0c06e210dd82c6b5521fa21 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>A#>EaktG3V{f=%S+v91fTL z${+okK4tHh!;;54yEr~xyjQ$0uZUBj<6uQBP!j{g>7PY*_4mtv$vSmRS7cd!Yu(Wd zrAYILGq&d1A3r~?+`;pGn&FL}XPS2&l^vPdFzMA7pCdw^twpKI^&vrfl&6RMoF3D6 zH)8t}d1k>Hvk$q|I?H)V{66V?|NSse>XmYF)3dNI#i~2a&iYJ$I@PZK(W(X$>r*pc zO+2i-y4Gdq(kHP+!ga;>R9DPq{;Om?IpQ3G+`a6rCK6Ufw`4l|2ejzs# z|Gl{z99GxHoz!0a|Jzw9h6Dc}o_pcNW!^4#|7!Ex4m-UfrY~)Neg8CbGqkmx*1kA; zYMmPAblv@>EcNYKYk19f3-6gF)I4wHo*KCYDL47-<~oF|oqu2+%bGh^rdV2Jd6%BD zPSE<~{_IQS+YaN0v2`(f=Pmzj7%Jvnx3o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00010.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1749fa0fb0ff9019728cf0d14a863f70fe9e21 GIT binary patch literal 973 zcmV;;12X)HP)7>;g@15Vn0J^#XxpuvYZ* z*UItQvPEOpb2XmS1epFiOK)y7XnC-T1hq)_wj*BSsZsUo7!cxB zi?L8tBOU>yHp9>kdz0Q9J;H8lHd(tF#3$f%uHixO_yLO|YkFM-gy7{{mz%5H4ae>v z!U_wQ=AL#4IO9dru86DzFN(z?3g6`OhX7`iGE zpQ-=pL(b**fOa+I&1Bv}@3-=-+I`-MZ#bQdn>|^3t2}mR(Mx-gFsrA~VQL7>W|L=n z0`mDq#+163**O3;!$aWJ=Jm`jL3d_&Ji|SeWmP#U}GkHJ&sb2V_zf zc)fQl#sXsuf_RlHg;UC(W93Mfm>`gzeK1pIKQ%|couz|b|%xX;Ac4~ zCpcN?iBqQWl6u=MDQ-soviAXcO7fgG`ov1IMQ4)P+Miam)_P@#vmF3G-+;6a7E&DiTOb>ay)MR7p1A|k6D>7{0iA@ z=tbOb{UeL%m(WE{3y)?UA<#kRO8vG%*+D vaL)OKDR+Y@6+bYZFH&<*6h%=K#f$k1%$o3zB7P5@00000NkvXXu0mjfXD`)h literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00011.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf1a8330ad8ff7c393a741ae35eb6906f4db79 GIT binary patch literal 533 zcmV+w0_y#VP)di$qJD`PevNqImeax43JkUW}F-gcLr z8yp@4t_BeM?^Sua#X+OwsBS7T$koc|gJ$kJ=beJmNN=r0_Uc}`rFEG0dy zD;ggG#;SCe<>9VWFN`gh`fS~V-7+5I4G=q5_dzgx>7k4zTbCFJ(pqoQ>2(lsqTBG~ zJ)+2hb84Pg6XQ=);#*933VN?u-PRMw`%hR=^ov^t=|krS0CgAo6^vJm&8-c{lX=_Pn&PyR88{1AqFYabuI*)&Ry`Trt<; z&URfgfBj(DkLng%;pzW`?XTF3C1aK^?UF9_^ahCR`Fc)fjmjx#&oFeZg!U8{^G|-P zydPbsliqjrotJ7Rne1;Pq?+t+MjPCTS?ErkB+~{00000NkvXXu0mjf7SsBW literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00012.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00013.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00014.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-ed25519-public-key-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000@;1iWD+IoAaM00000z;V9TRg_Zb<$d4l zI*mqswwS|iJt-)q(Dty)I70~)`uK@c-CG&7{3$G@-1l84wJ1RAQemc(mQYpt92d1Q zPxL0Z`Ch4Pf%#Y4CiZNt!UU?4S}y8jdY&<`JNeXYgPXAlJ_1(&gLO?SAkMETwY4ND zrVpFo;M@REln&}m=L0THncFqS;UTCZMvpCOhb4COhpUJttPVh(s`a5ljF^hNqR>)) z{a-E-V?5i0EM)hup>_B`6V8PoAc6t-BQAmg0KmH`ge}^9*4It1Bf1gp+ukGiVy5A< zZ1-m=6+v^2ECW+7m3$D3w53JR(m+o zE7}XEDq7?np~AWX#2M;dk8Q%Trz#@N&|2RsKZSJw#Pp=wtu|!os%BG_x~j|dsvu|# z=1#(TM?80pzHaPO2ae=(khgpVOihj9&S`upsEFyIkG?50ZsSaBSkeA;V38kmZ?wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00009.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..bfdef21d0d47becf99dd2af5afd42beff7eea6f6 GIT binary patch literal 501 zcmV&<3aZZ&c(*@eG5?-JA(`SHS4_9bXA&@@Sv0=59g z-=ec`TD^Stj;7dWK=!b-Vj9^g#-_}B$~gI)jg0gnFYoToO9oe7E{w!b{?_0x*agAE z`z5SsZJ(cX$?CuSV+{blU%B_NRqR$@wI8cu7qr;Lr=fSK9+b+<>ThKA?09Y~dkuho zyrX=0XGg7iuDb=EwATPs5BFP3{9p#3`9Gc6XS@Tl^RIOBvoNHqe8vD&4UU04s(T=+ zS@{6$8D;foPg#ZZbT51Xbke(L_HDNP4ruoNP1!#-9)NlP%VT;Q#$ctltU`Nw(R+A9 rq!$1H0000000000000000JzOR^x$&;>@O?N00000NkvXXu0mjfBu4DL literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00010.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..609f80a150750e104fdfb29125b041b168766d5f GIT binary patch literal 981 zcmV;`11kK9P)2pw8!2B^&al=JWnnw?Z@2>;sO5d2$OLgy57+lV8{F5zH-hH}tjgKa>LQ>7r*C;*&2l$vyMqi~ zNKDO}mN>uKSMDTX7xaBenYo)vc2B~9VQM_GPT!j%ilQi9fc^}SH9~o!u}TZmk6c_W zOQ@wsfB8siQ(F#WQAdXb<)g(KtlD^jddjyN3_H%@8rQj0*=ZHXBM7wNJFD&KPGIM4 zZbRvu<*Xt+wavc)j}z239@iz8qZ65)vD3Brd&Frr4Uk)!w!nvkC#fv-BoilB3@#<&UU_Jg>a0Vo6!d8D+_%Pq1yy_G(D2DQW>_4cT3Q11u*j0s8PL{0CKTi7JiX(f)f!>U9&7;D(2Rtxc1O+B zA`jQ53SuMU#W+>9Rf2E!P(jtcea*#LweFbsMJ1_V00QnL(rq9Q5oIf7N z;SAfY@vI`%K3!vsF+JOgrq`H9nD9IOWZtq<`s|50!IS;sbCKnuidLDryxnK|Nm2JT z&ha9Sqr6!7jx1$L)qm2bqdq%Zzpop%mTLx_^!`tcR_1Izlk$K{ue2WFAp!ZreY&~(j--H##xY#mDAG$sOz%yL92Xqxj*y5{PahDLJ zFW&l9Qc+zU+HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00013.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00014.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-hash-x-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000x&WHSsb9A6VA762%TPvfM-@=^pbzNmriwbqyTAA3aCABGij*Hev zBzg*NK4%(RAn}#l#GWlph(a+^fq-(f>IKPI>7D>>a z-c7;5z5%FFI;b_BH-t3gZq*ovZ$Sld_gG@KE3u;=t|C&H9e^@b%b`NtF%^Bqphcd3 zFPDfh9!=pCPLGel1KyCrzAXrdU;uuI+ra<;;N9ekCDwf2=UvYuh7lgy+DGuoO2e}( zk7ueBQP&zt1*ZH}>XCI5W7#tO?gHYG2t`drO_Uh*dF^E7fl6EfLqE7sw^?7}4@Y`K zyKtzXMc=ViSXY2JL*46<7c5(*BFYTh`&#`WtOFpHC*5K3ElW2wTB_7dCD*HhpfMPG z64pE7zG{qhVV^p16rY2lr7K`)YIN_M#+QPMn!febZ_13faiZ33Xg?iT^gG>q+L=$} z%m7M(;NN;StY~q?g^4oTK5VM000000000000000000000A9&AKYpo4w*W{a P00000NkvXXu0mjfXWBI~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00007.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..d875ff51f0e19b118a5a04b4f19918670a25042b GIT binary patch literal 924 zcmV;N17rM&P)VNan-atRd+)f5RENW0ss0CNd|g+fo7`HnLGOKOHse2R!Ugia`9aoU6j5 zOxv>I6;QH8F?fKhQ{sxC){JH{2dm+j8tSe%_X{m%u_v}yawKvh=>A53YydX%P|sDSd5jJCyJ;?4 zKD5glsi9{%b;&_107!bnKw5qlE+tYgbbW$+qBia>#Hg)DwAG?0ilQir;uBU4ZT~+P zM`2on3~5I=pJ>`xOw9$gntxIgJ+48zZle{`{`s`=!$_99o_#4I{a%kgTX1M~+FG$J zvrtfLX{tZf*B}20kDpBwO$up;X^|3C2kXzuBq63U8Yh{s${8_^(J8H&3%(WH+!-XK zz)1!@LUI5SXA5&c$r4hwOdoVs#2w~MNewacvah3=-v6Pby13(@l_~Xb~4Q=q= y>7J$T=c-bR9fSl|)m8d7Q4~c{6h%=K--~}i^n>eIt}A>10000A$>EaktG3V_}@4mwZ91eFc z-Z}E!e$soR?!Z77j$`{(eD6oQiV5({5HeQ7+HGE> zp;L5bd%V}g(uw^y?quaYt(WO9J|~;FDl3=OOEc@X;P171TW^_vUKlp#jOywu-*)}~ zW3?`1wKK~cCi`1$8JdzyB{;W7cDg^c>{j0VEKX*Rut5E5!8(Cd+x>!5uf15U_3`xP z{&(kA2E?@rUD)0pX67Pnoz)^Tp|zS5LLQ(OG-Jdb&NsfzK6JU8e=^H4V`|IqM;t zeqr?bym`)lf)C5=UCqDwPvlwCaKW|ad3V$1R$tq>{-2G~_l&Dke{gydU)a68nDxB>fwLENU#u$X=vnw`zkl)3jcY<`*1Coqs{Y^i zlYy_<=ZpVg4%3VFl0^loB@4AzvdomxY5f3-J`AAqm_Ky!_V+3NYBxc0p00i_>zopr E0OqXfLI3~& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00009.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00010.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00011.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-liquidity-pool/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000nNc?A762%?{)^2U&2z#d7gDqiwd+YRc1D+gqqUVxM+=e zq7T8%=S*V@%)dG|ab{~1rcjMkxoDHwxnf{<@@m^AH{%d|1nvL^o0?WZTwgfVoS!Sc>jM46%OeXafw)&Pj*Nw-^V%F<1ZmMV2qhwD{APz=VN zg!PHI?izhvIHwLA#pfVz`3@Lb8r^?R<4ZwBO;3IFO_}j;oT+si+D``-{m%4eJM)QT zcGBY8txo2FQ8N2!^i5F9JSs+JSM9#NI|gs(^;ziEbS4=w2&J9g1>c4)M63>7C~{q* zRB1vVabJmE6zbkGN)%K3!8_rHNfdy!3E}rGj<&|1Er(n@^J(HFmK1;Y4X=3XL0%aE z-{*+?zc;mzCfq1wavSvv*IEHdIugwfw;oqeo000000000000000 g000000Qg6I1Ciug_Oc<=TL1t607*qoM6N<$f)uUcw;ixx){hsI9mutVK!B#;uFX4Bsxud&>i*oyz=2VP_F3}a5g~K0OuT`2q zwdOn`YXVfhre1oXU>CU{tEgWA7kbu!xv3lK$~UK;7`)u-jKn`n{R(JPwV$>}EN)zR z>8v!DSK*rTSdxPJG3X1YEYycJNqM?ADNaE;=pWSYruWq$6%W8Q_r(UTrOy5mun@1T zX{|)Z;q(o*Onn#|GSdG{ZbWM>d^;suDMAP#q=tbSYD$cr?r0vnhKi%O6!{7q=}F$tk*}iz5M0Qf%f#ap z?CuTAs3f^9NkNIobd%bLnvsyiLMdN2CUOPn2+U^YM(`%$NscJL@1^k9*i3+;Ps~L> zxRE#S7S<8J>yrL)jeKG6$K~Z(A=)tYg}whQ9D^re7J8CFCvyyzqPusjhGMzVEXQi) zP(7XUXg1Vev2mdCdWHH8B5&V$+}Wu|^gpm@aC5WatjCD38uU2zH4+1G+IUh8Ek9)9 zlj9rI3(dj-&^e)YH=T|ocqzxM^jq_4Vnms!eY4e5L-z4fY>n+kMkF}2>y#%`>-R=L)BX1oa+;>j1QP>D@v?jx|-!h$uUasrE%= zOMP`HE@ErL%EOxY7KVDNHWD!l*z`|%kHiaG>!>6|E0+XmCh;fE#%JjiMBlp z#W?TMO}x7`^YW~Ev40`1662cqg#l9%)b~6FYkJHoNKMW%T?eg&20+Y?_+%*;#e#jR zYX)zjHsA=w4`ik$o!KK;1Qm`zf2DI^FcOd4OeKU6LI@#bD}Mp*77y^vR?X}H0000< KMNUMnLSTZ0^sUbT literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00008.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9290c968cd9343ae9690721f032d6fce35233e GIT binary patch literal 486 zcmV@P)eYK zoM==|c{e;!wD!F0?57v!8IYLiR?9ejp{{&0@4SN7^AoOeo&h;k%d`!Boo-ilPe~CK zGf0lpuEu`}Dq~ObUwrtv`9hluK&j6&{7f)|_-7LRqw9sE! z%U78rtCzT3zwy*m_GH0|^tHw!I-`;IatVM-PXGW2Va92w$vmwThl}~ofpXEfKDIR9 z3NQ8QgVi1$#8X}EDB^1Q{SvP;s2)=eP}ZisR@3Gon)aC(K@}1EAmL z%_Uo`!kx|PYjxq%Cfw=(Oj>h%le)I;&#-w9NS?V9tRZK>jF|U~??9b)KSfQw0q8sG ztT&g(J5E}AZ5pop;njP+cJ!0YF?jjtuSX1aVinryWRQu$R17Zw000000000000000 c001z}KXRlYXWDxcuQseM^GH=P?(!tqb7Xo1fWdv&!LV#eMJFFW&xT6%mT@ zTAA}**WFaYH!)Mor$F#MLwDhw=$PL}*D))Yor)6O$P)Qx-tG^3m`~;0^k1@nZe6)Y znp_qm1B1cIO4BWc+pZ+X2&|oc^~&;SIa_xxt5=tt?yuN(rFUAe62}++if607#0JgV zct2{wuT>A$C{5+{y1;wv(!#LWA14}KU(GyK;c9B`#F@zktuA7_SR%D{FBNmW#^HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00011.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00012.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-offer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000@;1iWD+IoAaM00000z;V9TRg_Zb<$d4l zI*mqswwS|iJt-)q(Dty)I70~)`uK@c-CG&7{3$G@-1l84wJ1RAQemc(mQYpt92d1Q zPxL0Z`Ch4Pf%#Y4CiZNt!UU?4S}y8jdY&<`JNeXYgPXAlJ_1(&gLO?SAkMETwY4ND zrVpFo;M@REln&}m=L0THncFqS;UTCZMvpCOhb4COhpUJttPVh(s`a5ljF^hNqR>)) z{a-E-V?5i0EM)hup>_B`6V8PoAc6t-BQAmg0KmH`ge}^9*4It1Bf1gp+ukGiVy5A< zZ1-m=6+v^2ECW+7m3$D3w53JR(m+o zE7}XEDq7?np~AWX#2M;dk8Q%Trz#@N&|2RsKZSJw#Pp=wtu|!os%BG_x~j|dsvu|# z=1#(TM?80pzHaPO2ae=(khgpVOihj9&S`upsEFyIkG?50ZsSaBSkeA;V38kmZ?wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00009.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..bc66f86d6417c55a083f9580a9255c0e808321df GIT binary patch literal 496 zcmViD2_FGt+xPj^?qY~RQ0Z|10002Ddl`>E&og}vA;hmC z1Y_7{kFkr?`$Ug2^XVXVZ_B}Dxn0g-u2VULE@?-m0VrKwo=Kb{X`&qB%(Iyk|DsQ+ z@?ZLNY}UHgK06U5=Lvsvhe>6jrIeY>J4-j6YBq98XH4Eh(@p&=|+hRYzeW}{)1_Wg}7%`ZWniKa=aG?+`E z|1LUur`6jx&uGZ}49G5)T24JriZRsmGi987#vnbt$gjJ*vy#b`UmY`l%!iLilQirq9}^n`3lOP=Q*yA zLdzq+c8fAZ6rlM3|#_ z+38DUER^KdS&0|1`*33tu zs)2t67`<68ZTD>A&qfXRv=v2i9|ryb=#y)?5j;O&RmPT@35OD#zWIGI%iXZ;b}~gF zF*OH0G5#s8+(^PM=;x9$bAw8vCt<)eH6B@~?@bX!Q4}v={R|LOxt8B~aS{KVbn;`T zScbHhlDIap<FGoIkO*8uzUL&3oT` z;ewHQXOR_M6}J_143?U&8USrC(Kh`PxoVk*apaJHj%f`NcI=+UfzQm zJI#vPmKrSg#h*(-+&iq+*pU!C#Mlz|W=k9hS`=zwax1a-0yqpXRYN1k&c)H=VxF~b z;o4eIy#K~kteuv*b?t*+pR2yc0I?FVt6^N@!LYxFu(Y&9Hs#aU%d4UBG4L@S zu;VAL{3O;^w=g{ef=}~D-jN-I_To>2)+<2!29(Bh**&}t#CPSG-S#O=MtMve9m(hZ z$zJ?NJTVkSQ4~cXWBUI9x`X7q$rJwTFF(pIzZS)JCPC33;Kt-F^?B+7_l1;$5?oJr_@+oKOip*O2++f=^TsKqO@}Pt=lzS)`wN^~Tsr`CF&YDhMRud#+Z$^k z=Lbv6ENzQY#ON@sC5-DxfJDtcfIrv)s-Yj*5D2k#eilQiryZHwenWf@QA@TkI00001=(S+?wue~-ir80r1$ch$>P6utm48d?Ddd;D{wjWt`Yq%xopS?m2WNEyv2-}jWx z1BMsD&;W?@_pGwJ#YJQEQ9D#(kh6`k7tP%F+-M5QD_wgR^*8s_Bb9l~2%;4e^^_bL zT~T}mbT-9(Er+L4`(o6bnzQW?x@AVh2jG}o?nW@Z*`Yd1YE=Y+Xz!bRdmBVdbPIOg z5mhe?rsjz)>HOD}_&p}1>%j6~Q9GI5UqHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00013.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00014.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-pre-auth-tx-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00002YJzJ1cqWxiyaSd&#u#cZO)wPvD%X48$={(OesZ{}5mkKkTw1ld%=eVkk zSz>pgo9~gz9+-WlZ|caFDomg#Ddnn8rYHNrZ)C13gPXGpeFUxm1{)eFpw6!*wWTB| zreAiUgLMv|7z0$B&I?RxYHpT~!$VL(jUH3fUY7W=H&+o|7+k6XL23%lDVkOnX4!nzOyRN#OYaS;pv0G>@EOwrcY`gqghsAh!QHunfVm}$6| z>GlkzB51CWWnjvqk&mQRoN3GBeF#{KtWcFS#MBa}yv&`<+)$}2py`J!v~|+IEX zorLXy$p1QRoj9f)bR?gHtmP}9X=+@)Ih~h+hL|1t=uMgPHO|B?EBbc_9{G#m-EGgO zva^vM+p01(|LRpdNdb<3?GCdhj+raq5igw(_AfY zqvn?mvD>TZl$%=hFC&=~dJH~p`7Wr|vD&yxYIU0it0uhoR`UPe3Ez7ZFD!Dv^o1NZ zcIl7&811KfK222dANpsdNM%lNP+ge-kVULF!_6)}oL3 zhd)?(?g&{ca)bLBOYNygylAtx3qb$?00000000000000000000rtu4NrgtCzW;j~_ O0000wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00009.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d114b781ce0911319c6f65a3214c95f6d5d19e GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Cba4!+nDh2#bl+hG9*2ut zX3gF3Uv=a3I+tc09=<6Iex>Kby*rX-x;MzMgY>H$lSsZJd$i>JUB)R(uiU@HHt+VQ z{Bj1_6d`Ahqe8JWwx+Inb|kx;fpypRQzfT)ZmGW9e*Vh*KYa{$kNdk_dOvr^wTep| z7VFX!W8?2VEoRwK&AGg#O`zmn>O#GbGm~cT7QA3|SjJZW;hGPfy(|n2AFA7?Exf6= zVu$gj@OHPqr@ebkOAmaz=<5CC*URd#?M9n)s{U@@k-B!SiHLq`X-{>pv_5lo=be2^ zPw(2SaMwNPc;Pzk`vlfl^KOk_we@>e;E(d?f@Ldpxdx&y fS%CqF43_<5NO1O8cQd@KA0+JQ>gTe~DWM4f{eZ)3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00010.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00011.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00012.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-asset/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00000.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00002YJzJ1cqWxiyaSd&#u#cZO)wPvD%X48$={(OesZ{}5mkKkTw1ld%=eVkk zSz>pgo9~gz9+-WlZ|caFDomg#Ddnn8rYHNrZ)C13gPXGpeFUxm1{)eFpw6!*wWTB| zreAiUgLMv|7z0$B&I?RxYHpT~!$VL(jUH3fUY7W=H&+o|7+k6XL23%lDVkOnX4!nzOyRN#OYaS;pv0G>@EOwrcY`gqghsAh!QHunfVm}$6| z>GlkzB51CWWnjvqk&mQRoN3GBeF#{KtWcFS#MBa}yv&`<+)$}2py`J!v~|+IEX zorLXy$p1QRoj9f)bR?gHtmP}9X=+@)Ih~h+hL|1t=uMgPHO|B?EBbc_9{G#m-EGgO zva^vM+p01(|LRpdNdb<3?GCdhj+raq5igw(_AfY zqvn?mvD>TZl$%=hFC&=~dJH~p`7Wr|vD&yxYIU0it0uhoR`UPe3Ez7ZFD!Dv^o1NZ zcIl7&811KfK222dANpsdNM%lNP+ge-kVULF!_6)}oL3 zhd)?(?g&{ca)bLBOYNygylAtx3qb$?00000000000000000000rtu4NrgtCzW;j~_ O0000wNWKkOUYRu05?4MNt$*Q53~-e#K4n-dk(W z^TbWXfx&!!57-EM@35Tqg*7-Tpym#KM;gPJP;YnBdpCM~o`;+<`4jbal)$Skb@8#|NMlYXv;w3%Xp9TG``8j{hjj$|KYkBu?%;!_jPWZ( zQ&1zJPglCJ)We1Rw$V<>$svgwtuWOe#G2OIXD?M~nmQhM_+meDDk_#xiaM#KEuatpE zd>XR}5RD1D=qDX{^KM}u_Fkuqk7(ozN8c_c=gQ8EsV^M;yVM-qq_WUWCWBmauoXJI zb2U_#8`*MQt(>Z-OCF^UGNkjfVuW=k6|x@^u=~yy*{NIfKV{MA&Dn;l9xcME(c{ve zmKYSLgPUq-`XN(4Ile)?plqA~niFz&)9y%&mwc>Bzd2t=Ta*clH0bb1Kesw_vkyl> zcR3TFKkjy5pU$B#(ZDtZxg`DGd-v>BexxiMR5-F1eJ?6fK zloITTba(!lStr4NoZqqB+9MT3Q53};=Km>A6-0E9(Pc$lG-dV6sR$~)3a0^3@lxu7 zLyl!tPm3tK46F88WJ`K=DlY2Qrj@5P^)5{HRBFUxR$Ok^$~|ALONfC$C?Nm<007(l_^U`Mg%Dzl{;K@S zWUkMdnPEyP$8&j6(yX(*%G37W;VaAJf@~&5`ogFm>|PD$!}r<(dIvtuP~TkXQXO#fbXbtTU=WdNpR0swfN38$ew%!5g> z-OOJH;-YfBku{HWKFaEg)%FQu16Mm({WR{6>^$O~a2DiI9&O&omDQeSf7Nlc(~42i zr{8z5djRwwcXP>ZAFtM`)z|9a-6q`b0a&!=%zdb9ul*GczXLA!d=u;;XTXXv@9E!x zGVMG?N&N!Qchpb4xjcHjsqL|k;m(Fv@AcT;zZ@Qehxh(|jKN8)LMOfHWX51Ax)%Td n00000000000000009fW9&kvkujPXbm00000NkvXXu0mjfZEo`Q literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00009.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..dc37e17f61cbafd272f2be3f472f8e92eb441e6c GIT binary patch literal 925 zcmV;O17iG%P)|^$Yy#r!>4v!SS z|ExCR&T!kDi4B3)g$ZbXhz{DxgLiqb5V}Elmk>|>oqD$?GdbeEfPHW5UAP1n^1Fzu z#*r{B}%E(W+8c1vUl&X{=_N?l`3}Sr)0v z)UKF)@hU<#u7eS)RAea9el^36VS$rx!pwQZEk(E%NU`Q$Ta2zWT=7MN0}n^h-NK## z@d;CGPn!wQ`BlOcqfKpTW-DSEW3-3#B+6&yc_=|g#COU0uqR;Z^I4&h^gXL8<7nP{ zaWhCn4P_21SE%;~FaI4zoD1CO$z!=+_r}MLz>G}8?DA@3_C-4Yj5{es zm>W}1}2nOmpt&@(Cd`KeP#HFw!B6= z$gUcC-ROS^s0{6YyFLZuHAp@<-emjB&6uQ&DmJZ!(#(=1Ns=TAab}A-;VuD`TG33QF5t@ zp-h`21R5F#_u;krimD%@>tPHz8ssrfxT!#qo7k%HO^q^M;0r%moGN`o6hpe0Gqm;X zX!GLcV%Ox~w-d0y=vtm5H)@v8-0f^e^;G2+*XjO;<{1)->PYiE zX}0SJUE+>M(6+er;NyZ)#Kr6vAWEAvn15&LK4DXm6jj)sYv_87^j>}-euHX~$^J4< zs>%LhtihEyg|5^{GHWmu=>-4)0000000000000000H*l^)>6TkHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00012.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png b/tests_zemu/snapshots/x-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00000.png b/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00001.png b/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00003.png b/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00007.png b/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..734052ebda129b201f562321a2fd3c4e1b61ef4c GIT binary patch literal 496 zcmVPo?huf68 zt!|(Yd8ubZn65lVK%rb)=UQt;^xRW@|0cf<$jZOXUK{(}@%yYg-Q7v!Q`Wpo&{>14 zR0(Z4nXe(&t{+Y_pf0{fO(^Hggt85X@FwfFYYA%Wa!^)IZ8;6c*l(9pAsvRlXXZ@I z5~yXkK0C)(nDfWi3l-HD==_{rhy z|8i~j4tOCE-O96VNx5b#qHL(SB}FVVn*5U{Pd2pw8!2B^&al=JWnnw?Z@2>;sO5d2$OLgy57+lV8{F5zH-hH}tjgKa>LQ>7r*C;*&2l$vyMqi~ zNKDO}mN>uKSMDTX7xaBenYo)vc2B~9VQM_GPT!j%ilQi9fc^}SH9~o!u}TZmk6c_W zOQ@wsfB8siQ(F#WQAdXb<)g(KtlD^jddjyN3_H%@8rQj0*=ZHXBM7wNJFD&KPGIM4 zZbRvu<*Xt+wavc)j}z239@iz8qZ65)vD3Brd&Frr4Uk)!w!nvkC#fv-BoilB3@#<&UU_Jg>a0Vo6!d8D+_%Pq1yy_G(D2DQW>_4cT3Q11u*j0s8PL{0CKTi7JiX(f)f!>U9&7;D(2Rtxc1O+B zA`jQ53SuMU#W+>9Rf2E!P(jtcea*#LweFbsMJ1_V00QnL(rq9Q5oIf7N z;SAfY@vI`%K3!vsF+JOgrq`H9nD9IOWZtq<`s|50!IS;sbCKnuidLDryxnK|Nm2JT z&ha9Sqr6!7jx1$L)qm2bqdq%Zzpop%mTLx_^!`tcR_1Izlk$K{ue2WFAp!ZreY&~(j--H##xY#mDAG$sOz%yL92Xqxj*y5{PahDLJ zFW&l9Qc+zU+dYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00011.png b/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00012.png b/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00013.png b/tests_zemu/snapshots/x-op-set-options-add-hash-x-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00000.png b/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00007.png b/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..07f22e4c99c3e029565573f01499470a980304f0 GIT binary patch literal 499 zcmVA(>p-)^B&{7U(`=H%JN<-Z+O_4lNq)3>WNpcJhw<-0z z`U07XOF0{4xbhesD!FYL>(*6N<}T%al3xOn{Itn?WB+vgUR8$sbkg{gHSZF1*Wk)k zqP3ii*N|t|52qPW7GI+#ChN9q399R|G*-^maw^Bzua{FL9=i84awbNp zQ0^aD??o7j_dj6=r_~GqP+PJFEULowzRi1`TxvVHZ}_C!-~ZJ6<=Z`U+s z8b@kxQvQ$V?w>5xb9wTmw(7>pyE@%o{jjNEZ+}W-pcz||_W5?(@_1{2+kG0{&e-C6 zfMPu7$PR?jHnqy12j*_`9y=z$2u(L?_IHI1woh p0000000000000000002X`~eM$cqD68eA)m2002ovPDHLkV1hHL>rwy! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..a443dd67f64a148e37a7331d63dc0a6e750ae841 GIT binary patch literal 964 zcmV;#13UbQP)l%!iLilQirq9}^n`3lOP=Q*yA zLdzq+c8fAZ6rlM3|#_ z+38DUER^KdS&0|1`*33tu zs)2t67`<68ZTD>A&qfXRv=v2i9|ryb=#y)?5j;O&RmPT@35OD#zWIGI%iXZ;b}~gF zF*OH0G5#s8+(^PM=;x9$bAw8vCt<)eH6B@~?@bX!Q4}v={R|LOxt8B~aS{KVbn;`T zScbHhlDIap<FGoIkO*8uzUL&3oT` z;ewHQXOR_M6}J_143?U&8USrC(Kh`PxoVk*apaJHj%f`NcI=+UfzQm zJI#vPmKrSg#h*(-+&iq+*pU!C#Mlz|W=k9hS`=zwax1a-0yqpXRYN1k&c)H=VxF~b z;o4eIy#K~kteuv*b?t*+pR2yc0I?FVt6^N@!LYxFu(Y&9Hs#aU%d4UBG4L@S zu;VAL{3O;^w=g{ef=}~D-jN-I_To>2)+<2!29(Bh**&}t#CPSG-S#O=MtMve9m(hZ z$zJ?NJTVkSQ4~cXWBUI9x`X7q$rJwTFF(pIzZS)JCPC33;Kt-F^?B+7_l1;$5?oJr_@+oKOip*O2++f=^TsKqO@}Pt=lzS)`wN^~Tsr`CF&YDhMRud#+Z$^k z=Lbv6ENzQY#ON@sC5-DxfJDtcfIrv)s-Yj*5D2k#eilQiryZHwenWf@QA@TkI00001=(S+?wue~-ir80r1$ch$>P6utm48d?Ddd;D{wjWt`Yq%xopS?m2WNEyv2-}jWx z1BMsD&;W?@_pGwJ#YJQEQ9D#(kh6`k7tP%F+-M5QD_wgR^*8s_Bb9l~2%;4e^^_bL zT~T}mbT-9(Er+L4`(o6bnzQW?x@AVh2jG}o?nW@Z*`Yd1YE=Y+Xz!bRdmBVdbPIOg z5mhe?rsjz)>HOD}_&p}1>%j6~Q9GI5UqdYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00011.png b/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00012.png b/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00013.png b/tests_zemu/snapshots/x-op-set-options-add-pre-auth-tx-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00000.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00001.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00003.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00007.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2b30765f7b5c6936e3c36ec49c4188f4b1056d75 GIT binary patch literal 499 zcmV2`B(%fVvQy!TInRfhY-&H(rGF6nBJ?#iQdn2G16v2Kl$Wo{_<57{Lkh<6*@oBP%IJ1Px#bIYjVXZ z(b`V>Ysh!^52F>37GI?%#5O%$=`N@6Ci}K&2`cNdGmvzt&dQL3UK;-BF$ZW$anXl2ZLx*x8BRbE#*nn1dS^ zrn?C5ih6gzlf$5gw~(FwN)H@VD9)9xsy~b7zW!KwoQZ$(jdFmhW~j-5fr}uMgQW;B p00000000000000000026%rE~@xG~l8G@bwe002ovPDHLkV1h?H>dF8B literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00008.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..be99bd3d069560c172cbb79dca448ca991d8b862 GIT binary patch literal 943 zcmV;g15o^lP)2!-vg*-7@lr0k_1GS{*NjtHok8osBSAAzV4bCO$1k|arzBuSEN=gZmtzVG_` zx~^yQx-O^Lp~uHX^=|ff-*?-V#*f`~%?*5e8rR?+>Ti!t1D@Uoo1J}jBtR=Ae>{yT zQj`x*iqu3Yzo$}rTKP;akW$iYZGBM}(rB^$NTUkJl>rZU3e>nk+P0b08U&U>t!T%u z?#H#ISaVmJYI=~epW|-RM*+lP+66R^kHi^9%*azU5T*HOn{Q;X&o+-I77{TS6?q{pqhGn;r zt``DJvojLqA-{1Y0jr>Ymynt3G~#^{26R*7NS?m8L?lU)ynw+yfUV7Vco{t=D*hrO>Cll`)DXHBsySxJt;NwNx^WYEbu21}vcJ61!n z+{o_7YUNNpo$|;wq?_0{PZxj#6miQRO&(M_r@)tB zd$u>UZCNPBNr#+BSIgGrS@mLnBCZnSs`!NgQxcpnc~qV$F{>a|Ig53zw5A$>Zg%J= zOSmYe>{EKC@)BYL))4$cW@^&0J%UBh&JpM@a}88RB4L}UNs=T za)xc@7_&&ZPv;myNY84~>>Oo;3BS`%%92It+7okvr}ne!td_GZv@~Vxtw25;kQ0;+8@B(D?xXo?+t}AXV3c?AuKq9*o}4 zf@`N8GWXF^eX!15pmqc_df$Ji=P+uOo427uM+L{EZ_ERIfAMkjDmz-G`O$uh(+yB= z%&SwjcFJ#uEuSrKK5f9AZh%d5&e~3`E&Dq>;wa*oE5RB02-wl)J@q@0rsoK{d{F*} zuDK1ZPLCdqXkXh6PrkUC*Vop5baNYgdF`J^8{COm=uVAFrVX~DdI10c0000000000 f00000fNlN(xqi+sP<$m*00000NkvXXu0mjfVB7ta literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00010.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..4c13a321f189c331efe71be373f0163daa1924e3 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K-ba4!+nDh2VBHtkep0dYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00011.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00012.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00013.png b/tests_zemu/snapshots/x-op-set-options-add-public-key-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-with-empty-body/00000.png b/tests_zemu/snapshots/x-op-set-options-with-empty-body/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-with-empty-body/00001.png b/tests_zemu/snapshots/x-op-set-options-with-empty-body/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-with-empty-body/00003.png b/tests_zemu/snapshots/x-op-set-options-with-empty-body/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-with-empty-body/00007.png b/tests_zemu/snapshots/x-op-set-options-with-empty-body/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7a4ccb3afb9e3c439a32017e23bceda767d103 GIT binary patch literal 442 zcmV;r0Y(0aP)tk;ewJYG za(T3kt6Alsaa9%15#y?=dM@7XITlq*iV{&9+`Bxblv0wX$$q!98p&;{365TIS>I0k z7%dP!0Bx)C-4|W1qtMz04uCQFx;)gr{URr^D(GI86#E2(HsJVj&$%ikCxXTxY5?vv z$z=8#EJ)NUs9kiH^x)DW=is#pypWsG1ONa4{K#`RbbRyDh*x`L#?NXePOV07lTJp| zwWhk^YEHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-with-empty-body/00009.png b/tests_zemu/snapshots/x-op-set-options-with-empty-body/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-with-empty-body/00010.png b/tests_zemu/snapshots/x-op-set-options-with-empty-body/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00000.png b/tests_zemu/snapshots/x-op-set-options/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00001.png b/tests_zemu/snapshots/x-op-set-options/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00003.png b/tests_zemu/snapshots/x-op-set-options/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00007.png b/tests_zemu/snapshots/x-op-set-options/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..a1792be7222718e75794f78b3ed871c34f5e5277 GIT binary patch literal 924 zcmV;N17rM&P)d+ibJPCm-Dc!F!21$&DXIE=QQ4~c{6h(2IuW63^zFTY8 zbxrg1Y)BEW3&i^vLkjnOkJfmcV+v^mUR>l?N|Z0Jt`;9#%~e*T8zKGS4Q5O?E=Rvj z=?Ns5-`-fS>l(Yd|JFt^Y3MPf7a?V}p~TaXfHm)6{M?RVJb-%!kZIL_Yoqx3OJkK3 zix@-6TS+oC#W|-1gM>N-nUTI35Wuw{@XUdBC#H_Dl6hj1diIl>KO6ij*MYc9N&_jW)Z`{GVf+W|1&0yU0f{a^@s?ophwpw5`*Ei^Q0P@e#o>>j_;sea5i=TUlVe7 z)8RG#QJ!1`+(dlJOo2LxWZjHO;F+DfwMG50m3w!ofP?#@3m>m>Ni`5ntsd!(W$ilTT1 z=%4aLK_mwmTUNA1Q&GR1ilEx7a2@~`FSRNJ#|q9 zI6o10iE&;0vN49Fkzex&=G5>iNL|hnU4z!34j`igA1vvj7}%yfCs>8tfDw{k$hZcb y*dn$FN*o#O6o6cDK9e@*eBJRXARrn-000000NBn){qK}g2qDIJIww!N zvZPhT746c7DWsILG_^;iU2a^?krF&U$E`e6HhElnt!b@C7NX+OYK$CLzdiXj?d;kL zUrn~g7-gLEZ!e3Lqvc3mqSktO~lg z%(0AK!V|IX=q>`4g(G*q4QG?;A`1hMbHDgfEIvQ_9jqZPxlLXFH-_A#S#Dj_@A6~LucW=L{$Tzdt3>(A6dn|O_NoB81FHlUTI$c zpmltFq~6Jx%gtZHvN!M?4y*R${@P|-H!Gsj(a_$&?f}@Y^J2-i&EYFz?OHqdv;((0 z0E=qQ+@$ud{S`c-8~V(fU=R8Ptcdv)|8~r&+o@*S3&3i$Szj!VBb-QkZ5r;}xU1{6 z-aoiG1~2#ieu%-HP=)T~#L2{9DYzE^000000000000000000000001B8Q%=c%XZY! RZHoW^002ovPDHLkV1iTQ@)ZC8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00009.png b/tests_zemu/snapshots/x-op-set-options/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..27de42474a8ea686ad34a17d770248f6ca36065d GIT binary patch literal 615 zcmV-t0+{`YP)EuHWx> zDaqH@+RtXMwZDj8pJv>&2rhSxlLJPurid)bg&(}#mMK-OSXMRH@w2*tL5iR%I;j#_ z*|O7oYMDwxWhr;5yqXX*peUlG0YY2qSmnSJsPEu|5DqBF0ZR$a%BR4ll-4o|<#0FC zbe9kzXz$8dM;o{JliX%Neyz%zRS&POph_-mU7>pAya<0U$|YAh`z#?s&^P0E5)O#9 zA0>nkG6X)m$`g%bG00dLhM zpbs!u z0aG(z&&p$SRew&|$%&?q=fTt(Air`fWl)j2KT4fJv6|xoeNf-gPN8SOpfgpqGO!h& z^sG#(8Z*!xP=`Sw%Dl?Eu=gWCGtx?h_KrO@AYG7NX>WOnTFu>fg7gO^nn8% zk?Dh_)bfV-B3AEQ)iTw+mDajhht&H1o*ug34`Jngn-y>h79o$wiq~4z*pimP<<=58QBV<=w`RO?ZqbO;Dl#v) zUd7GrEZfjvOB_evd5Fy4$-W+~;%*1X1bUokjy3V(iI|xP-=s{aLU9-Y(|*&NYvAju zP#o5Po2SPE)jge{2~`L^0=lLVb+ODsGym#SlSY}l{OEtIRpq=i{OwNCyT}2dmo>jm zwN*|9LH99F@<|KV7JfBIcicZ{lr_%2DJj|;kLd?GRs?(lKuUQ?ICP~Zuht1Jf48^Ku{WdOA{5&>$5|d|u zr4pGnj_Pp_kNsIo$1F2DAfBF`OG@0v%Cs|UUoEa*?Am6v)mPob{3Ynp5Ub4Mxe@eN zo3gO<+i?vDV?XH|eG6@pmhsn~e$9i+*Y0Mup50kzgmL-uwI|%qdJcG?IZwjhA-_Mq z>qr1#k7KR@l^3qgc*@&&bWc)wsc_<5Ik%xV+w?MSk=y?f^f<*u=IFKPq$Q~G#`Ijr zbih}p@ABKwk3G-IP3J)ufJVFrEuH5wLni%g3Q?2(X7s_GScUG?2$?=uig*D400000 k00000000000Dxuw0P%z_#jMC=y8r+H07*qoM6N<$f?pfbx&QzG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00012.png b/tests_zemu/snapshots/x-op-set-options/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..e98261e51277e36fad88b0b2537c1aa89816cb99 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`huba4!+nDh2VAm1Sco`#26 zdpN(_UwZe5dE$hvC9h5~{N1na9KpW!fSDjr&x4}vD;#cb>-6x_)C$pEDkArPZa~`k z0~0$=D64p_vDtp3(rg-uW29XU&zoL*lcQa>HVE+rKCZ^p00i_>zopr0N0Y8 AzyJUM literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00013.png b/tests_zemu/snapshots/x-op-set-options/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..8291074ecfaede7c036a069d4db807b718e55368 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{!ba4!+nDh3AW8Yx~9*4lF zuWEPxd)!&t?Qz0r9dnCQ$G_;MB1XsfmN;_&H618ff2vM%>0_m1KUP02`EfBguKaYp zZMPxc&dq!3Uth6mtG8m_li<!MvNc~-gIytL(t(?*l4 zch6XyJ#jjErmmk*)}Gl_)}MHuPT4j8f^zn!MR7Od)sFTU^M@qQ?LAt_GMh2?4!jV7~bT!7JJ}%)BMi=b{C+S4Acv=J8pbP*LLURGPKAQRJzf1=);T3K0RZ)0v{C>7 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00014.png b/tests_zemu/snapshots/x-op-set-options/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..cc6fbc76821a0a421aec0b6626a54014850a71bd GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2Vw9p|19*4k^ zJDk7cgT6g-KhEc@p}?!Z_xb6KHqM;6bD4p9+Nx)4QBpc*`M&m9`NpJAK_{x?b2j9j z;ZA-g2kVdgmU{ftY2NfZkHaPoBxx(<%!Ws zK{9tNR~J;>zxQBQ&5idvg-%{@FE#E|wG{s>o4J$O=&_u_tG$XfyH0J~Zp8ZT_3WlC ziI%bVUp~CGrg%lfvISCBoHMrHzq57Utn=Y&&)zUxFBX9bml@~)@XE!h|!ZE2LC+PhEZYw$oES4#kw| zDLYM0zJIB(I#e(AF?ZviXmzj1Z1Jhq3erB7s~%QZm8NH%W#1*0WW8H8qxYNBon6Ui zB5Ybtd&>B|zO_f6#p>J(-HeAvLsm`k7g20qa&~p&B@N@fKrbB-kNj=$kE8r#n_YgI zx~#YBl9NXx)}^sV$p@!$Z4O;JImNel&ffz55Z~!(PyH5te*QD9{VMMqpJSy#QxCta zI5VmA4a=5IpI=@)DfaKC@aDV6R~_bmSR`t9slC~|zK;Dx?%yemNel0=&bjmd^&Csd zqdvi2)xCfFO!>3FKM1qZXG(Kid-(pTiNXQ=Us^ZIx3(1C>72iyIrPPngDS;*A%=T_ d;fD+wX4zj8aJ2`B(%fVvQy!TInRfhY-&H(rGF6nBJ?#iQdn2G16v2Kl$Wo{_<57{Lkh<6*@oBP%IJ1Px#bIYjVXZ z(b`V>Ysh!^52F>37GI?%#5O%$=`N@6Ci}K&2`cNdGmvzt&dQL3UK;-BF$ZW$anXl2ZLx*x8BRbE#*nn1dS^ zrn?C5ih6gzlf$5gw~(FwN)H@VD9)9xsy~b7zW!KwoQZ$(jdFmhW~j-5fr}uMgQW;B p00000000000000000026%rE~@xG~l8G@bwe002ovPDHLkV1h?H>dF8B literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00017.png b/tests_zemu/snapshots/x-op-set-options/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1749fa0fb0ff9019728cf0d14a863f70fe9e21 GIT binary patch literal 973 zcmV;;12X)HP)7>;g@15Vn0J^#XxpuvYZ* z*UItQvPEOpb2XmS1epFiOK)y7XnC-T1hq)_wj*BSsZsUo7!cxB zi?L8tBOU>yHp9>kdz0Q9J;H8lHd(tF#3$f%uHixO_yLO|YkFM-gy7{{mz%5H4ae>v z!U_wQ=AL#4IO9dru86DzFN(z?3g6`OhX7`iGE zpQ-=pL(b**fOa+I&1Bv}@3-=-+I`-MZ#bQdn>|^3t2}mR(Mx-gFsrA~VQL7>W|L=n z0`mDq#+163**O3;!$aWJ=Jm`jL3d_&Ji|SeWmP#U}GkHJ&sb2V_zf zc)fQl#sXsuf_RlHg;UC(W93Mfm>`gzeK1pIKQ%|couz|b|%xX;Ac4~ zCpcN?iBqQWl6u=MDQ-soviAXcO7fgG`ov1IMQ4)P+Miam)_P@#vmF3G-+;6a7E&DiTOb>ay)MR7p1A|k6D>7{0iA@ z=tbOb{UeL%m(WE{3y)?UA<#kRO8vG%*+D vaL)OKDR+Y@6+bYZFH&<*6h%=K#f$k1%$o3zB7P5@00000NkvXXu0mjfXD`)h literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00018.png b/tests_zemu/snapshots/x-op-set-options/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..00cf1a8330ad8ff7c393a741ae35eb6906f4db79 GIT binary patch literal 533 zcmV+w0_y#VP)di$qJD`PevNqImeax43JkUW}F-gcLr z8yp@4t_BeM?^Sua#X+OwsBS7T$koc|gJ$kJ=beJmNN=r0_Uc}`rFEG0dy zD;ggG#;SCe<>9VWFN`gh`fS~V-7+5I4G=q5_dzgx>7k4zTbCFJ(pqoQ>2(lsqTBG~ zJ)+2hb84Pg6XQ=);#*933VN?u-PRMw`%hR=^ov^t=|krS0CgAo6^vJm&8-c{lX=_Pn&PyR88{1AqFYabuI*)&Ry`Trt<; z&URfgfBj(DkLng%;pzW`?XTF3C1aK^?UF9_^ahCR`Fc)fjmjx#&oFeZg!U8{^G|-P zydPbsliqjrotJ7Rne1;Pq?+t+MjPCTS?ErkB+~{00000NkvXXu0mjf7SsBW literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00019.png b/tests_zemu/snapshots/x-op-set-options/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..4c13a321f189c331efe71be373f0163daa1924e3 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K-ba4!+nDh2VBHtkep0dYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00020.png b/tests_zemu/snapshots/x-op-set-options/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00021.png b/tests_zemu/snapshots/x-op-set-options/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options/00022.png b/tests_zemu/snapshots/x-op-set-options/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00000.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s`?>JZ^7e z=XQRU7b@P#U$#-BWr9oc%UAdOkIQ_LtP>LKX9j9xcu;Eh&U;GGt<#@v-e*hYOYII9 zFNjFz_R`F)-*tMAbgqWPV`KlSX_9OI8chp2_jyfsRL+H8+j_0fUc2P=GCL;ZwbI4i z0?+QtrgO*EY|VdkB5e9PN70pKftxSye0D(Y$x~}F^JMWPl{5!;bCYD|!rGlFt5sJn z)88%dU@vDzAX~<^Iq@7POLs4SX0ewg^vJ7^9d9lrx!;dTEqVBk<;v11bJ3)uA-A-f z#D0IYjWv39<92K84cmQ$K8y@!j9VT10w%K?vHo;subV0Va|`M&-+ zlj7E=RojZ{R2wZldscVui+>Ny0&T8Vc-0(Zb{EX`J9BQcPTyU}w1~=*_c2VKYh*5z z3GPa{+p%72v;3mpZ-V};-4fojXt%20^rKe`S>xF{^#87`oE6yG>+Rw*Yw0HQTOOQ3 z`)8(Hs9RSVWA^R(jL^5+yAI30)vpl#CMUALt-|6}@3!*{wM@sK_x$+Kx%ZkjYj}9s z(&QhRJ9*A4?LN_OD}JjjqKw_`{(@8T&(E=(cq>_}zf|#Ao`EA@$in$4h9}NAYVqiU eA_yHgNd0GQdhjq=d#6?xNY2yM&t;ucLK6U4{qI2l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00009.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..63a2194713effaa11c34840c87302948cea0dbc1 GIT binary patch literal 467 zcmV;^0WAKBP)&>&Tc+EhTQDDJv~~y8;*HC0r%UK|NQ+C-IGP{sY7`<0Xc9E zowt5O31ZzP+WeRfWQ+i<>&bkPq^O#t<2H1Ic{$g#jA$4^tJKRUg9^#dJ-*P<3~A znm#0j3tGE!_TDDU|CF#9P={3;S^eMZE3gvB))}lUaZdr1%y9F1iqYG251AV#`@R(UY~#)X}AAv-z%|+Y}}mzOTu>}MfxD; zQ@Oha(1VU(*y+_n;WJ=-1hJaU3%Q)?^~$|)`q*zA?Y->mj+I08{=k6B4^#4oK6sY* z^d&O95>$<`AB>=I*dPp5)v!ST2TFzwrjkp&{V}XqB7QZ>DR)H0kUAN+lUs=5)4s4p zg)BV0AS#B`2C#9Agck+SE1uMTXxl{oiwgMg^ zdqDBNQ_+pH+l8>{SKEAJ{$R6=n1^bDdjLB)92NJ(Ha$st+SDPrT{Y0tCBh8A4#!c# zb*N!(8=K8Fv>}np(C$1*6K|{t>x|vR?s!r!b=XI&@M*raHO+J_&E85Df1!TjS3x@y z;<>TzAG{NujI>NNtkL<0q;FI!7L%+1-m6oS^N_zUFQo<5Viu0DP0@+7b z-?!9Z1mCp`O#=e@PKJl0Jxp*wc27Q&Q3fcEcJA{1kr|^gbcNEIEbk2id%y($r6}?G z-3FhNfpdT}1nn$(iTQ8P_J9yKX@rzf$bMd^K$UyrTvLh5>T6ji9XU_&n)w83Mid3@ zON48N5eV&11~ym;Mxm8-lnfgTg{pVKiJ1K)-4YPB$5ZPROI&utU0Wnd+);{FcE9xM z#xiRO#?a|#zAhSC*krf-R0E9DU4Ai0e#1uLXnSNh>KiFGQagF*->3&%jof|4B)O3R zP9_h{%V&a(h9HU*J+%*3mStsA%JMTZ0000005FhTQBtHgrEB^qzaz=9)M1B6(J0tp zi}W#1l4GS*af-EQiXJYtH^;-Wo$wCZ9Oa+nY1P|$C#)bHtt9tWcBb~zhOwZU{QiNd zF<1E_uO3hAawbQIcJBdEy0|3A^Fi@5FiyhyjB041i&0vp4bnNAfQFgM^UM7SKW%_kDgj3dP}DJq`c>0ARUKY`E*X^6`0|xAUg# z>C9-HW+^#fE>RRwmRqMOBRuyL73e7LJ8_bUx-K=dKflBBSk!WP8%`SM{zv^r1+s`S zk$;Z%Zgp&_71ucmtxHb^@ePq9AW?f+?nL=7S>4f~@1?u8X2$+{};;b=8mPooA-_o}c4u-35! z>V_F=>^g5VO`ynaXmg$P_kZWu$Uy{oIYnBv&KYQ^-=%zo%q z?Yj*X?=|0Q`s?UU*0+(^><>$MEoX8N6Hars`MN1+ml4qKW%JVR4N$KH&gZaiBpV?1 zi*r9`b{5}x#ChlYl(X;jU)IjksNQ${*)Ki^nD(Gl&YrhFQ!yDZLo}4)wIC^ xjY_5srlNWQ000000000000000004k#{s5J_fhJt2=*<8C002ovPDHLkV1iy}@(=(3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00014.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00000.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s`?>JZ^7e z=XQRU7b@P#U$#-BWr9oc%UAdOkIQ_LtP>LKX9j9xcu;Eh&U;GGt<#@v-e*hYOYII9 zFNjFz_R`F)-*tMAbgqWPV`KlSX_9OI8chp2_jyfsRL+H8+j_0fUc2P=GCL;ZwbI4i z0?+QtrgO*EY|VdkB5e9PN70pKftxSye0D(Y$x~}F^JMWPl{5!;bCYD|!rGlFt5sJn z)88%dU@vDzAX~<^Iq@7POLs4SX0ewg^vJ7^9d9lrx!;dTEqVBk<;v11bJ3)uA-A-f z#D0IYjWv39<92K84cmQ$K8y@!j9VT10w%K?vHo;subV0Va|`M&-+ zlj7E=RojZ{R2wZldscVui+>Ny0&T8Vc-0(Zb{EX`J9BQcPTyU}w1~=*_c2VKYh*5z z3GPa{+p%72v;3mpZ-V};-4fojXt%20^rKe`S>xF{^#87`oE6yG>+Rw*Yw0HQTOOQ3 z`)8(Hs9RSVWA^R(jL^5+yAI30)vpl#CMUALt-|6}@3!*{wM@sK_x$+Kx%ZkjYj}9s z(&QhRJ9*A4?LN_OD}JjjqKw_`{(@8T&(E=(cq>_}zf|#Ao`EA@$in$4h9}NAYVqiU eA_yHgNd0GQdhjq=d#6?xNY2yM&t;ucLK6U4{qI2l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00009.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..63a2194713effaa11c34840c87302948cea0dbc1 GIT binary patch literal 467 zcmV;^0WAKBP)&>&Tc+EhTQDDJv~~y8;*HC0r%UK|NQ+C-IGP{sY7`<0Xc9E zowt5O31ZzP+WeRfWQ+i<>&bkPq^O#t<2H1?|Gknn{wFuV7?2^@inp|sb{T}Iq@ec5y zO_4UGd^O-{k7}k^HnPle+6L`XCh~W>MS>j4h7U_=Gi!Fb|7xa6+oiJ# zjD?q?G-P7y#%BO+2I%rO151fun_{)n7E-yN=^BwKa{lcdaHqh!#M9aF0THy2xC?p( zQ$}vYNa!SdAliNu004j_cMXt2WB0NfxQ%X5;&+lB_Ei0PzjK@k=VK;tC8hD0^=YSMMwkLxhb&afRSYqEVdB+h^Z<5yxxt)~T_ zi^MgcePFT}_7v=7_zajbOqdahLjI?N2GY3$Pch}r)w!1qa%1N$qh>u5J)@d}_cf+_ zrehG^Ukv(SCx}8jxp6Z3AQkD}4Nt^0?USVxpCIbjQ`;1eE_>jqZ6=29sHv5Pig{~O zT5w9I+59>+lsM$H{MHW0^IiQS$v)#CIohub&w3-OtJE$I{Rho}r^?;WSR@bXfQ!YU zdHYImPzaJ}>Zw0idA60Tl3jqAa>%i}o^4 z(X~?PIHR{@iY=G=n-gK%N%(|gj`0QZvg#du5;o8tt(5RlcBS{rfm%>Y{r-Zf^DcTL zuZ<^uJB!t!(`UdeUp%rCd7=0nI2U1iMfGR9UBf-4B(d!?RjE_T20wkIE{$}@ay36% sGQOz-KadqOK#s}PCz{`7x!vwr%r$vPdn<1{TTLiTaBm1Q-YG-djr-@a@?))bLf zw)Y4+JG!kOxse0E6wTWhu?Nv^rSqqvqX(Cq5 zfLt3@EvJ@NLqrB`WlCT>M*m!R!`E&WCI6hD+|Ah`PNc5f%klyXm5cnbOm zvxaSVoS`M?hOF}_0HAb>J)nA8Rfj+SuZ&iWV3ks4{6^JBS?f*F@!P*^#q_VteZ&pA z?=e)p#eAye?}CD?FClZY50>&+&f=gJoaSotaZAu$W|d*ne?WmJwkU$2Hc_0=x+ICa;!89;>133?nI-QwJ0lZG`hB!44+_Dz**? zX@nB%>a|*_Jjr2M?2m?g1Kef+jlQgCHrV@xi0MN@()bM9i02Ft7l)%@PAr>AS}yBD z8aLY(d<-Bi$2LvZhH+eflH)P-a-Xad>(Q#Ei0l4k;tS4HaberFwtL&-dSlLcV-R|^d$9$l00!vwZtj~yI)@b>jK8zM# zJkGxJ7|JGAWcm6ovk{zP9(38 zxrY;?YzS?DHXA)*N2l7^0PIrY4>}@oX8;Seie)-S?nY7D@qZt1=-*as)JUx3M}fZq z8fdR!S(zT?ZWOhbpi7V#YSjw2caDvszzeavni%Ug2LJ#7;EvDt0d>^j@`7nunB6OF zNV}}avdTo8V?snnj3Srp{7$+3qBINDV#}t7d%QqUN9=cqI0Hm(S{cMELza^uoB_1^ zrZ*`_yhW-72k#)90aAd-rDaquq5SUe+vYMgEci+=7K8 hhBzny0002u@ei64Dx&}u&-wrW002ovPDHLkV1jwPMR))J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00000.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00001.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00003.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s`?>JZ^7e z=XQRU7b@P#U$#-BWr9oc%UAdOkIQ_LtP>LKX9j9xcu;Eh&U;GGt<#@v-e*hYOYII9 zFNjFz_R`F)-*tMAbgqWPV`KlSX_9OI8chp2_jyfsRL+H8+j_0fUc2P=GCL;ZwbI4i z0?+QtrgO*EY|VdkB5e9PN70pKftxSye0D(Y$x~}F^JMWPl{5!;bCYD|!rGlFt5sJn z)88%dU@vDzAX~<^Iq@7POLs4SX0ewg^vJ7^9d9lrx!;dTEqVBk<;v11bJ3)uA-A-f z#D0IYjWv39<92K84cmQ$K8y@!j9VT10w%K?vHo;subV0Va|`M&-+ zlj7E=RojZ{R2wZldscVui+>Ny0&T8Vc-0(Zb{EX`J9BQcPTyU}w1~=*_c2VKYh*5z z3GPa{+p%72v;3mpZ-V};-4fojXt%20^rKe`S>xF{^#87`oE6yG>+Rw*Yw0HQTOOQ3 z`)8(Hs9RSVWA^R(jL^5+yAI30)vpl#CMUALt-|6}@3!*{wM@sK_x$+Kx%ZkjYj}9s z(&QhRJ9*A4?LN_OD}JjjqKw_`{(@8T&(E=(cq>_}zf|#Ao`EA@$in$4h9}NAYVqiU eA_yHgNd0GQdhjq=d#6?xNY2yM&t;ucLK6U4{qI2l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00007.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00009.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..63a2194713effaa11c34840c87302948cea0dbc1 GIT binary patch literal 467 zcmV;^0WAKBP)&>&Tc+EhTQDDJv~~y8;*HC0r%UK|NQ+C-IGP{sY7`<0Xc9E zowt5O31ZzP+WeRfWQ+i<>&bkPq^O#t<2H1BoDVFC;=X{AyQio%vm+)g+l z+IkcK02U#14rta~L-47;CJy zJ}&{|VpskcvOqXrq#52F!kL_ZkhU?!+SGwB2wIT%W!@Rka)Xf3sC z`BC|g=Ew6J5(VpVnvzTNhAFJFSu=1(wxq=tP5rlXhiNOV03_fS<3NHAtK2Vg P00000NkvXXu0mjfUqv#w literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00011.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..d86bb9451e582d39c78fa605174394c2ae65c0dd GIT binary patch literal 694 zcmV;n0!jUeP)ic-=Na2qApd#i( zy1eV%>f9Ex-HB4f}`Mq{lv#1D*lu;;?75i4`-+x+})8g6+XcMm92kLslr@L6rGrQZs9t?<+@**<+!NofgD61*&faYSl*(;*uj%Av{a7~0g`7|En(+WNV~V2o zE#R6_1XBBhp$%rjRcIy`N~R6EQmPl04Sj0jvt|HJ^Fcg5@p)OfdF6O=HgwJ0gJ6|x z=o=EBDgXm8@fiU#1DN=12D1k+@!3pt20SnE*?VAQEk66NiE!xGgb+gBLHV_bTB2S$ zNmP4BmNFGoB0NCuwKB5IyK4#io&w!5~LEaktG3V{9$iBl0JPt22 z@+SS3Us*o0-$TsEESe|v%J+Sf7}_cruV;DzH8C*Ut~}aRz5jkuZS3_gH>!X9O$qTU z78BGkUZwe|^0eK~mgj$5IK6J}%GbI(WnJ;C!}Hf0><^1NH$CuWaO8iD{eew3AwDPG zt|*_qF;#1wG1uN@>W(&!DJ*wp#HsnItbej|r?`A&%9PntcNsi&&&`Ota7Iv)@loye zMN>C_=Qf<*zpr5Vu2A#hD_x5{IQkfhi+313JF?2-Q`A+dpwl_FZoGHi`5xkVFgICR zgV#9aO;OHfe}##e8K38@d0wBoBwT3fxpv#1OTT;(OE`7^S={qQeXpy^Zr@KYxz~Oq z-BDfm>9)pq@_)Q5jN|NpVP;$Nj7NjJ>y>Ba?DDYI-mWdr9Ij58BT^}Qy1P)=L)H0e z*^;gCQ_>d(<=B1w&?WyNHuFW}90^9X?y|P4_oHXYq%&03Z{^kvnh?oxD>BF897AR; zaAaa=2m{J%ch~$m)ja2i zzSE+Vv{h2~@AoV$$l1Ufe)UEIGp}lL^U?)z;MhPT8dCo-IbP0 Hl+XkKi@f4= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00013.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00014.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00015.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-authorized/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00000.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00001.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00003.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000EaktG3V{f*s`?>JZ^7e z=XQRU7b@P#U$#-BWr9oc%UAdOkIQ_LtP>LKX9j9xcu;Eh&U;GGt<#@v-e*hYOYII9 zFNjFz_R`F)-*tMAbgqWPV`KlSX_9OI8chp2_jyfsRL+H8+j_0fUc2P=GCL;ZwbI4i z0?+QtrgO*EY|VdkB5e9PN70pKftxSye0D(Y$x~}F^JMWPl{5!;bCYD|!rGlFt5sJn z)88%dU@vDzAX~<^Iq@7POLs4SX0ewg^vJ7^9d9lrx!;dTEqVBk<;v11bJ3)uA-A-f z#D0IYjWv39<92K84cmQ$K8y@!j9VT10w%K?vHo;subV0Va|`M&-+ zlj7E=RojZ{R2wZldscVui+>Ny0&T8Vc-0(Zb{EX`J9BQcPTyU}w1~=*_c2VKYh*5z z3GPa{+p%72v;3mpZ-V};-4fojXt%20^rKe`S>xF{^#87`oE6yG>+Rw*Yw0HQTOOQ3 z`)8(Hs9RSVWA^R(jL^5+yAI30)vpl#CMUALt-|6}@3!*{wM@sK_x$+Kx%ZkjYj}9s z(&QhRJ9*A4?LN_OD}JjjqKw_`{(@8T&(E=(cq>_}zf|#Ao`EA@$in$4h9}NAYVqiU eA_yHgNd0GQdhjq=d#6?xNY2yM&t;ucLK6U4{qI2l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00007.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9183736108759b123ce6839efe32e22489159a44 GIT binary patch literal 875 zcmV-x1C;!UP) zMr{i;L|mS1VY5p3be;zw%M(HfA>;=QHB>A?=EklTWW2;ceH6El%fOI!)hj{kNS@DL zuE3D_OgG>TT5OqhqJG}HtABfCHl2yfj}!GdAjpoVnCw4@)sp9LEdL=Z0w7f7m!B$c z51U~_f?A*IJy10iJduyhdSVJbsyOLe1BSdph5_XeM9M}301jl&Wb2v{ud0IIJ=p#*CHaUf)=|j5g!7hg`H|>`XMtuIle)?&`b<~ zo)dC+)5D&Cx5ns|esjJJMU)9d8XT}F%&ie{YC{jrfJtQJ<^wi1lL4;XmmQs=r;yqV;o#oX7B-UPd1x?8_y@+A1p`W?%zJrW^= z5VD8%U&?C*Q5(07UP=J4?DK2DYhw60Ab5!wAVQ zWV$+?*&?wBDhvhfH9QA`o_LJ)R6+m5J#wvAieGVY)w~e7*On()sm(5JDNw{{M<=(aK4lUfwfYfu^@nzE!a+rH3pp z-1noVpIl!j&F?8`>7v97&o{zq1ZX<@t0hS@?28_Fr_8{0DQ4J4Hd*XmNtlD13H{8GB3|B zs|P-(YW2gkU4+=)l^gc4^y?`HIZwCwMJzw>ypLF`HGO}>VO$T3sAykf_F5f)^0mG? zWuHBgYo6(A^Zs_L17I}g%G6t2ZjbGTD<51f>#?mLZH~diTYo)buoJV;PK`z;2Bv6U0000000000000000002M Z%s+Aba<7WEu)P2P002ovPDHLkV1gk>;0yo& literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00009.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..63a2194713effaa11c34840c87302948cea0dbc1 GIT binary patch literal 467 zcmV;^0WAKBP)&>&Tc+EhTQDDJv~~y8;*HC0r%UK|NQ+C-IGP{sY7`<0Xc9E zowt5O31ZzP+WeRfWQ+i<>&bkPq^O#t<2H1p3@AdAn!Mp)R(56UV za{S%EyB5_%k!qUf+5+vuKz{N>H-(buL`wR~njG<4P1Mn8xmS0q%txqIFa|@qn6^{a z3}^!yoa2Y?n_Bt1_dF3Zd6TAYXXtO_hM+@P%?|g}wncF#?H!_E-5Mt=1g*VE9!y5U zizX^)P%`r~;C8F#S$v?p0x9ueiz1`a7U3pD)Ur0Qh@7(B;0HiVGGc7MLpUWQ?t(so z5YP1paXkrdh_)XE006+rT?2TcQM?obx6xJ$^mev#Br)}8BMz6R@$ zj3I-s+lKCzib&4|c_?r|<4L}T#B69g#F%zEp2!>Nm$&7k61!MJ;tVM8UyhM#-7Was zB(4Gdfk`ps6l`bc3&@i~om20SnEnLRMD7f<_Xq7(Qv004mRfWKQJmWY=|d5=d_ z4O=JUuI>eH@mpTlo(IW;;e@Cfwl;uG;4|>T$LYleI5&QSw}yRZ07JSq}*i|skUekf>G2Y|ECeQPp!8jJ+L*?9ZHtm4lnw|(YoXSrNR$a0 z;GFH!r3>{}spx)#h+T%-PFTyui~m`R9(gC1CDa^WH|5F6CAcxC*)j zy@u^&IZY;LLA3QK0002V1Ro%`LM%o8q#x%cBYTk9PcyPtG;x^o2;T|Uk^^&c_n#_v zs#*_8v9##w8n^NGW$1L4n*l|FEQ1s~eiE$J0lEFm3I!>s81oq%S6Hh9(u{Z{gB{>R zvs?#U^SAefcfc4U=sDV^R>5oZWYGDEP>3osNc;OY5k&+MSKET* zd#UCDpbus;+6n>6iIUL=p-A=4iH6djr#I$kMlEb<2R@|)P4eXx?foz=Y@J@}(x#~) zQ%dlZIDq#?LkEW(H165~p^Nm9Tb6}lLH?L?udt;&`Dqk*frVy3)$PIb6eqb*2OJDG z&C@->LMBME>3<1gDH@(-B`an8xjX;>0000OhdihBgxJ`#d}W+~7GrZp9ae}GMNtg4 z6dRn?DnBbK&gdqqd0 pWbjNz%m6tm2NVhb0001B@()|4(-_WT?@9mw002ovPDHLkV1lW_V<-Rs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00012.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..10179d5152608f7f72e16be8e80c2688538c2ad6 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>Ar>EaktG3V_}?@5Ohcvw$f zxpU;Z{iOFs+*%^4ijtqXKbEYQ>5<>0!lI@K)WpD`^Ze@P50&#?{<7%1BDDVZ$*+sw zMEo`J%Bzv`j-JFLP&>(qd4Fzy>&1O#Gpt&k2E4uex}Q?b*CEcu%%x>zUI#cL%5EE|fdnIr&}imW7idjTIu5 z&lIiMa_?r={@;g8jdgYg>F_8`IH(cKdq&sM@oD&r)6=~)=Ps;t(uvsqYG!DY-S0`e zZoQZmou%BPb=i(NDQfANOJT407A<9u_lii>J>+@hRoYoy#jQEcJFJydOb^OU60lVg zE_aMSxMEB0wU@ty?g?bu1H){V?zM(T|NLtX{RS23{8war>dHTVEl+C-8XlW7F=mDS z^~|%+pIbcAE-VnLXWT3~!9Ct zeg4a9X73sPYxA#H>NzPH@Q?p#@Xz;WD}#@pk6AW3j$ixPx7!!en9oE{JF=a>t7f4p wvulM=ZNkalT3fdJO?uhvJ~0j$JjmdIVSN?v=f3Nm3w1%lp00i_>zopr08PrdQ2+n{ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00014.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00015.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00016.png b/tests_zemu/snapshots/x-op-set-trust-line-flags-unauthorized/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00000.png b/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png b/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png b/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn@clZ-xbQt2KkJOt*Sh+kt|ml!-Pn1NLfhpH)i`Lv6mO^;Fvrv9l<=i-j`)EGf*c ziEO^sF*sFn4c=weWTBcR*Am zNs=VVcj>61%pOjhY0X3+G>S{iSKvs8>RAxdrbrQ%%~HUTnP(Vsvn+PUI#K8MuIkU8 z&2BK*K2FqIeo&lGFY=O+x<-5aJ+$l|tS37UvZ7m0mZ$%G^(O8C4n zkuyL?U=}ksf;VX&541L;8Y1v+Y%YMJP0UH(smPmm3+v!(9nwCokq@>$uPVpt&xWZF zw*FqS4|bBP&`vsyoPDqq-MoD@6w8ffI#w&Y>gkY2v!MQpjRTd}OEg~_F!!Cuot-+P z|A9$^i<<>UJu<>7>2c^Q69aHs*{OzxA2RXD@eS&QX6=hvVlu|=rl%tzFU>J3{l>hS z$S4zxG&tc=xO+yxX&v2k7t;awcDDk)JFC8=16vg2ko3Fr9&mp)n2WyNhPA@#+wKJO z&jThNxwNHD>-EqmkFk#-y#@A(@zSfpgdA(Co{T6vjH&i9vZcP-6&JC!Zsu-IT!pTls*Nya0Xu)D zdQ82rwT`G$)ha2X_%BUvR62*iRhT>5Pn2z0D8_l0ZsOI}T$e}Hi{~fe!vBh3Dg%Zj z$nSY1b9#&_NL9`-APE zPyIlply=1yhKQk-*Fs&V@8MIFQgkLlD#z+C-Tv0`*mVNqe}?oT^iyUw#q3snN$aG| zM_tl7nUxI9ep>l-erI&5gC5>Sf1k4f9U3;QM2T^gE1Yq9q$J?+J47QN?dcX34)3jw zuhG!IN{AqbF-K)iOIdM=VG z_9waa?}>8JxjwlLKkvL1)gLxHGl;{SKAxW|zg}YW94_lk*lGAZXS?>QxM1#Y`xa!& z$cq2N_)4o2pkLyLOSV{ro!#oTy71E;xYY?rT61D2^=#YEuz3%tK658nLp}i+Iroh3 zi8^+i`unSBrLU-G{cw4_;-I(NPQ#TqKE2j$N59&fgPV{3dgNdyR-v5^2ALeBVt4@n n0000000000000000Dv?++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png b/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png b/tests_zemu/snapshots/x-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00000.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn$PAP5flUFWCS$Nym8+Mz#gjb$*do*<}BYgyG?}k_lpU(aOM0t`V zNs@dnwi@bG3LBbU*uQF9yQ1r{o4>iozcIU9D^sxEc7HskaG-vqE7(@bsdwauOD0rhaI8gH{oUwvwXkzeS8|IF*_GUfPF+E`VceKBE;d-bnC_ zw*R_5yKdr~|;4trj&>S*!^*e^WX;F@k?GoiTTu%WsPlmxf7_BuSDae+fek)ud2O zfSfJF+M%huYNtO@s^tENTI^VjZ%IA=Z(iL0ho%&YLZkQ<6lw;=ax9U0{4`5|=qr}^ ztpVQtzaWk9bMjLMZ(9vDC-0iye2t5U|23Nm7DyLZ$>DcOe9d8{+T*7^0NUM?M~5=a zdfIAQtg}-s^)DMFW`PD*9P{kArl4@KW&f5*TSmCmZykVg*BG2;{YGrZSMmLUvxG=b z9hY?5Ui4Rp){8S2dES2kd(b3Fk|arzBss(nTp8|4a!3lw00000NkvXXu0mjf)v2-? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4ebd9c14f539d5c837e89a639547c4bc07e22f GIT binary patch literal 592 zcmV-W08JtVIbiLO0#A6ce|4Pv!Xt#{F#o}45q$;WV zQA?^4Ph#TTnt3`uM<~@sn~%{xr{_=;bK;JW1gl)3)6O1-1YrAZVi1pdy2XIQXWRW7 zOzh7R!bsERtjKAGq@W(E`v$!XI-S+C`q0iLdtJixgM}N zRlnKo(i-&Arag-bJ&(OZTo)hS3K|249*@Jhve3IWNoz%v=I4^=Rzkq2R)nVQos|VY zXrxl}&(+85OhM+bAfE(hIk_XQ`FD8T2+_&7KKM|67xS8NXF0VopSz3i zZ$+%OB`0%#0K8P5NYDW^++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrns>uc zeh8Zf9Xf=|e{<2136e$*QWA7>$wK(%;H{f67rcRa#a0b%s|z}ZB|G=@?OzVIfFwzh zq(s8dV4ARkl7%9C6!lT%;suwb2^?ml8CMBrX6AdT9|pQ0ijC>aETDan z&>n66xPIGQuI7J_B9U3yqapHF6~_YNv)sFR&v#ZRc4!^F`B*04o7GtW^0qf)1X^7Y zO6kbz1iBtygTMvQW{YM`R5ojp;IAvsE`;!(TxHydbNIA)4UHCe=6@Jx<=Q_?oaGu072{RKd8Pmw&7 zD>l*=3ZtxDwcBKh*^-PqxgzG9feKt$ykPlwE7^Hsdd1GrF4R2lo;t zkL$Rs*Y<*s5Y$W17e&s$1u@+#zIdJUKPUaVibURDa54}ZmN^gR@<-00=JjB}(0Ka2HkE_jBx z(CW{@3S2TYQ*rP@(JA{@RygJE8apPSp*cjA^N~!)R_$w4 zB%-tNQ2c2K7r8eCO=;#^52l)aPccvHH}!C<2lVF9wmVxgReP$UT}xCFz8Tzm47E35 zahKCJ;qq}8ek{?n8M~;l*$jKTF_1eVQZW7yyqS=Wg(%q?g7OfxY*R1)lGpO>+BKy7r z`m7m6TxDdY#h=w-Izy0H%!nt3FB{LV7HR~9AU@C3Wo-IaMrab1h;6+>=;z^dbVYPk zF{Aeup`S4uI$eqUN_yzcpn*PjhvMa`N5fDnxsYEFacdNf)k74v~0wX$yhHul|Mz^OZig^ z^S!J1`BX%=PS`~Uy|00000 n0000000000000000O9-sF2daa5fwxG00000NkvXXu0mjf;${h` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00011.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00000.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn$PAP5flUFWCS$Nym8+Mz#gjb$*do*<}BYgyG?}k_lpU(aOM0t`V zNs@dnwi@bG3LBbU*uQF9yQ1r{o4>iozcIU9D^sxEc7HskaG-vqE7(@bsdwauOD0rhaI8gH{oUwvwXkzeS8|IF*_GUfPF+E`VceKBE;d-bnC_ zw*R_5yKdr~|;4trj&>S*!^*e^WX;F@k?GoiTTu%WsPlmxf7_BuSDae+fek)ud2O zfSfJF+M%huYNtO@s^tENTI^VjZ%IA=Z(iL0ho%&YLZkQ<6lw;=ax9U0{4`5|=qr}^ ztpVQtzaWk9bMjLMZ(9vDC-0iye2t5U|23Nm7DyLZ$>DcOe9d8{+T*7^0NUM?M~5=a zdfIAQtg}-s^)DMFW`PD*9P{kArl4@KW&f5*TSmCmZykVg*BG2;{YGrZSMmLUvxG=b z9hY?5Ui4Rp){8S2dES2kd(b3Fk|arzBss(nTp8|4a!3lw00000NkvXXu0mjf)v2-? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4ebd9c14f539d5c837e89a639547c4bc07e22f GIT binary patch literal 592 zcmV-W08JtVIbiLO0#A6ce|4Pv!Xt#{F#o}45q$;WV zQA?^4Ph#TTnt3`uM<~@sn~%{xr{_=;bK;JW1gl)3)6O1-1YrAZVi1pdy2XIQXWRW7 zOzh7R!bsERtjKAGq@W(E`v$!XI-S+C`q0iLdtJixgM}N zRlnKo(i-&Arag-bJ&(OZTo)hS3K|249*@Jhve3IWNoz%v=I4^=Rzkq2R)nVQos|VY zXrxl}&(+85OhM+bAfE(hIk_XQ`FD8T2+_&7KKM|67xS8NXF0VopSz3i zZ$+%OB`0%#0K8P5NYDW^++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00011.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png b/tests_zemu/snapshots/x-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00000.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrns>uc zeh8Zf9Xf=|e{<2136e$*QWA7>$wK(%;H{f67rcRa#a0b%s|z}ZB|G=@?OzVIfFwzh zq(s8dV4ARkl7%9C6!lT%;suwb2^?ml8CMBrX6AdT9|pQ0ijC>aETDan z&>n66xPIGQuI7J_B9U3yqapHF6~_YNv)sFR&v#ZRc4!^F`B*04o7GtW^0qf)1X^7Y zO6kbz1iBtygTMvQW{YM`R5ojp;IAvsE`;!(TxHydbNIA)4UHCe=6@Jx<=Q_?oaGu072{RKd8Pmw&7 zD>l*=3ZtxDwcBKh*^-PqxgzG9feKt$ykPlwE7^Hsdd1GrF4R2lo;t zkL$Rs*Y<*s5Y$W17e&s$1u@+#zIdJUKPUaVibURDa54}ZmN^gR@<-00=JjB}(0Ka2HkE_jBx z(CW{@3S2TYQ*rP@(JA{@RygJE8apPSp*cjA^N~!)R_$w4 zB%-tNQ2c2K7r8eCO=;#^52l)aPccvHH}!C<2lVF9wmVxgReP$UT}xCFz8Tzm47E35 zahKCJ;qq}8ek{?n8M~;l*$jKTF_1eVQZW7yyqS=Wg(%q?g7OfxY*R1)lGpO>+BKy7r z`m7m6TxDdY#h=w-Izy0H%!nt3FB{LV7HR~9AU@C3Wo-IaMrab1h;6+>=;z^dbVYPk zF{Aeup`S4uI$eqUN_yzcpn*PjhvMa`N5fDnxsYEFacdNf)k74v~0wX$yhHul|Mz^OZig^ z^S!J1`BX%=PS`~Uy|00000 n0000000000000000O9-sF2daa5fwxG00000NkvXXu0mjf;${h` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00010.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00000.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00009.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00000.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn@clZ-xbQt2KkJOt*Sh+kt|ml!-Pn1NLfhpH)i`Lv6mO^;Fvrv9l<=i-j`)EGf*c ziEO^sF*sFn4c=weWTBcR*Am zNs=VVcj>61%pOjhY0X3+G>S{iSKvs8>RAxdrbrQ%%~HUTnP(Vsvn+PUI#K8MuIkU8 z&2BK*K2FqIeo&lGFY=O+x<-5aJ+$l|tS37UvZ7m0mZ$%G^(O8C4n zkuyL?U=}ksf;VX&541L;8Y1v+Y%YMJP0UH(smPmm3+v!(9nwCokq@>$uPVpt&xWZF zw*FqS4|bBP&`vsyoPDqq-MoD@6w8ffI#w&Y>gkY2v!MQpjRTd}OEg~_F!!Cuot-+P z|A9$^i<<>UJu<>7>2c^Q69aHs*{OzxA2RXD@eS&QX6=hvVlu|=rl%tzFU>J3{l>hS z$S4zxG&tc=xO+yxX&v2k7t;awcDDk)JFC8=16vg2ko3Fr9&mp)n2WyNhPA@#+wKJO z&jThNxwNHD>-EqmkFk#-y#@A(@zSfpgdA(Co{T6vjH&i9vZcP-6&JC!Zsu-IT!pTls*Nya0Xu)D zdQ82rwT`G$)ha2X_%BUvR62*iRhT>5Pn2z0D8_l0ZsOI}T$e}Hi{~fe!vBh3Dg%Zj z$nSY1b9#&_NL9`-APE zPyIlply=1yhKQk-*Fs&V@8MIFQgkLlD#z+C-Tv0`*mVNqe}?oT^iyUw#q3snN$aG| zM_tl7nUxI9ep>l-erI&5gC5>Sf1k4f9U3;QM2T^gE1Yq9q$J?+J47QN?dcX34)3jw zuhG!IN{AqbF-K)iOIdM=VG z_9waa?}>8JxjwlLKkvL1)gLxHGl;{SKAxW|zg}YW94_lk*lGAZXS?>QxM1#Y`xa!& z$cq2N_)4o2pkLyLOSV{ro!#oTy71E;xYY?rT61D2^=#YEuz3%tK658nLp}i+Iroh3 zi8^+i`unSBrLU-G{cw4_;-I(NPQ#TqKE2j$N59&fgPV{3dgNdyR-v5^2ALeBVt4@n n0000000000000000Dv?++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrP=T+y?PbbGWSzubQ!%n7{KT0FKBI z$J+Zy8iJ>gf{fuMw&S+Y42Xa(xB`4k8N*1-NTN^-N;2E{;%_L{0XsUNq6Ng8&MVWc z-rIH{V=2YaMtnWc66aYv1$C*-7c!rU_CxF}a_`w30ep|4z132>W`{Bk*$gquS-TCz zi?F!RX^Zgl9WH!lqFDnADcE#k%f$HR&D$`(DR=|(jzv{%>lAbkAtU$p;s0D50ZEc1 z$&TipcqGs3_+AAp4VSQbXIZbNTl9^|0G*mQF3-fN!i~oblxCoAt;P z{51W)W-$SXEIl^$T17 zEZGMq$yw+mokq?+SPF06z8c!SVdv>st?a6&LnVqC`6D(CR9-ES-|~YCeg7WXqW^)Q z!P&)(qa|8|Rbz=mj}{+5p_P+rX!s!$pB!&cFE|T3fX@lByJ@#4##cT@rQevJCR&sU zi!|sckrcN_z-bGbEH0)4@N%~Tdv{iSi95E)$sy_Y)2jVI*u8Ln6FeJhET8YLl zHAWSrDrbpB8?Bi-fQ%0NUE*U}sAjwxkl*CFng?P1{#b|M21r004wl z$Iv0^7*`$j9+y{@x8EuCBd?`Z|CqE7S6g)X{h%9eET1n?YF_T}F|_+7=eX1=pSged zTaaYOs7SxMoaH?L?Z5BcC0qY$BvsqSwuNs?IPU@2wC1dx)Y7)U!z(^TymKe;QD?x8 zF}L*ZgL~{hw3UH5s(oTR>$}V2j6rQ5I}JTwTzuBY_I`4B3_iT~{V@h7u?n3u=w!xV sE4mi|000000000000000007wL7a&ZL>tQeH*8l(j07*qoM6N<$f@{_6UH||9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00000.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrP=T+y?PbbGWSzubQ!%n7{KT0FKBI z$J+Zy8iJ>gf{fuMw&S+Y42Xa(xB`4k8N*1-NTN^-N;2E{;%_L{0XsUNq6Ng8&MVWc z-rIH{V=2YaMtnWc66aYv1$C*-7c!rU_CxF}a_`w30ep|4z132>W`{Bk*$gquS-TCz zi?F!RX^Zgl9WH!lqFDnADcE#k%f$HR&D$`(DR=|(jzv{%>lAbkAtU$p;s0D50ZEc1 z$&TipcqGs3_+AAp4VSQbXIZbNTl9^|0G*mQF3-fN!i~oblxCoAt;P z{51W)W-$SXEIl^$T17 zEZGMq$yw+mokq?+SPF06z8c!SVdv>st?a6&LnVqC`6D(CR9-ES-|~YCeg7WXqW^)Q z!P&)(qa|8|Rbz=mj}{+5p_P+rX!s!$pB!&cFE|T3fX@lByJ@#4##cT@rQevJCR&sU zi!|sckrcN_z-bGbEH0)4@N%~Tdv{iSi95E)$sy_Y)2jVI*u8Ln6FeJhET8YLl zHAWSrDrbpB8?Bi-fQ%0NUE*U}sAjwxkl*CFng?P1{#b|M21r004wl z$Iv0^7*`$j9+y{@x8EuCBd?`Z|CqE7S6g)X{h%9eET1n?YF_T}F|_+7=eX1=pSged zTaaYOs7SxMoaH?L?Z5BcC0qY$BvsqSwuNs?IPU@2wC1dx)Y7)U!z(^TymKe;QD?x8 zF}L*ZgL~{hw3UH5s(oTR>$}V2j6rQ5I}JTwTzuBY_I`4B3_iT~{V@h7u?n3u=w!xV sE4mi|000000000000000007wL7a&ZL>tQeH*8l(j07*qoM6N<$f@{_6UH||9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png b/tests_zemu/snapshots/x-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-empty-source/00000.png b/tests_zemu/snapshots/x-op-with-empty-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-empty-source/00001.png b/tests_zemu/snapshots/x-op-with-empty-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-empty-source/00003.png b/tests_zemu/snapshots/x-op-with-empty-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-empty-source/00007.png b/tests_zemu/snapshots/x-op-with-empty-source/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-empty-source/00009.png b/tests_zemu/snapshots/x-op-with-empty-source/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-empty-source/00010.png b/tests_zemu/snapshots/x-op-with-empty-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-muxed-source/00000.png b/tests_zemu/snapshots/x-op-with-muxed-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-muxed-source/00001.png b/tests_zemu/snapshots/x-op-with-muxed-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-muxed-source/00003.png b/tests_zemu/snapshots/x-op-with-muxed-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-muxed-source/00007.png b/tests_zemu/snapshots/x-op-with-muxed-source/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-muxed-source/00009.png b/tests_zemu/snapshots/x-op-with-muxed-source/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..01b5148144520f59508f7f7918cb96cdd7565311 GIT binary patch literal 926 zcmV;P17ZA$P)ns>uc zeh8Zf9Xf=|e{<2136e$*QWA7>$wK(%;H{f67rcRa#a0b%s|z}ZB|G=@?OzVIfFwzh zq(s8dV4ARkl7%9C6!lT%;suwb2^?ml8CMBrX6AdT9|pQ0ijC>aETDan z&>n66xPIGQuI7J_B9U3yqapHF6~_YNv)sFR&v#ZRc4!^F`B*04o7GtW^0qf)1X^7Y zO6kbz1iBtygTMvQW{YM`R5ojp;IAvsE`;!(TxHydbNIA)4UHCe=6@Jx<=Q_?oaGu072{RKd8Pmw&7 zD>l*=3ZtxDwcBKh*^-PqxgzG9feKt$ykPlwE7^Hsdd1GrF4R2lo;t zkL$Rs*Y<*s5Y$W17e&s$1u@+#zIdJUKPUaVibURDa54}ZmN^gR@<-00=JjB}(0Ka2HkE_jBx z(CW{@3S2TYQ*rP@(JA{@RygJE8apPSp*cjA^N~!)R_$w4 zB%-tNQ2c2K7r8eCO=;#^52l)aPccvHH}!C<2lVF9wmVxgReP$UT}xCFz8Tzm47E35 zahKCJ;qq}8ek{?n8M~;l*$jKTF_1eVQZW7yyqS=Wg(%q?g7OfxY*R1)lGpO>+BKy7r z`m7m6TxDdY#h=w-Izy0H%!nt3FB{LV7HR~9AU@C3Wo-IaMrab1h;6+>=;z^dbVYPk zF{Aeup`S4uI$eqUN_yzcpn*PjhvMa`N5fDnxsYEFacdNf)k74v~0wX$yhHul|Mz^OZig^ z^S!J1`BX%=PS`~Uy|00000 n0000000000000000O9-sF2daa5fwxG00000NkvXXu0mjf;${h` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-muxed-source/00011.png b/tests_zemu/snapshots/x-op-with-muxed-source/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-with-muxed-source/00012.png b/tests_zemu/snapshots/x-op-with-muxed-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-public-key-approve/00000.png b/tests_zemu/snapshots/x-public-key-approve/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..23fe56d3cbca05f1cd43cb41356189ef5020c299 GIT binary patch literal 399 zcmV;A0dW3_P)Zc{Zw^YPAM6d z^Y*8|8bZ`N0A}Vc^N5$f#JvNG zSVs)~Al_4u@EGdEGZHZX007`}eiKH`>^^*2KDB5k^H{ut!#EyKsVgtAi%eKmo2hI) z%~EH-%`L@8DWzgJ^9h`}Q?@ZTx>+wTZd}~CbKq_A-;FvN8dq`cQvtWCTOKbJ5UwNL zr*8K@Cgms$y<*WZdgv+v008h8I@!SDa79pF5-}OG#0SK56BmhC$I1)8NZB^6;%A7< zrXkFg8$JJz(MuCFjZ&S`3e___ZtK8N6Lexwny+u%M<(Ud)iw tDam?TQI;kqJFkq<2?GEC00000kT15?6tiux!o2_h002ovPDHLkV1jq5q~ibp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-public-key-approve/00001.png b/tests_zemu/snapshots/x-public-key-approve/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..efb147a70525a4721c1801da8ba4176db0d18cc5 GIT binary patch literal 895 zcmV-_1AzRAP)S@#3`CVoI${4Msh50s!a;Cxc}a@1@5`nr0=z(Q?c*SX5JCtcC29;^%GECmplCx(`{vBeI<2}_yaQR-XyzrfDE{*P%SPbw$?gPrf4fP z?N;0rK$?(+SDw#r#e6*6eNB0P{>rI92qEOZ@R2`8QpPCRuV14^+{&tc)PlTiByU+0 zQDM|t)2rrva6EGb6X!@O82jpGdr1b8XYqMCVkoa{O;`ylPoJ(?C^$aXqS{2-D_0dW+hLn zq()L}^vE?DC7^E0dFq_Yw4hfbw+dI-13$Q}*$-XvB=`tdIzcJa?NqbNOP6`ZQsP3QowVETJ!&YZ#>`uJeHbv2IEE`uh@r*=v~SM8 zB!AR&rkQaLpBA_OOhO1Dgb?ya$^IJ}>3qF~1Hz%wAe$1Sm0c4nN_n;UDB^$eOMQ|q z_u;CH?$@MHmPd_%3TyNA#FMB&+vadV*4?-X&j^ag?;V{`yg!$9 z4OS8dY~-<~Wtg&iE|;k%C$+7H&X~b9XIE*!jYgq=xIxuyF2I57%;nJ`Xt~ld{}WTR zjfP!%^aLDN&B2YJXTSjN`H@Enml`_UpW2W32#KtKu?RW;Y@J-SC4>+{2qEMVd;??Q V8g`Q7WUT-I002ovPDHLkV1iZHt0n*d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-public-key-approve/00002.png b/tests_zemu/snapshots/x-public-key-approve/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f6dbf945fdeb1a0de5ddd245471ff7df9335d GIT binary patch literal 478 zcmV<40U`d0P)ENb5Oic0%#tf+t17{^*`(VEwvAIq%h&QE%c4z&a7Osut9QHY;WSw96YPnW*} zL_o!A5Pefm7Gut;ffm<}XRKSyvKGyYR;>Wh+~C|lRzn}$V7NuGsmYOR$sSM^Y^t?W z_JZ!;I?}MycCX|C*xKEvf=5mt3r8lGpUrpkPrT;CEqu{eZgqZ6P&YbjJGEx?flb(X z@)5iJcsr+6h)T(atKU>UT*?5Xv;+Wvr{u@bxb5XYJU)t-hVi@5cD@Wxmg=LeQ|);7 ztlqr=^&6aXFn(f+)L@l&u07eRPZ6{F8Ty#8*8B5e+e*5Xy9~gtK78q8lU`xmss9I9 zQu;q;`R!P&t^bwlEq=as4%7>+KOw9-Px!Af=xtJvV`@_0Z6}Zea7p9ZpQ7!?vo-9x zFa_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YaC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-public-key-reject/00000.png b/tests_zemu/snapshots/x-public-key-reject/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..23fe56d3cbca05f1cd43cb41356189ef5020c299 GIT binary patch literal 399 zcmV;A0dW3_P)Zc{Zw^YPAM6d z^Y*8|8bZ`N0A}Vc^N5$f#JvNG zSVs)~Al_4u@EGdEGZHZX007`}eiKH`>^^*2KDB5k^H{ut!#EyKsVgtAi%eKmo2hI) z%~EH-%`L@8DWzgJ^9h`}Q?@ZTx>+wTZd}~CbKq_A-;FvN8dq`cQvtWCTOKbJ5UwNL zr*8K@Cgms$y<*WZdgv+v008h8I@!SDa79pF5-}OG#0SK56BmhC$I1)8NZB^6;%A7< zrXkFg8$JJz(MuCFjZ&S`3e___ZtK8N6Lexwny+u%M<(Ud)iw tDam?TQI;kqJFkq<2?GEC00000kT15?6tiux!o2_h002ovPDHLkV1jq5q~ibp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-public-key-reject/00001.png b/tests_zemu/snapshots/x-public-key-reject/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..efb147a70525a4721c1801da8ba4176db0d18cc5 GIT binary patch literal 895 zcmV-_1AzRAP)S@#3`CVoI${4Msh50s!a;Cxc}a@1@5`nr0=z(Q?c*SX5JCtcC29;^%GECmplCx(`{vBeI<2}_yaQR-XyzrfDE{*P%SPbw$?gPrf4fP z?N;0rK$?(+SDw#r#e6*6eNB0P{>rI92qEOZ@R2`8QpPCRuV14^+{&tc)PlTiByU+0 zQDM|t)2rrva6EGb6X!@O82jpGdr1b8XYqMCVkoa{O;`ylPoJ(?C^$aXqS{2-D_0dW+hLn zq()L}^vE?DC7^E0dFq_Yw4hfbw+dI-13$Q}*$-XvB=`tdIzcJa?NqbNOP6`ZQsP3QowVETJ!&YZ#>`uJeHbv2IEE`uh@r*=v~SM8 zB!AR&rkQaLpBA_OOhO1Dgb?ya$^IJ}>3qF~1Hz%wAe$1Sm0c4nN_n;UDB^$eOMQ|q z_u;CH?$@MHmPd_%3TyNA#FMB&+vadV*4?-X&j^ag?;V{`yg!$9 z4OS8dY~-<~Wtg&iE|;k%C$+7H&X~b9XIE*!jYgq=xIxuyF2I57%;nJ`Xt~ld{}WTR zjfP!%^aLDN&B2YJXTSjN`H@Enml`_UpW2W32#KtKu?RW;Y@J-SC4>+{2qEMVd;??Q V8g`Q7WUT-I002ovPDHLkV1iZHt0n*d literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-public-key-reject/00002.png b/tests_zemu/snapshots/x-public-key-reject/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f6dbf945fdeb1a0de5ddd245471ff7df9335d GIT binary patch literal 478 zcmV<40U`d0P)ENb5Oic0%#tf+t17{^*`(VEwvAIq%h&QE%c4z&a7Osut9QHY;WSw96YPnW*} zL_o!A5Pefm7Gut;ffm<}XRKSyvKGyYR;>Wh+~C|lRzn}$V7NuGsmYOR$sSM^Y^t?W z_JZ!;I?}MycCX|C*xKEvf=5mt3r8lGpUrpkPrT;CEqu{eZgqZ6P&YbjJGEx?flb(X z@)5iJcsr+6h)T(atKU>UT*?5Xv;+Wvr{u@bxb5XYJU)t-hVi@5cD@Wxmg=LeQ|);7 ztlqr=^&6aXFn(f+)L@l&u07eRPZ6{F8Ty#8*8B5e+e*5Xy9~gtK78q8lU`xmss9I9 zQu;q;`R!P&t^bwlEq=as4%7>+KOw9-Px!Af=xtJvV`@_0Z6}Zea7p9ZpQ7!?vo-9x zFa_FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YMjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-public-key-reject/00005.png b/tests_zemu/snapshots/x-public-key-reject/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00000.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00001.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00003.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00008.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00009.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00010.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-one-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00000.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00001.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00003.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00008.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00009.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00010.png b/tests_zemu/snapshots/x-tx-cond-extra-signers-with-two-signers/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-is-none/00000.png b/tests_zemu/snapshots/x-tx-cond-is-none/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-is-none/00001.png b/tests_zemu/snapshots/x-tx-cond-is-none/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4f662118263d3531c30d4912887fcc3d68bd70 GIT binary patch literal 932 zcmV;V16%xwP)K4{pHahXrXu8$I)ms8jVJy(P%u5Ux?8d<9ayH zQ!A;(^uI5JOJI$A@zF}e{D8E77ZKh9(mV}g4A&+E;!ShD(&JP?N`Iov&hr#q^D(;` zueEMYBNAx-B!Sikk&H;m4reqrjhY!S8%74goQZr&Y6B-4Xu6$+cHQ--Xiruf*R2S= zU9lM;f{ejXm9>PoljI^1h@fOU;roGBh#=4bWX|#|l<$^T6y7(lY|94j>_Fiqs3h;a z3gYB*@-8yT(W}`5=8}gWNca)LHPZsEg|i}l5VRu_h>PcZ;3t9vfkwf(w)|xL-{F1- zR558Z8jZ$33rh_Zzs*w@MFiFi;KRo-t6B9@C|-G=MMjK!G112|*weSon|^9Duw@U}1hOut zvry%y1hfOlvFv(4-q@|1r(Kb}EW~4J5FLsJuKzpDaa|p5f47A60MsOR_8)_g>dyYd z=stK8y$ZbvC&}FhTfx)od>g7MD#vmGCMBeLLZQ@{fUbmCG*a6j(- zPovRjG#ZV@rz3g|K~90LG9}uKFCczwQEaWq-D-Zsx^^oNs(#Iz_B?B@XKrI0u0#Bcg`xORh*Pt>c27l<3HhRzn}gE6ih? zu%TbNus;daY(gcXt3w%>H#bZ-IU?0YqtR$I8jVKdBk&g`T+INX^F8AL0000EaktG3V{fz)6P{I2>-z z-Rt?TUgiBJ`I&_=4vyYuw$#4YHstEa;Hb0#YGPp6_PM7-Yv~;Est36p0YZ5+uJ*RRfW== zu3y76vh;nDeI}dib&sqzNoT*(*{QMOcEJ1Ng(*ixLpN?MwAr@T^!N6*y-o#L#nuO0 zjy$+BVVmpu$RA0L6BBN(U8dSRq04w9L(=(gd`DdTbgOdB_D@rOy;nx~vU@<+{jU=` zCPZIaIIryT3|8*qdyHTAbgQda)fepkDzde=G{Jzo#B`hZ^R1P2U3L>!I!>Rm$IRC9 zpI(rd!cidxh9415S1*)^6}im4`n5}P@28aW4I7{ErzqMRZ!X$=I3XwC!Lv823&l)Y zBmJ+=5BYj=LEJWh7;}X!8m0|0dnq z&ah}g(7)-QT%RAT->2ET?)!BW^-cMVF0%^1a_)9?9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-is-none/00004.png b/tests_zemu/snapshots/x-tx-cond-is-none/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-is-none/00009.png b/tests_zemu/snapshots/x-tx-cond-is-none/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-is-none/00010.png b/tests_zemu/snapshots/x-tx-cond-is-none/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-is-none/00011.png b/tests_zemu/snapshots/x-tx-cond-is-none/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00000.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00001.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00003.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00008.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00009.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00010.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-are-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00000.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00001.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00003.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez&D zCuO((p;`kFy@|H%D_TZ&K)zlX%|`5Uq1douGU^+vuULO=w91vmsM;G5)z@&Sh0Z!uGQ9XE2OX|W#KhBbmQ@^c>5B{Ip{dhj?clb55>)fj0 zxl4HbENGrT`c~=)cIdkfw+}iw0eq*C)q_d#wO!)r$60c#i)(#s9@xnYGSS~g2{qB*j5#=oEOZjj;gbk20000000000 h000000001Rn_u?Iq;1p|t16P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00009.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00010.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00011.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-max-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00000.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00001.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00003.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez zPqgG+VRi6s%+!Zevn*NhyB=b<_vZc6JSN)c8?(GGs?~JmvU!X#gy3I2t-CS{qQm;T z+Uh_S&1kEy*j+BeDw0RdGn#EC*`4HEj#Xn@ zkiE&Ynq<4silNo*X|BKWpNP8r6XTkI_@aZR68lQ6n!3<4n8es^J=;;WtK|Tl^l(}o zu9j?9_US+;?%)Q$1HN15m+*?MzheOa>oz_E{IcU?_1#0YM2cgj5yx5b@3aol#%a3y z;%NHA^$s6Hhu-9TrO9_eZ{g2=YwM8v?;a;7z)!#5m&U_D?zx_hZ9(ZD3F*Unz}sbC z4z7S~KUvJ(O|viMG4#ktrjMb6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00009.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00010.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00011.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds-min-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00000.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00001.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00003.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez&D zCuO((p;`kFy@|H%D_TZ&K)zlX%|`5Uq1douGU^+vuULO=w91vmsM;G5)z@&Sh0Z!uGQ9XE2OX|W#KhBbmQ@^c>5B{Ip{dhj?clb55>)fj0 zxl4HbENGrT`c~=)cIdkfw+}iw0eq*C)q_d#wO!)r$60c#i)(#s9@xnYGSS~g2{qB*j5#=oEOZjj;gbk20000000000 h000000001Rn_u?Iq;1p|t1 zPqgG+VRi6s%+!Zevn*NhyB=b<_vZc6JSN)c8?(GGs?~JmvU!X#gy3I2t-CS{qQm;T z+Uh_S&1kEy*j+BeDw0RdGn#EC*`4HEj#Xn@ zkiE&Ynq<4silNo*X|BKWpNP8r6XTkI_@aZR68lQ6n!3<4n8es^J=;;WtK|Tl^l(}o zu9j?9_US+;?%)Q$1HN15m+*?MzheOa>oz_E{IcU?_1#0YM2cgj5yx5b@3aol#%a3y z;%NHA^$s6Hhu-9TrO9_eZ{g2=YwM8v?;a;7z)!#5m&U_D?zx_hZ9(ZD3F*Unz}sbC z4z7S~KUvJ(O|viMG4#ktrjMb6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00010.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00011.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00012.png b/tests_zemu/snapshots/x-tx-cond-ledger-bounds/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00000.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00001.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00003.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez^}q4j_9)DXTFPPw;UPKjNI<;X{1Hy=S2i2+b1cy*=Y+V#z}#w$ zwk}(*MdJ?WK9zYyQu6G<5`k`IOO(fIYA1S70u*8u$ty{IY#gflI9JDCWO)e^g=P4D zQs36YZXCIFT6LLmSSOrjz&FoPt43QI%R%xPAaW_HkdK|aAR{qvVsv6-b0{pic{X-}VO=bLb~k_<=xM@z^4A7m_(y?TzwR{py}tJhe| zIrPdN3YPB5IdfYUdC+t2Rl)PcIpI~94tk60RR9100000000000001hW!`ziimn&j6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00009.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00010.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00011.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-age/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00000.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00001.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00003.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezzel(q-$BV#QUQXm%9a=K6?E!-k*Is_pfi4 z;Gf+3z4s*zq=kN7y%vzLjv7Ac z?2&2^d|r9GFtW5zxG1`VD4%RG;-w0&bcajs+6?8VF1bSvEvI2heDYjbc; z_I385*fr2jDNpR`pCcXefR3NC*{T`l%Eys%9?cYpGj-T6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00009.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00010.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00011.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence-ledger-gap/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00000.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00001.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00003.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezEaktG3V{f=%S+v91fTL z${+ok{v__##Ffdd8g>RJ?-cLb6UWTaHBp8gsEOe~**=?=V-n}xI2_+v)-S8?z4WI4 z%G;Nh-km+K8})W_{gll%A9x*l3|l7XKfF?(^4d^7`Qz3*!mVA}ip%w`PST!SmHYZ> z_0A)VOX8n2ERuDaurB_^f|Q`k+dSn28@P^YPP!wTeCBpp;IV_Z3wRv%6{Lwxv^m+o zUv|Q`gVlxi8I865>{jo(E!WKM_WGjc3mb-RV}sO5f7VZam{6_$i{HuZ=|h_;_8KM@ z28IX4nIX=px@%snyzcqwx^-zv@V<@iS0grtm3=!`c*#%r=-dB4;yDA@#cf|nFBG|y zb0hb~*0P+wWZtQ_qA#4en{xH)vegB)3qF4PeZ8q@%dW3~)WW9pv77MC2+x>e7Eu)< z#253?KMpLOhc~KPncNx_>alz-9EOu=_ae1^Zl(YUo#g>mHd;oPxp6a z0NVmP#+lc5*sfd=3B>10K{bl2*S|I#`R&YjTu nZpp)xqz7E@SV19=4hkNNpZ|D7Zsxs|?;t5pS3j3^P66P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00009.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00010.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00011.png b/tests_zemu/snapshots/x-tx-cond-min-account-sequence/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00000.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00001.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00003.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00008.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00009.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00010.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-are-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00000.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00001.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4f662118263d3531c30d4912887fcc3d68bd70 GIT binary patch literal 932 zcmV;V16%xwP)K4{pHahXrXu8$I)ms8jVJy(P%u5Ux?8d<9ayH zQ!A;(^uI5JOJI$A@zF}e{D8E77ZKh9(mV}g4A&+E;!ShD(&JP?N`Iov&hr#q^D(;` zueEMYBNAx-B!Sikk&H;m4reqrjhY!S8%74goQZr&Y6B-4Xu6$+cHQ--Xiruf*R2S= zU9lM;f{ejXm9>PoljI^1h@fOU;roGBh#=4bWX|#|l<$^T6y7(lY|94j>_Fiqs3h;a z3gYB*@-8yT(W}`5=8}gWNca)LHPZsEg|i}l5VRu_h>PcZ;3t9vfkwf(w)|xL-{F1- zR558Z8jZ$33rh_Zzs*w@MFiFi;KRo-t6B9@C|-G=MMjK!G112|*weSon|^9Duw@U}1hOut zvry%y1hfOlvFv(4-q@|1r(Kb}EW~4J5FLsJuKzpDaa|p5f47A60MsOR_8)_g>dyYd z=stK8y$ZbvC&}FhTfx)od>g7MD#vmGCMBeLLZQ@{fUbmCG*a6j(- zPovRjG#ZV@rz3g|K~90LG9}uKFCczwQEaWq-D-Zsx^^oNs(#Iz_B?B@XKrI0u0#Bcg`xORh*Pt>c27l<3HhRzn}gE6ih? zu%TbNus;daY(gcXt3w%>H#bZ-IU?0YqtR$I8jVKdBk&g`T+INX^F8AL0000EaktG3V{fz)6P{I2>-z z-Rt?TUgiBJ`I&_=4vyYuw$#4YHstEa;Hb0#YGPp6_PM7-Yv~;Est36p0YZ5+uJ*RRfW== zu3y76vh;nDeI}dib&sqzNoT*(*{QMOcEJ1Ng(*ixLpN?MwAr@T^!N6*y-o#L#nuO0 zjy$+BVVmpu$RA0L6BBN(U8dSRq04w9L(=(gd`DdTbgOdB_D@rOy;nx~vU@<+{jU=` zCPZIaIIryT3|8*qdyHTAbgQda)fepkDzde=G{Jzo#B`hZ^R1P2U3L>!I!>Rm$IRC9 zpI(rd!cidxh9415S1*)^6}im4`n5}P@28aW4I7{ErzqMRZ!X$=I3XwC!Lv823&l)Y zBmJ+=5BYj=LEJWh7;}X!8m0|0dnq z&ah}g(7)-QT%RAT->2ET?)!BW^-cMVF0%^1a_)9?9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00004.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez&D zCuO((p;`kFy@|H%D_TZ&K)zlX%|`5Uq1douGU^+vuULO=w91vmsM;G5)z@&Sh0Z!uGQ9XE2OX|W#KhBbmQ@^c>5B{Ip{dhj?clb55>)fj0 zxl4HbENGrT`c~=)cIdkfw+}iw0eq*C)q_d#wO!)r$60c#i)(#s9@xnYGSS~g2{qB*j5#=oEOZjj;gbk20000000000 h000000001Rn_u?Iq;1p|t1 zPqgG+VRi6s%+!Zevn*NhyB=b<_vZc6JSN)c8?(GGs?~JmvU!X#gy3I2t-CS{qQm;T z+Uh_S&1kEy*j+BeDw0RdGn#EC*`4HEj#Xn@ zkiE&Ynq<4silNo*X|BKWpNP8r6XTkI_@aZR68lQ6n!3<4n8es^J=;;WtK|Tl^l(}o zu9j?9_US+;?%)Q$1HN15m+*?MzheOa>oz_E{IcU?_1#0YM2cgj5yx5b@3aol#%a3y z;%NHA^$s6Hhu-9TrO9_eZ{g2=YwM8v?;a;7z)!#5m&U_D?zx_hZ9(ZD3F*Unz}sbC z4z7S~KUvJ(O|viMG4#ktrjMb6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00011.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00012.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00013.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-is-none/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00000.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00001.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00003.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezAt>EaktG3V{fz`i3291eHS z-dpnBKIr`>`N^hk6PaACXIH+@ex#rfkh4_;sEMKBZ4K+QInN`#Ec+J!mYoo?O#4%p ztN8QEzI|8kUkzI-`oitdzduKou@>x%5Wl%D*Qaw{-QrHkq`PNy+KMMkYuKpg(wL{p z_&2$=@9XVdAGyxX4bgpS?S1j1yCKWcXmD zeu;neQtqI)zZJWS?R2rD+Zi?_=}(`#%C7tPc5McR9~m;s7e4ZQ@}|XIQt+zYr0f3C zvFTyoTQ5u4|4MJy{pBGW@^6>&`rXr)-ha2}1atf$-Fsdq_p)WUzxh>s`p-j_H|}q2 z)&)GHyZd%gSu^$oY{kF4HzVD^eURh|6(oh55;slG8fvhWh$GDo#vw*{Ph vznDAo&1=#7q9X37#_p}S2NeDo;PemH&;DN-iw^4XgXBD2{an^LB{Ts5x>M$= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00005.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc42f2914ea26991a3cc46e5a8af564d4ab4d71 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00009.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00010.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00011.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-max-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00000.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00001.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00003.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezEaktG3V{fz)6P{INI*c z-Rt?TUgiBJ{<&6~8cnlIGWWk<`TCzD(+L$7RiG}0hRZ(-UlpCxT$+3P$a}`68zV9# z#gn4Nl%B7t)!W}%?W7Rq6!-V6Rh|%Uz}GO=vR}tv8-M|jr->z6DuWn{P>vV!6S9a!|#Uy8l?CSg&y P1xU)%)z4*}Q$iB}`Vi}7 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00005.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc42f2914ea26991a3cc46e5a8af564d4ab4d71 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00009.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00010.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00011.png b/tests_zemu/snapshots/x-tx-cond-time-bounds-min-is-zero/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds/00000.png b/tests_zemu/snapshots/x-tx-cond-time-bounds/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds/00001.png b/tests_zemu/snapshots/x-tx-cond-time-bounds/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds/00003.png b/tests_zemu/snapshots/x-tx-cond-time-bounds/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezA!>EaktG3V{f$Vo>OI2`7# z-0AtQUgf=!{K{=I;w(Vg+nfKid}HVe)>(qv?d|s+mzfcxGkMMPYs+2y_Fp>ElX&-x&aPsCX$|}I+L+Gz z$o%@v_4f7lvSj|V6GP^nDxb3Gt!ofV_~jjGhmLyL2dPM#SJfwdUO4BgzaVx$S)rJ!OBM!KHgB=G!`dKLyEA6xtIa$9ma;N1$oIZADXEaKw0q-B1*O%Q>>W?s;a`2aaqVS@R#hN<#MN{(5?|A6_L*e1kr9b7aaQxo! z&h9|h%a*$(ftNXE8|`}IcdeW8JlBOAFH-wrq;*&F_a(JXui{(BSaQSb7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds/00010.png b/tests_zemu/snapshots/x-tx-cond-time-bounds/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds/00011.png b/tests_zemu/snapshots/x-tx-cond-time-bounds/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-time-bounds/00012.png b/tests_zemu/snapshots/x-tx-cond-time-bounds/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-with-all-items/00000.png b/tests_zemu/snapshots/x-tx-cond-with-all-items/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-with-all-items/00001.png b/tests_zemu/snapshots/x-tx-cond-with-all-items/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-with-all-items/00003.png b/tests_zemu/snapshots/x-tx-cond-with-all-items/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHezA!>EaktG3V{f$Vo>OI2`7# z-0AtQUgf=!{K{=I;w(Vg+nfKid}HVe)>(qv?d|s+mzfcxGkMMPYs+2y_Fp>ElX&-x&aPsCX$|}I+L+Gz z$o%@v_4f7lvSj|V6GP^nDxb3Gt!ofV_~jjGhmLyL2dPM#SJfwdUO4BgzaVx$S)rJ!OBM!KHgB=G!`dKLyEA6xtIa$9ma;N1$oIZADXEaKw0q-B1*O%Q>>W?s;a`2aaqVS@R#hN<#MN{(5?|A6_L*e1kr9b7aaQxo! z&h9|h%a*$(ftNXE8|`}IcdeW8JlBOAFH-wrq;*&F_a(JXui{(BSaQSb7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn&D zCuO((p;`kFy@|H%D_TZ&K)zlX%|`5Uq1douGU^+vuULO=w91vmsM;G5)z@&Sh0Z!uGQ9XE2OX|W#KhBbmQ@^c>5B{Ip{dhj?clb55>)fj0 zxl4HbENGrT`c~=)cIdkfw+}iw0eq*C)q_d#wO!)r$60c#i)(#s9@xnYGSS~g2{qB*j5#=oEOZjj;gbk20000000000 h000000001Rn_u?Iq;1p|t1 zPqgG+VRi6s%+!Zevn*NhyB=b<_vZc6JSN)c8?(GGs?~JmvU!X#gy3I2t-CS{qQm;T z+Uh_S&1kEy*j+BeDw0RdGn#EC*`4HEj#Xn@ zkiE&Ynq<4silNo*X|BKWpNP8r6XTkI_@aZR68lQ6n!3<4n8es^J=;;WtK|Tl^l(}o zu9j?9_US+;?%)Q$1HN15m+*?MzheOa>oz_E{IcU?_1#0YM2cgj5yx5b@3aol#%a3y z;%NHA^$s6Hhu-9TrO9_eZ{g2=YwM8v?;a;7z)!#5m&U_D?zx_hZ9(ZD3F*Unz}sbC z4z7S~KUvJ(O|viMG4#ktrjMbEaktG3V{f=%S+v91fTL z${+ok{v__##Ffdd8g>RJ?-cLb6UWTaHBp8gsEOe~**=?=V-n}xI2_+v)-S8?z4WI4 z%G;Nh-km+K8})W_{gll%A9x*l3|l7XKfF?(^4d^7`Qz3*!mVA}ip%w`PST!SmHYZ> z_0A)VOX8n2ERuDaurB_^f|Q`k+dSn28@P^YPP!wTeCBpp;IV_Z3wRv%6{Lwxv^m+o zUv|Q`gVlxi8I865>{jo(E!WKM_WGjc3mb-RV}sO5f7VZam{6_$i{HuZ=|h_;_8KM@ z28IX4nIX=px@%snyzcqwx^-zv@V<@iS0grtm3=!`c*#%r=-dB4;yDA@#cf|nFBG|y zb0hb~*0P+wWZtQ_qA#4en{xH)vegB)3qF4PeZ8q@%dW3~)WW9pv77MC2+x>e7Eu)< z#253?KMpLOhc~KPncNx_>alz-9EOu=_ae1^Zl(YUo#g>mHd;oPxp6a z0NVmP#+lc5*sfd=3B>10K{bl2*S|I#`R&YjTu nZpp)xqz7E@SV19=4hkNNpZ|D7Zsxs|?;t5pS3j3^P6^}q4j_9)DXTFPPw;UPKjNI<;X{1Hy=S2i2+b1cy*=Y+V#z}#w$ zwk}(*MdJ?WK9zYyQu6G<5`k`IOO(fIYA1S70u*8u$ty{IY#gflI9JDCWO)e^g=P4D zQs36YZXCIFT6LLmSSOrjz&FoPt43QI%R%xPAaW_HkdK|aAR{qvVsv6-b0{pic{X-}VO=bLb~k_<=xM@z^4A7m_(y?TzwR{py}tJhe| zIrPdN3YPB5IdfYUdC+t2Rl)PcIpI~94tk60RR9100000000000001hW!`ziimn&jzel(q-$BV#QUQXm%9a=K6?E!-k*Is_pfi4 z;Gf+3z4s*zq=kN7y%vzLjv7Ac z?2&2^d|r9GFtW5zxG1`VD4%RG;-w0&bcajs+6?8VF1bSvEvI2heDYjbc; z_I385*fr2jDNpR`pCcXefR3NC*{T`l%Eys%9?cYpGj-T6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-with-all-items/00015.png b/tests_zemu/snapshots/x-tx-cond-with-all-items/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-with-all-items/00016.png b/tests_zemu/snapshots/x-tx-cond-with-all-items/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-cond-with-all-items/00017.png b/tests_zemu/snapshots/x-tx-cond-with-all-items/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-custom-base-fee/00000.png b/tests_zemu/snapshots/x-tx-custom-base-fee/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-custom-base-fee/00001.png b/tests_zemu/snapshots/x-tx-custom-base-fee/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DLv4LQ&`HyNiWiJ`pUAXJKSuc#!rcGb4TfD*d@`R?C+!+-5AW^2>asjG9%s zC1rnpO?rCNf2QvF;JvXd?)f6m_P&27YV(PZ`@T!Bgxr@*HV}@@STKPx1c`dO L`njxgN@xNA(_6Lh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-custom-base-fee/00003.png b/tests_zemu/snapshots/x-tx-custom-base-fee/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O00009rtF-9iyr{}m%)0;J(LvWYpjg9K>T+bFZv{LUb1-{)G?U@qg)txXPDb9oH^vzA1vES4W9!w{ z)y!jVRb7hQdYSiTZ?0>`?|g`!=E_3|&9$W=MTZn5wKroHarQmvWz~CBM;p)n6}Oy# zLQ$H!L-UB73Y%Ikm+5k}$s2OT2IK~b_Fm^Vo6qycD=4|?{MIpNW|@gLGw<~cNU!Ry z&ZGG$&ifAn9%w?b000000002sHvbw(=JG?=8Oi_v002ovPDHLkV1j>W BprZf) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-custom-base-fee/00007.png b/tests_zemu/snapshots/x-tx-custom-base-fee/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bae17cff27abca5f3a347a0a0d0e03338576bd52 GIT binary patch literal 332 zcmV-S0ki&zP)ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-custom-base-fee/00010.png b/tests_zemu/snapshots/x-tx-custom-base-fee/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-custom-base-fee/00011.png b/tests_zemu/snapshots/x-tx-custom-base-fee/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..d6eef2bdc135ff651e261a1442af29958144fffb GIT binary patch literal 359 zcmV-t0hs=YP)~6uD?0&Uur-C;osoeZ2qx;C4U5BV&yDWe8zS~94Y~H!Z z%vXr^UeI1TLlZ_??faDkhg6p!#5GNYNpMr1olNk@H@IfjJ)o+Y?w~{Rt=( zr8#z}9+6A2sim_<)$KeSIQd!Hz5uz#EYG&{a%;oq({{arl1+#An0e_gJ;VD0XC82H z0n%1YKLFY%`q;k_*wg+xd0DsR-=6uvcG_dUYc^kR`zwex3jhEB06fV5Xj^?Kuj=36 zw8*M|n@Xuw|7OICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000FWqqk5ng)k(8wsI>bbIB{hmz5*mh7SzPu#=+j2vvMt8e`sQ7P@On4 z)anr-<|DQlw8Ry_W~Evhn>$NU$;#o~nfYW+QjV^cz6CYGiETTpjIHVXUL-O}+k%|T zZk~{vG*Y@&ouqh<55Ra1p}Xg>(^=1I(rVLQtjdlP^|U~`u)?$~EKIPwf&y?hJnG@w zu|EJ=ObUfUq3|t0)lf?TRYj6<;j*3`ohGyb6^Nu~hr_gA-zYga&8??i@WB+i341L^mO?-dn|&+~03GKTkW|WER>!~>2V)`Nv~ixhThJ@7;8x;} zmI3$*P-mGH`E8evH_V}9w4Q1#Z*mDHk% zZ>Rby_busy|+t>k_PH-b}CN8DM67||kByPli=BJ72@!UB&Vkc?Q z5rqZ-Pr(N!3!%g`zQF5;FwirAz3v%Czm<$!-4m>~NJf}Lu+CC`an6U~)7Hv2qQ;<5 zC=?0>7rwS9)kIY_^o^=U)(lBYJ-VF=K4Hd(6{#epaq1@ywF5OC*^^^Iil!q$OThtf z!eJ@KgF^gRc>L2uilyt1S{XN62FRE za-|+rv}lLYdZUAe<*YGeve;F68>du3C(}dQVGjDS z;H`iz-mdsl%vTLZk+lhcAA<&%sGD+FbN)cdUBME?1L8RmH3o%3p-?CkJ{Z3PaN%vE SZ0`dA0000JY_Tz5J6-}ntMJv2_ZZLmR*t(00026-Pgi*N-6Sf&iR=U zT&*2%q?A&>UMHv;l)czGvIW2I)d8oRvl@z1DMfyzwzIzx*_wLYo0=@Qb!J16Qu!lT4~< zHZs_ry&h9UOxN;3*cG65W%JXuNls14R$fcZ%}Z)IR(se>ukxUg=H0^6MIEr3U^A_$ zI#WGDbMA%>jeM?<1qc}l0N_)soQ8%N9QZT~?K#i5rv0bSJ|_APi2j@21A{7W9yCT3 z4xa9Jia&~YarWr+tYZuC%!MDGG!8Dwu?29RuQg-c{1M95yf%CN>lw`cHHiE@;12$S zJZH@-%JSZO)~heT#UHQNiL8@OL3=L4C+~#*5UcznU&{nlOBMz*HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-custom-base-fee/00016.png b/tests_zemu/snapshots/x-tx-custom-base-fee/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-custom-base-fee/00017.png b/tests_zemu/snapshots/x-tx-custom-base-fee/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-hide-sequence/00000.png b/tests_zemu/snapshots/x-tx-hide-sequence/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-hide-sequence/00001.png b/tests_zemu/snapshots/x-tx-hide-sequence/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-hide-sequence/00003.png b/tests_zemu/snapshots/x-tx-hide-sequence/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1031d9e1ec602fac2563233d6ecd580b03ab78b8 GIT binary patch literal 523 zcmV+m0`&cfP)7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-hide-sequence/00008.png b/tests_zemu/snapshots/x-tx-hide-sequence/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-hide-sequence/00009.png b/tests_zemu/snapshots/x-tx-hide-sequence/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-hash/00000.png b/tests_zemu/snapshots/x-tx-memo-hash/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-hash/00001.png b/tests_zemu/snapshots/x-tx-memo-hash/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d5d01dbde9d366204693aef005acfbcf1a3ed3 GIT binary patch literal 921 zcmV;K17`e*P)|&`7Zn68cKs+Eg_uDME#XusSyHU)An&R8jVJy(P%UpkK<3y?Yge} z$9bMwOD%5xo1FemxN8RVD!1nW9N&kZ8~ERZ&+o%XsQ7n)Pd~NPylnhS_)y$4FZN9v zN4Ue7daaZZ??r0_`N6SNVOIr=EKe(Clq#=TZDmb1)1~tZ+-tPc79&*63xOTBfz=8S zLDL;|p)EWSp~6qxDsY}E@}&x(-HV}|1S=hBnCeUnCbu;s{g$9$3*ynFOL&oFaxa{9 zZF#LT@45$!y@K!BuFCO&d)LugXunlE(uV?HCHojY9qSWN6-lGfXf!?r zmKrLGIa-UWt{7UQCM6orb|LZ70OdgxOvK7(QYS;JML3k!*aA6#3V6>g64ShA%CT4T9vncgU(z$3RNAg6{JF-<$^Bs5lOmZGKM>pln=-Tk=tKaEDC(P%Up?~dp( z1bGT{l_}BY`U1jZi(=G~(`r1TuRRJRRNr&ao@dQv<~GKIJow;`#A!zkcAc{iAH=j{ z3-@(}KzeoYL}TYGM2`4JIym&16m4vKaAon0!nSd{2IE00&+QT1EpI&cW!%NS z-~uDC?V^4Hu811CFS%l1X&o1wq{KwNwHo>`UJ`liCT!@JF6>W2HJeb2 vNOdR+bMc1hCPxgl(P%UpjYgxn|uF5?dyPSYej~px$|tr zw^?K7UeIXC3+?NG>^0-+6?Q`vOXMA}zuooY$?R+M$gpw-sh*xTOJ1uHUUrl=FoR6= zw^2e(^f#jq?!+o|r$&(JgG&)!0000000000000000002sGXE&x#RV!spy>br002ov JPDHLkV1la4?*0G( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-hash/00003.png b/tests_zemu/snapshots/x-tx-memo-hash/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e5793eb59fb9dac03a903f256fcc66bcacfb52ab GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2VB;O$e9@mQv zH$1=XS9#ys&!v4f!K?j7$oHCs3~aW`GiOZ!X@4o#w_jK3boZRk87bvwn@g8fR{n4F zK5{;`HKU>9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-hash/00004.png b/tests_zemu/snapshots/x-tx-memo-hash/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-hash/00010.png b/tests_zemu/snapshots/x-tx-memo-hash/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-hash/00011.png b/tests_zemu/snapshots/x-tx-memo-hash/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-hash/00012.png b/tests_zemu/snapshots/x-tx-memo-hash/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-id/00000.png b/tests_zemu/snapshots/x-tx-memo-id/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-id/00001.png b/tests_zemu/snapshots/x-tx-memo-id/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..95152b0fbb62d87bedf6bc1912415a83eca418c9 GIT binary patch literal 517 zcmV+g0{Z=lP)741i&KraNK(OJXnQ!5M}zTmm8i`+rXz$A&i1RAY|=0001(?qjvE_x^n0oXc%_ zV#PCfSnJUhHU6v?UV(EiS&x~%RtpE-d*@s-1@Xp^sjzeWu4$*yaO<7{AhRF5TpKAi4cAv5_;M?wE2YBv&cyqxrst$mKXa&M5H$@sL37 zoSUg7BjlF56H_ygC~RqZQ4OfMeW~1t=?kblPMbUta}NE-Yn}zg)8MeNHB-r# zvtMpg9RcGwN2)KihH5TAVH&JwH8Jk{}57n_T`}Vn$ zT#W$*$n_0PKbaYGP1gcwj)4n00000NkvXX Hu0mjf|7_>s literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-id/00002.png b/tests_zemu/snapshots/x-tx-memo-id/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e5793eb59fb9dac03a903f256fcc66bcacfb52ab GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2VB;O$e9@mQv zH$1=XS9#ys&!v4f!K?j7$oHCs3~aW`GiOZ!X@4o#w_jK3boZRk87bvwn@g8fR{n4F zK5{;`HKU>9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-id/00003.png b/tests_zemu/snapshots/x-tx-memo-id/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-id/00009.png b/tests_zemu/snapshots/x-tx-memo-id/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-id/00010.png b/tests_zemu/snapshots/x-tx-memo-id/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-id/00011.png b/tests_zemu/snapshots/x-tx-memo-id/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-none/00000.png b/tests_zemu/snapshots/x-tx-memo-none/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-none/00001.png b/tests_zemu/snapshots/x-tx-memo-none/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e5793eb59fb9dac03a903f256fcc66bcacfb52ab GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2VB;O$e9@mQv zH$1=XS9#ys&!v4f!K?j7$oHCs3~aW`GiOZ!X@4o#w_jK3boZRk87bvwn@g8fR{n4F zK5{;`HKU>9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-none/00002.png b/tests_zemu/snapshots/x-tx-memo-none/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-none/00008.png b/tests_zemu/snapshots/x-tx-memo-none/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-none/00009.png b/tests_zemu/snapshots/x-tx-memo-none/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-none/00010.png b/tests_zemu/snapshots/x-tx-memo-none/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-return-hash/00000.png b/tests_zemu/snapshots/x-tx-memo-return-hash/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-return-hash/00001.png b/tests_zemu/snapshots/x-tx-memo-return-hash/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4f662118263d3531c30d4912887fcc3d68bd70 GIT binary patch literal 932 zcmV;V16%xwP)K4{pHahXrXu8$I)ms8jVJy(P%u5Ux?8d<9ayH zQ!A;(^uI5JOJI$A@zF}e{D8E77ZKh9(mV}g4A&+E;!ShD(&JP?N`Iov&hr#q^D(;` zueEMYBNAx-B!Sikk&H;m4reqrjhY!S8%74goQZr&Y6B-4Xu6$+cHQ--Xiruf*R2S= zU9lM;f{ejXm9>PoljI^1h@fOU;roGBh#=4bWX|#|l<$^T6y7(lY|94j>_Fiqs3h;a z3gYB*@-8yT(W}`5=8}gWNca)LHPZsEg|i}l5VRu_h>PcZ;3t9vfkwf(w)|xL-{F1- zR558Z8jZ$33rh_Zzs*w@MFiFi;KRo-t6B9@C|-G=MMjK!G112|*weSon|^9Duw@U}1hOut zvry%y1hfOlvFv(4-q@|1r(Kb}EW~4J5FLsJuKzpDaa|p5f47A60MsOR_8)_g>dyYd z=stK8y$ZbvC&}FhTfx)od>g7MD#vmGCMBeLLZQ@{fUbmCG*a6j(- zPovRjG#ZV@rz3g|K~90LG9}uKFCczwQEaWq-D-Zsx^^oNs(#Iz_B?B@XKrI0u0#Bcg`xORh*Pt>c27l<3HhRzn}gE6ih? zu%TbNus;daY(gcXt3w%>H#bZ-IU?0YqtR$I8jVKdBk&g`T+INX^F8AL0000EaktG3V{fz)6P{I2>-z z-Rt?TUgiBJ`I&_=4vyYuw$#4YHstEa;Hb0#YGPp6_PM7-Yv~;Est36p0YZ5+uJ*RRfW== zu3y76vh;nDeI}dib&sqzNoT*(*{QMOcEJ1Ng(*ixLpN?MwAr@T^!N6*y-o#L#nuO0 zjy$+BVVmpu$RA0L6BBN(U8dSRq04w9L(=(gd`DdTbgOdB_D@rOy;nx~vU@<+{jU=` zCPZIaIIryT3|8*qdyHTAbgQda)fepkDzde=G{Jzo#B`hZ^R1P2U3L>!I!>Rm$IRC9 zpI(rd!cidxh9415S1*)^6}im4`n5}P@28aW4I7{ErzqMRZ!X$=I3XwC!Lv823&l)Y zBmJ+=5BYj=LEJWh7;}X!8m0|0dnq z&ah}g(7)-QT%RAT->2ET?)!BW^-cMVF0%^1a_)9?9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-return-hash/00004.png b/tests_zemu/snapshots/x-tx-memo-return-hash/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-return-hash/00010.png b/tests_zemu/snapshots/x-tx-memo-return-hash/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-return-hash/00011.png b/tests_zemu/snapshots/x-tx-memo-return-hash/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-return-hash/00012.png b/tests_zemu/snapshots/x-tx-memo-return-hash/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text-unprintable/00000.png b/tests_zemu/snapshots/x-tx-memo-text-unprintable/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text-unprintable/00001.png b/tests_zemu/snapshots/x-tx-memo-text-unprintable/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e7fe4240848ceea82d785c681d591cda9d4e92 GIT binary patch literal 576 zcmV-G0>AxSiMwhOG`@W8tPIp-S|pal*Vj{;x*TxF>c1FBxv(Gmx{rzYBvXs1Y9zu;qr5iVD2oX zhL@32A;qmpk^CtGtP5R@aYrirj)`S&l_zq^E8}EiH<-!~V1`*wI{P z^WO_)xofKH_(%zo;qDcYEtTn0QgO}w`vtwSvZY?x$L*ZMT6d>HEdk9{|HKD*nTpbi zECs!*Y}%4gqFsWf#J#j6a@yW4(t&Ca6K0fbb2><}>f`1x1jNPRL_h(86y_mb=w1@1%@s2y{Ks0=pU{c24!((xtU_NyBgo|7Q3x*p000000000000000000000002MWBdWh=<)LK_ZS}l O00009$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text-unprintable/00003.png b/tests_zemu/snapshots/x-tx-memo-text-unprintable/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text-unprintable/00009.png b/tests_zemu/snapshots/x-tx-memo-text-unprintable/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text-unprintable/00010.png b/tests_zemu/snapshots/x-tx-memo-text-unprintable/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text-unprintable/00011.png b/tests_zemu/snapshots/x-tx-memo-text-unprintable/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text/00000.png b/tests_zemu/snapshots/x-tx-memo-text/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text/00001.png b/tests_zemu/snapshots/x-tx-memo-text/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..54eefaee39776f36537523231e9753a621d49d22 GIT binary patch literal 546 zcmV+-0^R+IP)rq!K6yshAJ|00000%=xlWbDn1$9LG_+ zvO`^Bhn6M$JZ-=hqPt@lCR{%)IDvHl&htEuBVVE6@3KuEOp~S5bQ)b$Nb%exn=pKD zy}O?DYvtk%uNcTdE)q&LN24NlZu<5z-iM0-NOx;o8A={+3)WQJELQh1EkWI^H*kTs zr||M=B58l$gc%W+YHf^dPp3XN8eTt)lAtG5II00017GrG$)_!rpiO6|tW zKHy_{pc@(oa_gjNYS!k+o?3CN@1ef`woCrPyv}F_p}u|1Kf4hEm%dH9UK4N3$=gabjg|)QrS?`q@nZ3croGcptsHnT zxXt8F_)d@?*{QlUcyBMLSRxwrA@nj@ip%$Q-5R_XWhQppzm0D%)4C1qgcF0itjvIJ zs^-o5p~cdjUwla3x#3NNH7pB&#yCxCo8iRZ#TgI>wX;B_V9?d~e9mYUHZ~Xl00000 k0000000000001oc1%HSy#!H*BasU7T07*qoM6N<$f}95YMgRZ+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text/00002.png b/tests_zemu/snapshots/x-tx-memo-text/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e5793eb59fb9dac03a903f256fcc66bcacfb52ab GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2VB;O$e9@mQv zH$1=XS9#ys&!v4f!K?j7$oHCs3~aW`GiOZ!X@4o#w_jK3boZRk87bvwn@g8fR{n4F zK5{;`HKU>9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text/00003.png b/tests_zemu/snapshots/x-tx-memo-text/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text/00009.png b/tests_zemu/snapshots/x-tx-memo-text/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text/00010.png b/tests_zemu/snapshots/x-tx-memo-text/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-memo-text/00011.png b/tests_zemu/snapshots/x-tx-memo-text/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00000.png b/tests_zemu/snapshots/x-tx-multi-operations/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00001.png b/tests_zemu/snapshots/x-tx-multi-operations/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DLY4J!`+F7TWAEI6fR*NwWU-p{sso+t;{M@TJ-Z(Z>9ZJ zH*xPX4b!spGT&@}weY%#?UUG0>AgS17ex5HIl;T%Lreea&;7sTqf$Ag`hToG6rvob zSiaSZQKxsuuBwtKtG^=2`!iS=7!KrF?Y8}WwQ<_DwoCU?rP=3KB+m`6|9y2M|F**u z-Je{q5Iyi;<55=Co{d+yH$;8+{SlpcM$T`iMcb^fwY6Lm&P~hTUhsZD%gcg)7VBcg zR@bH-P}7@rXs)yG^xO=+J^2%?W-tA0_oZ?->zBS+ij)7DOkLqwZbP0l+XkK{vxO? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00003.png b/tests_zemu/snapshots/x-tx-multi-operations/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000R_7 z#LP$XP@UJdv-8&KN2y=-dwayBnt2GJnp=9Ln2>^`@oLN>&bJ4xUA4a2N9(Wtoi^E< zM@~SYD9wIC^@v;wn?{BUF%~U#Yk27u4ajwN*?OJ-w+FAFq;u*g!yb;j745w72IQx& zdJk5Aiu3uMfM>?H#(h1X(aC6?++WrzF?%bnAUZSv0001Zkw4KMbx>Z_U!YlJ)nBGk zYSmv%58mV!dXwMbHz_Xw000000000006gXoGm7bnN-$uv00000NkvXXu0mjfAO4*~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00007.png b/tests_zemu/snapshots/x-tx-multi-operations/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a420c39d7df2143a689a346ce37c0e2d5fb27d GIT binary patch literal 531 zcmV+u0_^>XP)B=52xO^i_#tZl{ZdtVbrkpaZQ^z#7#0001ZoS)SSD8v}k=Mcha z3Fp>6z<0F*J)GO_5?nh#q&^cd#t=dpPY%mxy5)DZ0y?=J)0s%7PvgZw+2!=Oc0du! zxw-q%y+!OFcuzqox6I$hKJj}3>L|9`eIpO~b-)q(#nqZpznX=LO9B7@003N}cSDPs zzSDB4pS~@VI~A5FS=Gm)fMxeWPG^Z_5Hd1(0zt)Hm~zp8mVDQE5SyJ@P2^&dk}atpox6Zl{yw`U>fpcok++=^fGip6$O z{aI@AqI$B+e>Iam1LG>64)FeBmIblJwhJ!W(diW+)q*o+YW@Q6+9pSi3kMwL$PM%! zc1l65u+3Xf{kV3RtX!OcH{;?2SlX5?@~A&nUHrE=0000000000000000002&$sgR_ V8LHf60YCr%002ovPDHLkV1gib>=pn3 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00008.png b/tests_zemu/snapshots/x-tx-multi-operations/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc66f1da2234693a3cfbfe31fa9d51818d57094 GIT binary patch literal 915 zcmV;E18n?>P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00010.png b/tests_zemu/snapshots/x-tx-multi-operations/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00011.png b/tests_zemu/snapshots/x-tx-multi-operations/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..32de005c456b5ae769d87622e96cbaca77997b2e GIT binary patch literal 360 zcmV-u0hj)XP)v&$ zvEsD*lN^Pl6zyz0{zAk~=S(RO~^)Z_zZy@H~n!+SsNY0J&< zH5Z%buc4Pd!j}R&Kf=|X?IFqzWx}oS<~6io-j(!Un*Iu+%>n=b001xYKiX6$UBH@kuW0000uBrV1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00012.png b/tests_zemu/snapshots/x-tx-multi-operations/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..8a547eceeee8ca5d48ad7abbaa349d86fa57a390 GIT binary patch literal 620 zcmV-y0+aoTP)a?AW~9Fw>!fX`yT-(M7=xB>XgeX_Nd)Nf`XvPl2{0001hP}tQ_ za;H~HF8uWE>8#waM9Zcgj{wi;#E$Zar)7}(_TTzQY3b_hd3;ij$BsC<*v(_#B<@8l z2)xXKd;?83Rzn89wb_`wvuf4I#1KlZTx%a!qItj@qo0QN1coLa;xGYAx&a9#aGl`2s zv^sY^K11s@4dbhdx0816KE9i#Jb3>Yg2-3s{!btVH`$(rfP&#<#9%Ajy+$?EEF^ep znf0e)qhhDk-~7nglM8OWtY0}Feehg6d6gGS2(4cimK(_pR;Gb%P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00015.png b/tests_zemu/snapshots/x-tx-multi-operations/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00016.png b/tests_zemu/snapshots/x-tx-multi-operations/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc5760b7a4620978346549b6b13a69f583a4278 GIT binary patch literal 351 zcmV-l0igbgP)wICmx7Z;iN zkv!_?!Yl^vCvYfj#OwCNkLqp>Ayh9c4JiszNIG84EOI{gpf$0yT1Nu=6X>T6x_<{0 ziq`B4s$1kxY&tU1h1B1o{#;-yZQS%5kn1nZt+t$h-mFJZ(%QV&W4|6*8#w6x&(K3J z;X?xlU&7VO)*MoGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00018.png b/tests_zemu/snapshots/x-tx-multi-operations/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a99176ab4e74dd7410e970932b2b4306ba934d GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Aba4!+nDh2#bl+hG9*01y zS#vl1SKT=Mr^8l(_XanXytIv9p()|vB=lGYs43yy*6lk5nu^a=&!4)zySMvoV2Jhn zUl;inoT{EbFQ<3f*1u9mI#T*l5)@h9?~Td6YVYy&=gS>ZE2LC+PhEZYw$oES4#kw| zDLYM0zJIB(I#e(AF?ZviXmzj1Z1Jhq3erB7s~%QZm8NH%W#1*0WW8H8qxYNBon6Ui zB5Ybtd&>B|zO_f6#p>J(-HeAvLsm`k7g20qa&~p&B@N@fKrbB-kNj=$kE8r#n_YgI zx~#YBl9NXx)}^sV$p@!$Z4O;JImNel&ffz55Z~!(PyH5te*QD9{VMMqpJSy#QxCta zI5VmA4a=5IpI=@)DfaKC@aDV6R~_bmSR`t9slC~|zK;Dx?%yemNel0=&bjmd^&Csd zqdvi2)xCfFO!>3FKM1qZXG(Kid-(pTiNXQ=Us^ZIx3(1C>72iyIrPPngDS;*A%=T_ d;fD+wX4zj8aJ;Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-multi-operations/00020.png b/tests_zemu/snapshots/x-tx-multi-operations/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-custom/00000.png b/tests_zemu/snapshots/x-tx-network-custom/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-custom/00001.png b/tests_zemu/snapshots/x-tx-network-custom/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee8afda081af92a391d342f3046b100910e4011 GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s}ba4!+nDh2#bl+hG9*4kk z6YIqP-k;*0DX(%hTvD>+M$5g=Q{9Cp@VYHj0_ol19(H(DmCTf&H(xCJ-Z-Rm$J*~a zdpd3VO5f78?R<;t#goKl|ga>-AoFHpNMxiG&gsP^Mx#(Qhi zCVmor5E<}FDbKzL-H_M!LXX61jkufBh4%B$!# zH+k3gpTB+U&I*=ZvuAGG?W(p_p8qKp*K>Qyf_L}Xq<8o-&Fb3Ndt1ff-|XhcnzuD# zbJezX7exGD7s33xTu(Ihv)Z2Mb04qrH2ZuxT;k;WrFmkrPsl=_{3ahhJ=Y3Gp#4ao b;q)Iy``iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DLw~ba4!+nDh2#?4&~q0&anG ziqzlKd%j7P3ktfy+wo^x)%oDAGh04pHwn&V2I|_jTejw{z@gFyd-Z!uuFI_1eD?1b zR-Huq?xI&45s~Le;Q_a{lEOfdXTWEtDnm{r-UW| DeYd!- literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-custom/00004.png b/tests_zemu/snapshots/x-tx-network-custom/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-custom/00010.png b/tests_zemu/snapshots/x-tx-network-custom/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-custom/00011.png b/tests_zemu/snapshots/x-tx-network-custom/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-public/00000.png b/tests_zemu/snapshots/x-tx-network-public/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-public/00001.png b/tests_zemu/snapshots/x-tx-network-public/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-public/00003.png b/tests_zemu/snapshots/x-tx-network-public/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-public/00009.png b/tests_zemu/snapshots/x-tx-network-public/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-public/00010.png b/tests_zemu/snapshots/x-tx-network-public/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-testnet/00000.png b/tests_zemu/snapshots/x-tx-network-testnet/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-testnet/00001.png b/tests_zemu/snapshots/x-tx-network-testnet/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..76410f07c2b71d597d000b9f758109427f0d58a9 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|y*$fTKi(vNqAa@0a9`{RzCSlsZg|9V!NtVOSAFlv zeG-=fIe&|OKap~f)#Aj8<-^fdqVT%KUEbZdqpn!nIj<=de>`RPE=!Y&>0Wz2v9cC~zi!Lg zP_#O-&~Tmm)wBDiRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-testnet/00004.png b/tests_zemu/snapshots/x-tx-network-testnet/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-testnet/00010.png b/tests_zemu/snapshots/x-tx-network-testnet/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-network-testnet/00011.png b/tests_zemu/snapshots/x-tx-network-testnet/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-reject/00000.png b/tests_zemu/snapshots/x-tx-reject/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-reject/00001.png b/tests_zemu/snapshots/x-tx-reject/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-reject/00003.png b/tests_zemu/snapshots/x-tx-reject/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-reject/00009.png b/tests_zemu/snapshots/x-tx-reject/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-reject/00010.png b/tests_zemu/snapshots/x-tx-reject/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e3760f173a82de5b7f9e5d26f9ed652496714d GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2#Am1Sc0oRKc zcL;ymzvO1Oyh~2wtgek`vfux_)FJp>bjB)4pe6`tFt~H~?(w+Zmv+@m%DY0RY1gWW zIe2N>uQ(MuZyKZ45vC1sY`d0kGM{(D(ViqU&3s`dzE1uU!vtC zMjijVYxjAy#xdlcSDx!A>+s?IhO33I(l&4%xT|`r^PP%n+P}^_TZ^?q>g|kX^z%GZ zW{&Y*6Yo6z^?U!^)PEfowy%@FvD{lU^_fH?(~DQ@I%^K!xF@>3nLi@PzUyCfK-I=l z)7!JZZE9Hc@$UBH3%4-sle+dVQ8M@i!?fjx3S^Vt*|>hu%~-ze)WO$rF8R)@x%c0? ov-()(dBvKuaojMUGB6k%7Jec)@~ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-reject/00011.png b/tests_zemu/snapshots/x-tx-reject/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00000.png b/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn$PAP5flUFWCS$Nym8+Mz#gjb$*do*<}BYgyG?}k_lpU(aOM0t`V zNs@dnwi@bG3LBbU*uQF9yQ1r{o4>iozcIU9D^sxEc7HskaG-vqE7(@bsdwauOD0rhaI8gH{oUwvwXkzeS8|IF*_GUfPF+E`VceKBE;d-bnC_ zw*R_5yKdr~|;4trj&>S*!^*e^WX;F@k?GoiTTu%WsPlmxf7_BuSDae+fek)ud2O zfSfJF+M%huYNtO@s^tENTI^VjZ%IA=Z(iL0ho%&YLZkQ<6lw;=ax9U0{4`5|=qr}^ ztpVQtzaWk9bMjLMZ(9vDC-0iye2t5U|23Nm7DyLZ$>DcOe9d8{+T*7^0NUM?M~5=a zdfIAQtg}-s^)DMFW`PD*9P{kArl4@KW&f5*TSmCmZykVg*BG2;{YGrZSMmLUvxG=b z9hY?5Ui4Rp){8S2dES2kd(b3Fk|arzBss(nTp8|4a!3lw00000NkvXXu0mjf)v2-? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00006.png b/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4ebd9c14f539d5c837e89a639547c4bc07e22f GIT binary patch literal 592 zcmV-W08JtVIbiLO0#A6ce|4Pv!Xt#{F#o}45q$;WV zQA?^4Ph#TTnt3`uM<~@sn~%{xr{_=;bK;JW1gl)3)6O1-1YrAZVi1pdy2XIQXWRW7 zOzh7R!bsERtjKAGq@W(E`v$!XI-S+C`q0iLdtJixgM}N zRlnKo(i-&Arag-bJ&(OZTo)hS3K|249*@Jhve3IWNoz%v=I4^=Rzkq2R)nVQos|VY zXrxl}&(+85OhM+bAfE(hIk_XQ`FD8T2+_&7KKM|67xS8NXF0VopSz3i zZ$+%OB`0%#0K8P5NYDW^++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrgv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00011.png b/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00012.png b/tests_zemu/snapshots/x-tx-source-omit-muxed-source-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00000.png b/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00001.png b/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00003.png b/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00009.png b/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00010.png b/tests_zemu/snapshots/x-tx-source-omit-source-equal-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00000.png b/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00001.png b/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00003.png b/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn@clZ-xbQt2KkJOt*Sh+kt|ml!-Pn1NLfhpH)i`Lv6mO^;Fvrv9l<=i-j`)EGf*c ziEO^sF*sFn4c=weWTBcR*Am zNs=VVcj>61%pOjhY0X3+G>S{iSKvs8>RAxdrbrQ%%~HUTnP(Vsvn+PUI#K8MuIkU8 z&2BK*K2FqIeo&lGFY=O+x<-5aJ+$l|tS37UvZ7m0mZ$%G^(O8C4n zkuyL?U=}ksf;VX&541L;8Y1v+Y%YMJP0UH(smPmm3+v!(9nwCokq@>$uPVpt&xWZF zw*FqS4|bBP&`vsyoPDqq-MoD@6w8ffI#w&Y>gkY2v!MQpjRTd}OEg~_F!!Cuot-+P z|A9$^i<<>UJu<>7>2c^Q69aHs*{OzxA2RXD@eS&QX6=hvVlu|=rl%tzFU>J3{l>hS z$S4zxG&tc=xO+yxX&v2k7t;awcDDk)JFC8=16vg2ko3Fr9&mp)n2WyNhPA@#+wKJO z&jThNxwNHD>-EqmkFk#-y#@A(@zSfpgdA(Co{T6vjH&i9vZcP-6&JC!Zsu-IT!pTls*Nya0Xu)D zdQ82rwT`G$)ha2X_%BUvR62*iRhT>5Pn2z0D8_l0ZsOI}T$e}Hi{~fe!vBh3Dg%Zj z$nSY1b9#&_NL9`-APE zPyIlply=1yhKQk-*Fs&V@8MIFQgkLlD#z+C-Tv0`*mVNqe}?oT^iyUw#q3snN$aG| zM_tl7nUxI9ep>l-erI&5gC5>Sf1k4f9U3;QM2T^gE1Yq9q$J?+J47QN?dcX34)3jw zuhG!IN{AqbF-K)iOIdM=VG z_9waa?}>8JxjwlLKkvL1)gLxHGl;{SKAxW|zg}YW94_lk*lGAZXS?>QxM1#Y`xa!& z$cq2N_)4o2pkLyLOSV{ro!#oTy71E;xYY?rT61D2^=#YEuz3%tK658nLp}i+Iroh3 zi8^+i`unSBrLU-G{cw4_;-I(NPQ#TqKE2j$N59&fgPV{3dgNdyR-v5^2ALeBVt4@n n0000000000000000Dv?++nB?GR6oq@jYJ+1z9|kkPrX>0D$Gb?uSSzl`mtA_hWWG zbnICo;o&%2NGX;55ik87v|+$8KYpQGJEJT=3R6lk#=NN23T4}}vWQuhl%ec3u0|7? z*j*U*eW!5`kzekcI>C7{?tTh@q(~sO#%e*j(at zrk{3Uz`6-283WW>&I?ky^tf4b?0y7g>gh2h>}g3q`@@w-7w%3#UaI*+g?eHd^^Jf% z<>CK!@tEVQUD(C$`BmzK7j$9W5d;+z@W<~21AuK!xD5>pFGM@zduljAgb*-=7 zq4vC;ifa8obE-~;_wmnpa}#*HJE~?@JEZ%D2?%Opo8LRDM*2+=o|n50PwgU+vY0j^t?j|<1 zqV{Xu0p~Vn#Csp(r@s&JvF<>{HD|r|@yAt|mc)4-kERhMS89gOk> zc`CD^o$BpcM-0I7MD#sT2vl2ybT;N0M!+swb0MTsY(~U)1Hg| zr4WMcy;SXpE8xu-004NeWxJu-BVD=EA}Nu?$r_!Fzr5}duI{!T=jA1{aqhIZysplg zr=V5SVQM!`-KbUFszZ?>zm@kLBB zU(_2uaUmY=JePO)YTaQ^rrNbpoh+TxTIUFFkHbRwR{=?HhlM)%Jz(K7*ZOK$PD$5Z zxaA)Xb@8Wqd*2|vCtg-xrP=T+y?PbbGWSzubQ!%n7{KT0FKBI z$J+Zy8iJ>gf{fuMw&S+Y42Xa(xB`4k8N*1-NTN^-N;2E{;%_L{0XsUNq6Ng8&MVWc z-rIH{V=2YaMtnWc66aYv1$C*-7c!rU_CxF}a_`w30ep|4z132>W`{Bk*$gquS-TCz zi?F!RX^Zgl9WH!lqFDnADcE#k%f$HR&D$`(DR=|(jzv{%>lAbkAtU$p;s0D50ZEc1 z$&TipcqGs3_+AAp4VSQbXIZbNTl9^|0G*mQF3-fN!i~oblxCoAt;P z{51W)W-$SXEIl^$T17 zEZGMq$yw+mokq?+SPF06z8c!SVdv>st?a6&LnVqC`6D(CR9-ES-|~YCeg7WXqW^)Q z!P&)(qa|8|Rbz=mj}{+5p_P+rX!s!$pB!&cFE|T3fX@lByJ@#4##cT@rQevJCR&sU zi!|sckrcN_z-bGbEH0)4@N%~Tdv{iSi95E)$sy_Y)2jVI*u8Ln6FeJhET8YLl zHAWSrDrbpB8?Bi-fQ%0NUE*U}sAjwxkl*CFng?P1{#b|M21r004wl z$Iv0^7*`$j9+y{@x8EuCBd?`Z|CqE7S6g)X{h%9eET1n?YF_T}F|_+7=eX1=pSged zTaaYOs7SxMoaH?L?Z5BcC0qY$BvsqSwuNs?IPU@2wC1dx)Y7)U!z(^TymKe;QD?x8 zF}L*ZgL~{hw3UH5s(oTR>$}V2j6rQ5I}JTwTzuBY_I`4B3_iT~{V@h7u?n3u=w!xV sE4mi|000000000000000007wL7a&ZL>tQeH*8l(j07*qoM6N<$f@{_6UH||9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00011.png b/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00012.png b/tests_zemu/snapshots/x-tx-source-omit-source-not-equal-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-with-muxed-source/00000.png b/tests_zemu/snapshots/x-tx-with-muxed-source/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-with-muxed-source/00001.png b/tests_zemu/snapshots/x-tx-with-muxed-source/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-with-muxed-source/00003.png b/tests_zemu/snapshots/x-tx-with-muxed-source/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn$PAP5flUFWCS$Nym8+Mz#gjb$*do*<}BYgyG?}k_lpU(aOM0t`V zNs@dnwi@bG3LBbU*uQF9yQ1r{o4>iozcIU9D^sxEc7HskaG-vqE7(@bsdwauOD0rhaI8gH{oUwvwXkzeS8|IF*_GUfPF+E`VceKBE;d-bnC_ zw*R_5yKdr~|;4trj&>S*!^*e^WX;F@k?GoiTTu%WsPlmxf7_BuSDae+fek)ud2O zfSfJF+M%huYNtO@s^tENTI^VjZ%IA=Z(iL0ho%&YLZkQ<6lw;=ax9U0{4`5|=qr}^ ztpVQtzaWk9bMjLMZ(9vDC-0iye2t5U|23Nm7DyLZ$>DcOe9d8{+T*7^0NUM?M~5=a zdfIAQtg}-s^)DMFW`PD*9P{kArl4@KW&f5*TSmCmZykVg*BG2;{YGrZSMmLUvxG=b z9hY?5Ui4Rp){8S2dES2kd(b3Fk|arzBss(nTp8|4a!3lw00000NkvXXu0mjf)v2-? literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-with-muxed-source/00006.png b/tests_zemu/snapshots/x-tx-with-muxed-source/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4ebd9c14f539d5c837e89a639547c4bc07e22f GIT binary patch literal 592 zcmV-W08JtVIbiLO0#A6ce|4Pv!Xt#{F#o}45q$;WV zQA?^4Ph#TTnt3`uM<~@sn~%{xr{_=;bK;JW1gl)3)6O1-1YrAZVi1pdy2XIQXWRW7 zOzh7R!bsERtjKAGq@W(E`v$!XI-S+C`q0iLdtJixgM}N zRlnKo(i-&Arag-bJ&(OZTo)hS3K|249*@Jhve3IWNoz%v=I4^=Rzkq2R)nVQos|VY zXrxl}&(+85OhM+bAfE(hIk_XQ`FD8T2+_&7KKM|67xS8NXF0VopSz3i zZ$+%OB`0%#0K8P5NYDW^ICfC_C&3sH!(os`|28|J7X6#a!APdiNcQ28gckq+00000 e00000{>?9T0kd(~rFV4z0000P)5BuYN&Sjx&wFwVl(j|xJYwHx*atTflp&G0g^EhH~pX^?|fR=hrQP!;k{AWVixwEXC z)GhiS*fhAg*l^aPMOZa@oVv8c0Gu{%s-fX8nfT4|9n=fX#tGm#A@(%wj>LG&$E@@l z^V39&G7Q$m;l0}cPpCPpbdm`PPe`e;J;1B0dEVs@`Ns=T;qUvc8Wv3CM7>q*k|L`9qsfa(=M=aLzIS^^+n$YLoOWvwt+!%co>ec-Z^T_igP)JY_Tz5Ksh8$M<|C1dFF-hm-&S0D$AZ9M_amHnN&)Vm()1tgUD#=b8l#}+}2s0ij>lir@wt_ zQfx{6TF0OUBkMFH$dYD|)Zd=Htu6I_vfT*bzXPl~3(bkU3TxMUd)D5_`A;&brWs_g zJ$o&th&lD;gRnb5?aJn_zCkVx$yWBI=H@LmcqF(5r=Vmyq|(l6cgGodlbMF1Iun+H z##uEmX|8s|-L&0FGtI5?FF<_{kr}y`%U!Q(%4#oL=~W&CX+AAxny4LC18k->RcEP1 zXp_6)K#=DOS%8q9005rCa~kT|btPgNM)ld91;m$U=8|G0CjKR!lDd000000000000000006MfFKy1h4ZQontpET3 M07*qoM6N<$g13SDH~;_u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-with-muxed-source/00010.png b/tests_zemu/snapshots/x-tx-with-muxed-source/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2026a1bf34292c0f850bd82d64b4d0ecce2b32 GIT binary patch literal 925 zcmV;O17iG%P)gv?~;YFeZ4efE2Dj7EQ%g=0EQD?mijwYSuH!b>T;KsA@C5XkO1hCbP1MJv<3eO>)c0HMJ zde7Q{f%kn6tdY(KUgJF84M8F5@-2y{ru-#xUNWz2_5fXDcu&2SP;A%0E}2WjYP?&9 z;v{S)Ixh*AA9vA}i6;#tQc!ea$wK(%;;kEFA$SAk4O=y}ts&?fEIGNSAOCW&2M`27 z5G5=_K?Noni^VU3{$A%26_lkZ7K>Bz0u^4PCoQxpq*TXqwU<9VDiKqR$-ida2ALf5 z5V$>~2zS;hH0gxPkdLVd6K|Jy=56aMe7OPhSD|8EamSW5vn4t%iOadk3}R$A;Ef}L zsUg#VcAy#PCyfD_sdP@ij@5~$MRo%Q_I53jFLS!O;r>Z!AfRPd>_jT!gv;|1$I85I zl^)P42B+R68b$xH2|Pk{wDk-CT14{YD&hXGp1>iR*l>$ zOkywj!<43fbkUQ^M|q|*Nrjq|3a1?Esz5hk^CDI+N+(c>3*mXv+j_rYLz8UGyq4$3 zfC^w(o^i@33N|3VJty$?QSvVOd8JD%6j?3F^>&kSkF9xf^!#Au)ebcQh#cchXKb2r z2$~_HwYlP)F7dGCSoTskfm9B-ns1o#+JWM)i(3~$@T1U}u;Luf7N5T+AqavX2!i-e zfxZp(c)s4o0pd__kRipWX;+{{Ft55E&Dam#)Pr)l4<^fK{soO~yC)>cu!h5dC7wVn zb68rwrNxQg1ywA+g&uh84sOCTgkt&EqX91KT zDHk!u{Knjjq75lMCDwUl4Yz$ymJgzpNvOtSyx=mjh0R{hWO|)v@JkIpljUtURz`E8 zrJqGF)G5V_2A7xir!}k7VFh&AtskF^BL$09*j$wIEi*1Hcg>0c$g~BK((5njep~8a zqhO5j>VDY#X(Ud1b_?pt-8a9PYW0s~8+rRfEnK<+WOr!c&Q9r8d#RvZs#%G9FnIPD zY6szFl+%K6crTawSfbTtL{THy6tUg-kSBH|XX9J&VlEAHsbuLEbPlg+d-U`V2d@AC zK=3+--cTGU6M4{-*|c+^aZf4VrBz$M-RtWl?% z3F~s(E;VnBwmW42x@7mckBxhU<2GN$B`)7z@ACP%SX=*Vuh-c7weip_SVsuEPT&7( z&G?ut$Z%;=pB4$q0oc;G_!e5x_-YMZ8@HfN3y+!_f0f$F^!_r9uBP`FV+?j;7utz9 tyc69E0000000000000000000y<`)S{p+@}sCC~r>002ovPDHLkV1gcA<(dEh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-with-muxed-source/00012.png b/tests_zemu/snapshots/x-tx-with-muxed-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-tx-with-muxed-source/00013.png b/tests_zemu/snapshots/x-tx-with-muxed-source/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/tests/common.ts b/tests_zemu/tests/common.ts new file mode 100644 index 00000000..43e2a33a --- /dev/null +++ b/tests_zemu/tests/common.ts @@ -0,0 +1,15 @@ +import { DeviceModel } from '@zondax/zemu' + +const Resolve = require('path').resolve + +export const APP_SEED = 'other base behind follow wet put glad muscle unlock sell income october' + +const APP_PATH_S = Resolve('./elfs/stellar_nanos.elf') +const APP_PATH_X = Resolve('./elfs/stellar_nanox.elf') +const APP_PATH_SP = Resolve('./elfs/stellar_nanosp.elf') + +export const models: DeviceModel[] = [ + { name: 'nanos', prefix: 'S', path: APP_PATH_S }, + { name: 'nanox', prefix: 'X', path: APP_PATH_X }, + { name: 'nanosp', prefix: 'SP', path: APP_PATH_SP }, +] diff --git a/tests_zemu/tests/main.test.ts b/tests_zemu/tests/main.test.ts new file mode 100644 index 00000000..5c55f513 --- /dev/null +++ b/tests_zemu/tests/main.test.ts @@ -0,0 +1,292 @@ +import { DEFAULT_START_OPTIONS } from "@zondax/zemu"; +import { APP_SEED, models } from "./common"; +import * as testCasesFunction from 'tests-common' +import { Keypair } from 'stellar-base' +import Str from '@ledgerhq/hw-app-str' +import Zemu from './zemu' + +beforeAll(async () => { + await Zemu.checkAndPullImage(); +}); + +jest.setTimeout(1000 * 60 * 60); + +const defaultOptions = { + ...DEFAULT_START_OPTIONS, + logging: true, + custom: `-s "${APP_SEED}"`, + X11: false, + startText: "is ready", +}; + +test.each(models)("can start and stop container ($name)", async (m) => { + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + } finally { + await sim.close(); + } +}); + +test.each(models)("app version ($name)", async (m) => { + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + const result = await str.getAppConfiguration(); + expect(result.version).toBe('4.0.0'); + } finally { + await sim.close(); + } +}); + +describe('get public key', () => { + test.each(models)("get public key without confirmation ($name)", async (m) => { + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + const result = await str.getPublicKey("44'/148'/0'", false, false); + const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK") + + expect(result).toStrictEqual({ + publicKey: kp.publicKey(), + raw: kp.rawPublicKey() + }) + } finally { + await sim.close(); + } + }); + + test.each(models)("get public key with confirmation - approve ($name)", async (m) => { + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + const result = str.getPublicKey("44'/148'/0'", false, true); + const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK") + + await sim.waitScreenChange() + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-public-key-approve`, 'Approve') + + expect(result).resolves.toStrictEqual({ + publicKey: kp.publicKey(), + raw: kp.rawPublicKey() + }) + } finally { + await sim.close(); + } + }); + + test.each(models)("get public key with confirmation - reject ($name)", async (m) => { + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + // TODO: Maybe we should throw a more specific exception in @ledgerhq/hw-app-str + expect(() => str.getPublicKey("44'/148'/0'", false, true)).rejects.toThrow("Ledger device: Condition of use not satisfied (denied by the user?) (0x6985)"); + + await sim.waitScreenChange() + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-public-key-reject`, 'Reject') + } finally { + await sim.close(); + } + }); +}) + +describe('hash signing', () => { + test.each(models)("hash signing mode is not enabled ($name)", async (m) => { + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + const hash = Buffer.from("3389e9f0f1a65f19736cacf544c2e825313e8447f569233bb8db39aa607c8889", "hex") + expect(() => str.signHash("44'/148'/0'", hash)).rejects.toThrow(new Error("Hash signing not allowed. Have you enabled it in the app settings?")); + } finally { + await sim.close(); + } + }); + + test.each(models)("approve ($name)", async (m) => { + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + // enable hash signing + await sim.clickRight() + await sim.clickBoth(undefined, false, 0) + await sim.clickBoth(undefined, false, 0) + + const hash = Buffer.from("3389e9f0f1a65f19736cacf544c2e825313e8447f569233bb8db39aa607c8889", "hex") + const result = str.signHash("44'/148'/0'", hash) + await sim.waitScreenChange() + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-hash-signing-approve`, 'Approve') + const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK") + expect((await result).signature).toStrictEqual(kp.sign(hash)); + } finally { + await sim.close(); + } + }); + + test.each(models)("reject ($name)", async (m) => { + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + // enable hash signing + await sim.clickRight() + await sim.clickBoth(undefined, false, 0) + await sim.clickBoth(undefined, false, 0) + + const hash = Buffer.from("3389e9f0f1a65f19736cacf544c2e825313e8447f569233bb8db39aa607c8889", "hex") + expect(() => str.signHash("44'/148'/0'", hash)).rejects.toThrow(new Error("Transaction approval request was rejected")); + + await sim.waitScreenChange() + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-hash-signing-reject`, 'Reject') + } finally { + await sim.close(); + } + }); +}) + +describe('transactions', () => { + describe.each(getTestCases())('$caseName', (c) => { + test.each(models)("device ($name)", async (m) => { + const tx = c.txFunction(); + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + // display sequence + await sim.clickRight() + await sim.clickBoth(undefined, false, 0) + await sim.clickRight() + await sim.clickBoth(undefined, false, 0) + + const result = str.signTransaction("44'/148'/0'", tx.signatureBase()) + await sim.waitScreenChange(1000 * 60 * 60) + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-${c.filePath}`, 'Finalize', true, undefined, 1000 * 60 * 60) + const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK") + tx.sign(kp) + expect((await result).signature).toStrictEqual(tx.signatures[0].signature()); + } finally { + await sim.close(); + } + }); + }) + + test.each(models)("reject tx ($name)", async (m) => { + const tx = testCasesFunction.txNetworkPublic() + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + // display sequence + await sim.clickRight() + await sim.clickBoth(undefined, false, 0) + await sim.clickRight() + await sim.clickBoth(undefined, false, 0) + + expect(() => str.signTransaction("44'/148'/0'", tx.signatureBase())).rejects.toThrow(new Error("Transaction approval request was rejected")); + + await sim.waitScreenChange(1000 * 60 * 60) + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-tx-reject`, 'Cancel', true, undefined, 1000 * 60 * 60) + } finally { + await sim.close(); + } + }) + + test.each(models)("reject fee bump tx ($name)", async (m) => { + const tx = testCasesFunction.feeBumpTx() + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + // display sequence + await sim.clickRight() + await sim.clickBoth(undefined, false, 0) + await sim.clickRight() + await sim.clickBoth(undefined, false, 0) + + expect(() => str.signTransaction("44'/148'/0'", tx.signatureBase())).rejects.toThrow(new Error("Transaction approval request was rejected")); + + await sim.waitScreenChange(1000 * 60 * 60) + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-fee-bump-tx-reject`, 'Cancel', true, undefined, 1000 * 60 * 60) + } finally { + await sim.close(); + } + }) + + test.each(models)("hide sequence tx ($name)", async (m) => { + const tx = testCasesFunction.txNetworkPublic() + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + const result = str.signTransaction("44'/148'/0'", tx.signatureBase()) + await sim.waitScreenChange(1000 * 60 * 60) + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-tx-hide-sequence`, 'Finalize', true, undefined, 1000 * 60 * 60) + + const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK") + tx.sign(kp) + expect((await result).signature).toStrictEqual(tx.signatures[0].signature()); + } finally { + await sim.close(); + } + }) + + test.each(models)("hide sequence fee bump tx ($name)", async (m) => { + const tx = testCasesFunction.feeBumpTx() + const sim = new Zemu(m.path); + try { + await sim.start({ ...defaultOptions, model: m.name }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + const result = str.signTransaction("44'/148'/0'", tx.signatureBase()) + await sim.waitScreenChange(1000 * 60 * 60) + await sim.navigateAndCompareUntilText(".", `${m.prefix.toLowerCase()}-fee-bump-tx-hide-sequence`, 'Finalize', true, undefined, 1000 * 60 * 60) + + const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK") + tx.sign(kp) + expect((await result).signature).toStrictEqual(tx.signatures[0].signature()); + } finally { + await sim.close(); + } + }) +}) + +function camelToFilePath(str: string) { + return str.replace(/([A-Z])/g, '-$1').toLowerCase(); +} + +function getTestCases() { + const casesFunction = Object.keys(testCasesFunction); + const cases = [] + for (const rawCase of casesFunction) { + cases.push({ + caseName: rawCase, + filePath: camelToFilePath(rawCase), + txFunction: (testCasesFunction as any)[rawCase] // dirty hack + }); + } + return cases; +} diff --git a/tests_zemu/tests/zemu.ts b/tests_zemu/tests/zemu.ts new file mode 100644 index 00000000..5b1b4b47 --- /dev/null +++ b/tests_zemu/tests/zemu.ts @@ -0,0 +1,67 @@ +import Zemu from "@zondax/zemu"; +import axios from "axios"; + +function getRandomInt(min: number, max: number): number { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; +} + +export default class StellarZemu extends Zemu { + private stellarSpeculosApiPort?: number; + + constructor( + elfPath: string, + libElfs: { [key: string]: string } = {}, + host: string = "127.0.0.1", + desiredTransportPort?: number + ) { + const desiredSpeculosApiPort = getRandomInt(3000, 65535); // TODO: Check if it has been used + super(elfPath, libElfs, host, desiredTransportPort, desiredSpeculosApiPort); + this.stellarSpeculosApiPort = desiredSpeculosApiPort; + } + + async click( + endpoint: string, + filename?: string, + waitForScreenUpdate?: boolean, + waitBeforeSnapshot?: number + ) { + let previousScreen; + if (waitForScreenUpdate) { + previousScreen = await this.snapshot(); + } + const bothClickUrl = + "http://localhost:" + this.stellarSpeculosApiPort?.toString() + endpoint; + const payload = { action: "press-and-release" }; + await axios.post(bothClickUrl, payload); + this.log(`Click ${endpoint} -> ${filename}`); + + // Wait and poll Speculos until the application screen gets updated + if (waitForScreenUpdate) { + let watchdog = 5000; + let currentScreen = await this.snapshot(); + while (currentScreen.data.equals(previousScreen.data)) { + this.log("sleep"); + await Zemu.delay(100); + watchdog -= 100; + if (watchdog <= 0) throw "Timeout waiting for screen update"; + currentScreen = await this.snapshot(); + } + } else { + // A minimum delay is required + Zemu.delay(100) + } + // In GitHub Action, it is often encountered that the screen is only refreshed halfway + // before being snapshotted, which will cause the test to fail, so we made this change, + // which can greatly reduce the occurrence of this situation. + if (waitBeforeSnapshot) { + await Zemu.delay(waitBeforeSnapshot); + } + return this.snapshot(filename); + } + + async clickBoth(filename?: string, waitForScreenUpdate = true, waitBeforeSnapshot = 1000) { + return this.click('/button/both', filename, waitForScreenUpdate, waitBeforeSnapshot); + } +} diff --git a/tests_zemu/tsconfig.json b/tests_zemu/tsconfig.json new file mode 100644 index 00000000..3435f95c --- /dev/null +++ b/tests_zemu/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "declaration": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "outDir": "./dist" + }, + "exclude": [ + "node_modules", + "./dist/**" + ] +} From ee959a8b63b0671253a23d0876588300737c92bd Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Sun, 21 Aug 2022 20:25:06 +0800 Subject: [PATCH 2/5] fix: clone submodules --- .github/workflows/swap-ci-workflow.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/swap-ci-workflow.yml b/.github/workflows/swap-ci-workflow.yml index edba4491..22112f21 100644 --- a/.github/workflows/swap-ci-workflow.yml +++ b/.github/workflows/swap-ci-workflow.yml @@ -100,10 +100,11 @@ jobs: steps: - name: Clone - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: repository: "LedgerHQ/app-exchange" ref: "b3bf722138c19453bc9bef59e1b421cf0f5e8328" + submodules: true - name: Build Exchange run: | From 4a91cc32c9e9949d61f9d0cbddb5c928242a1420 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Mon, 22 Aug 2022 15:37:45 +0800 Subject: [PATCH 3/5] add ed25519 signed payload support --- src/transaction/transaction_formatter.c | 48 ++++++- src/transaction/transaction_types.h | 11 +- src/utils.c | 75 ++++++++++ src/utils.h | 22 +++ tests_common_js/src/index.ts | 132 ++++++++++++++++++ tests_unit/test_tx_formatter.c | 5 + tests_unit/test_tx_parser.c | 5 + tests_unit/test_utils.c | 81 +++++++++++ ...etOptionsAddEd25519SignerPayloadSigner.txt | 10 ++ ...ptionsRemoveEd25519SignerPayloadSigner.txt | 9 ++ .../opSetOptionsRemoveHashXSigner.txt | 9 ++ .../opSetOptionsRemovePreAuthTxSigner.txt | 9 ++ .../opSetOptionsRemovePublicKeySigner.txt | 9 ++ .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 516 bytes .../00008.png | Bin 0 -> 421 bytes .../00009.png | Bin 0 -> 500 bytes .../00010.png | Bin 0 -> 461 bytes .../00011.png | Bin 0 -> 277 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 527 bytes .../00008.png | Bin 0 -> 434 bytes .../00009.png | Bin 0 -> 500 bytes .../00010.png | Bin 0 -> 461 bytes .../00011.png | Bin 0 -> 408 bytes .../00012.png | Bin 0 -> 389 bytes .../00013.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 425 bytes .../00008.png | Bin 0 -> 534 bytes .../00009.png | Bin 0 -> 497 bytes .../00010.png | Bin 0 -> 524 bytes .../00011.png | Bin 0 -> 454 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 432 bytes .../00008.png | Bin 0 -> 510 bytes .../00009.png | Bin 0 -> 500 bytes .../00010.png | Bin 0 -> 521 bytes .../00011.png | Bin 0 -> 462 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 379 bytes .../00001.png | Bin 0 -> 341 bytes .../00002.png | Bin 0 -> 337 bytes .../00003.png | Bin 0 -> 444 bytes .../00004.png | Bin 0 -> 463 bytes .../00005.png | Bin 0 -> 403 bytes .../00006.png | Bin 0 -> 408 bytes .../00007.png | Bin 0 -> 430 bytes .../00008.png | Bin 0 -> 529 bytes .../00009.png | Bin 0 -> 515 bytes .../00010.png | Bin 0 -> 515 bytes .../00011.png | Bin 0 -> 456 bytes .../00012.png | Bin 0 -> 408 bytes .../00013.png | Bin 0 -> 389 bytes .../00014.png | Bin 0 -> 428 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 650 bytes .../00008.png | Bin 0 -> 646 bytes .../00009.png | Bin 0 -> 341 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 674 bytes .../00008.png | Bin 0 -> 646 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 521 bytes .../00008.png | Bin 0 -> 981 bytes .../00009.png | Bin 0 -> 544 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 525 bytes .../00008.png | Bin 0 -> 964 bytes .../00009.png | Bin 0 -> 548 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 527 bytes .../00008.png | Bin 0 -> 943 bytes .../00009.png | Bin 0 -> 541 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 650 bytes .../00008.png | Bin 0 -> 646 bytes .../00009.png | Bin 0 -> 341 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 674 bytes .../00008.png | Bin 0 -> 646 bytes .../00009.png | Bin 0 -> 469 bytes .../00010.png | Bin 0 -> 451 bytes .../00011.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 521 bytes .../00008.png | Bin 0 -> 981 bytes .../00009.png | Bin 0 -> 544 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 525 bytes .../00008.png | Bin 0 -> 964 bytes .../00009.png | Bin 0 -> 548 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes .../00000.png | Bin 0 -> 419 bytes .../00001.png | Bin 0 -> 405 bytes .../00002.png | Bin 0 -> 385 bytes .../00003.png | Bin 0 -> 503 bytes .../00004.png | Bin 0 -> 523 bytes .../00005.png | Bin 0 -> 472 bytes .../00006.png | Bin 0 -> 484 bytes .../00007.png | Bin 0 -> 527 bytes .../00008.png | Bin 0 -> 943 bytes .../00009.png | Bin 0 -> 541 bytes .../00010.png | Bin 0 -> 469 bytes .../00011.png | Bin 0 -> 451 bytes .../00012.png | Bin 0 -> 473 bytes 215 files changed, 413 insertions(+), 12 deletions(-) create mode 100644 tests_unit/testcases/opSetOptionsAddEd25519SignerPayloadSigner.txt create mode 100644 tests_unit/testcases/opSetOptionsRemoveEd25519SignerPayloadSigner.txt create mode 100644 tests_unit/testcases/opSetOptionsRemoveHashXSigner.txt create mode 100644 tests_unit/testcases/opSetOptionsRemovePreAuthTxSigner.txt create mode 100644 tests_unit/testcases/opSetOptionsRemovePublicKeySigner.txt create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00014.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00012.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00013.png create mode 100644 tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00014.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00012.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00000.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00001.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00002.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00003.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00004.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00005.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00006.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00007.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00008.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00009.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00010.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00011.png create mode 100644 tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00012.png diff --git a/src/transaction/transaction_formatter.c b/src/transaction/transaction_formatter.c index 4bf03d06..734afa23 100644 --- a/src/transaction/transaction_formatter.c +++ b/src/transaction/transaction_formatter.c @@ -497,20 +497,35 @@ static void format_set_option_signer_detail(tx_ctx_t *tx_ctx) { } case SIGNER_KEY_TYPE_HASH_X: { FORMATTER_CHECK( - encode_hash_x_key(key->hash_x, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + print_hash_x_key(key->hash_x, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH, 0, 0)) break; } case SIGNER_KEY_TYPE_PRE_AUTH_TX: { - FORMATTER_CHECK( - encode_pre_auth_x_key(key->pre_auth_tx, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + FORMATTER_CHECK(print_pre_auth_x_key(key->pre_auth_tx, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + break; + } + case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD: { + FORMATTER_CHECK(print_ed25519_signed_payload(&key->ed25519_signed_payload, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 12, + 12)) break; } default: THROW(SW_TX_FORMATTING_FAIL); return; } - push_to_formatter_stack(&format_set_option_signer_weight); + if (tx_ctx->tx_details.op_details.set_options_op.signer.weight != 0) { + push_to_formatter_stack(&format_set_option_signer_weight); + } else { + format_operation_source_prepare(tx_ctx); + } } static void format_set_option_signer(tx_ctx_t *tx_ctx) { @@ -533,6 +548,10 @@ static void format_set_option_signer(tx_ctx_t *tx_ctx) { STRLCPY(G_ui_detail_value, "Type Pre-Auth", DETAIL_VALUE_MAX_LENGTH); break; } + case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD: { + STRLCPY(G_ui_detail_value, "Type Ed25519 Signed Payload", DETAIL_VALUE_MAX_LENGTH); + break; + } default: THROW(SW_TX_FORMATTING_FAIL); return; @@ -1281,12 +1300,23 @@ static void format_revoke_sponsorship_claimable_signer_signer_key_detail(tx_ctx_ } case SIGNER_KEY_TYPE_HASH_X: { FORMATTER_CHECK( - encode_hash_x_key(key->hash_x, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + print_hash_x_key(key->hash_x, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH, 0, 0)) break; } case SIGNER_KEY_TYPE_PRE_AUTH_TX: { - FORMATTER_CHECK( - encode_pre_auth_x_key(key->pre_auth_tx, G_ui_detail_value, DETAIL_VALUE_MAX_LENGTH)) + FORMATTER_CHECK(print_pre_auth_x_key(key->pre_auth_tx, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 0, + 0)) + break; + } + case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD: { + FORMATTER_CHECK(print_ed25519_signed_payload(&key->ed25519_signed_payload, + G_ui_detail_value, + DETAIL_VALUE_MAX_LENGTH, + 12, + 12)) break; } default: @@ -1311,6 +1341,10 @@ static void format_revoke_sponsorship_claimable_signer_signer_key_type(tx_ctx_t STRLCPY(G_ui_detail_value, "Pre-Auth", DETAIL_VALUE_MAX_LENGTH); break; } + case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD: { + STRLCPY(G_ui_detail_value, "Ed25519 Signed Payload", DETAIL_VALUE_MAX_LENGTH); + break; + } default: THROW(SW_TX_FORMATTING_FAIL); return; diff --git a/src/transaction/transaction_types.h b/src/transaction/transaction_types.h index 9ec3ae95..bc8fc1eb 100644 --- a/src/transaction/transaction_types.h +++ b/src/transaction/transaction_types.h @@ -20,11 +20,12 @@ #define RAW_PRE_AUTH_TX_KEY_SIZE 32 #define RAW_MUXED_ACCOUNT_KEY_SIZE 40 -#define VERSION_BYTE_ED25519_PUBLIC_KEY 6 << 3 -#define VERSION_BYTE_ED25519_SECRET_SEED 18 << 3 -#define VERSION_BYTE_PRE_AUTH_TX_KEY 19 << 3 -#define VERSION_BYTE_HASH_X 23 << 3 -#define VERSION_BYTE_MUXED_ACCOUNT 12 << 3 +#define VERSION_BYTE_ED25519_PUBLIC_KEY 6 << 3 +#define VERSION_BYTE_ED25519_SECRET_SEED 18 << 3 +#define VERSION_BYTE_PRE_AUTH_TX_KEY 19 << 3 +#define VERSION_BYTE_HASH_X 23 << 3 +#define VERSION_BYTE_MUXED_ACCOUNT 12 << 3 +#define VERSION_BYTE_ED25519_SIGNED_PAYLOAD 15 << 3 #define ASSET_CODE_MAX_LENGTH 13 #define CLAIMANTS_MAX_LENGTH 10 diff --git a/src/utils.c b/src/utils.c index 1fcb6a2e..22e80d65 100644 --- a/src/utils.c +++ b/src/utils.c @@ -113,6 +113,37 @@ bool encode_pre_auth_x_key(const uint8_t raw_pre_auth_tx[static RAW_PRE_AUTH_TX_ return encode_key(raw_pre_auth_tx, VERSION_BYTE_PRE_AUTH_TX_KEY, out, out_len); } +bool encode_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payload, + char *out, + size_t out_len) { + if (out_len < 166) { // (103 * 8 + 4) / 5 + return false; + } + if (signed_payload->payload_len > 64 || signed_payload->payload_len <= 0) { + return false; + } + uint8_t data_len = RAW_ED25519_PUBLIC_KEY_SIZE + 4 + signed_payload->payload_len + + ((4 - signed_payload->payload_len % 4) % 4); + uint8_t buffer[1 + 32 + 4 + 64 + 2] = {0}; + buffer[0] = VERSION_BYTE_ED25519_SIGNED_PAYLOAD; + for (uint8_t i = 0; i < 32; i++) { + buffer[i + 1] = signed_payload->ed25519[i]; + } + buffer[36] = signed_payload->payload_len; + for (uint8_t i = 0; i < signed_payload->payload_len; i++) { + buffer[i + 37] = signed_payload->payload[i]; + } + uint16_t crc = crc16(buffer, data_len + 1); // checksum + buffer[1 + data_len] = crc; + buffer[1 + data_len + 1] = crc >> 8; + int ret = base32_encode(buffer, data_len + 3, (uint8_t *) out, out_len); + if (ret == -1) { + return false; + } + out[ret] = '\0'; + return true; +} + bool encode_muxed_account(const muxed_account_t *raw_muxed_account, char *out, size_t out_len) { if (raw_muxed_account->type == KEY_TYPE_ED25519) { return encode_ed25519_public_key(raw_muxed_account->ed25519, out, out_len); @@ -194,6 +225,50 @@ bool print_account_id(const account_id_t account_id, return encode_ed25519_public_key(account_id, out, out_len); } +bool print_hash_x_key(const uint8_t raw_hash_x[static RAW_HASH_X_KEY_SIZE], + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r) { + if (num_chars_l > 0) { + char buffer[ENCODED_HASH_X_KEY_LENGTH]; + if (!encode_hash_x_key(raw_hash_x, buffer, sizeof(buffer))) { + return false; + } + return print_summary(buffer, out, out_len, num_chars_l, num_chars_r); + } + return encode_hash_x_key(raw_hash_x, out, out_len); +} + +bool print_pre_auth_x_key(const uint8_t raw_pre_auth_tx[static RAW_PRE_AUTH_TX_KEY_SIZE], + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r) { + if (num_chars_l > 0) { + char buffer[ENCODED_PRE_AUTH_TX_KEY_LENGTH]; + if (!encode_pre_auth_x_key(raw_pre_auth_tx, buffer, sizeof(buffer))) { + return false; + } + return print_summary(buffer, out, out_len, num_chars_l, num_chars_r); + } + return encode_pre_auth_x_key(raw_pre_auth_tx, out, out_len); +} +bool print_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payload, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r) { + if (num_chars_l + num_chars_r + 2 + 1 > out_len) { + return false; + } + char tmp[166]; + if (!encode_ed25519_signed_payload(signed_payload, tmp, sizeof(tmp))) { + return false; + }; + return print_summary(tmp, out, out_len, num_chars_l, num_chars_r); +} + bool print_muxed_account(const muxed_account_t *muxed_account, char *out, size_t out_len, diff --git a/src/utils.h b/src/utils.h index e3fefab7..a1625827 100644 --- a/src/utils.h +++ b/src/utils.h @@ -16,6 +16,10 @@ bool encode_pre_auth_x_key(const uint8_t raw_pre_auth_tx[static RAW_PRE_AUTH_TX_ bool encode_muxed_account(const muxed_account_t *raw_muxed_account, char *out, size_t out_len); +bool encode_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payload, + char *out, + size_t out_len); + bool print_claimable_balance_id(const claimable_balance_id *claimable_balance_id, char *out, size_t out_len, @@ -53,6 +57,24 @@ bool print_account_id(account_id_t account_id, uint8_t num_chars_l, uint8_t num_chars_r); +bool print_hash_x_key(const uint8_t raw_hash_x[static RAW_HASH_X_KEY_SIZE], + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r); + +bool print_pre_auth_x_key(const uint8_t raw_pre_auth_tx[static RAW_PRE_AUTH_TX_KEY_SIZE], + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r); + +bool print_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payload, + char *out, + size_t out_len, + uint8_t num_chars_l, + uint8_t num_chars_r); + bool print_muxed_account(const muxed_account_t *muxed_account, char *out, size_t out_len, diff --git a/tests_common_js/src/index.ts b/tests_common_js/src/index.ts index 6e3a56a9..463e43ca 100644 --- a/tests_common_js/src/index.ts +++ b/tests_common_js/src/index.ts @@ -321,6 +321,20 @@ export function opSetOptionsAddPublicKeySigner() { .build(); } +export function opSetOptionsRemovePublicKeySigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setOptions({ + signer: { + ed25519PublicKey: kp1.publicKey(), + weight: 0, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + export function opSetOptionsAddHashXSigner() { return getCommonTransactionBuilder() .addOperation( @@ -337,6 +351,23 @@ export function opSetOptionsAddHashXSigner() { .build(); } + +export function opSetOptionsRemoveHashXSigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setOptions({ + signer: { + sha256Hash: StrKey.decodeSha256Hash( + "XDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH235FXL" + ), + weight: 0, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + export function opSetOptionsAddPreAuthTxSigner() { return getCommonTransactionBuilder() .addOperation( @@ -353,6 +384,71 @@ export function opSetOptionsAddPreAuthTxSigner() { .build(); } + +export function opSetOptionsRemovePreAuthTxSigner() { + return getCommonTransactionBuilder() + .addOperation( + Operation.setOptions({ + signer: { + preAuthTx: StrKey.decodePreAuthTx( + "TDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH234BSS" + ), + weight: 0, + }, + source: kp0.publicKey(), + }) + ) + .build(); +} + +export function opSetOptionsAddEd25519SignerPayloadSigner() { + // We cannot build such a transaction directly through the js-stellar-base + // from stellar_sdk import * + + // kp0 = Keypair.from_secret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK") + // kp1 = Keypair.from_secret("SAE52G23WPAS7MIR2OFGILLICLXXR4K6HSXZHMKD6C33JCAVVILIWYAA") + + // account = Account(kp0.public_key, 103720918407102567) + // tx = ( + // TransactionBuilder(account, Network.PUBLIC_NETWORK_PASSPHRASE, 100) + // .add_text_memo("hello world") + // .add_time_bounds(0, 1670818332) + // .append_set_options_op(signer=Signer(signer_key=SignerKey.ed25519_signed_payload( + // SignedPayloadSigner(kp1.public_key, b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ000123456789')), + // weight=10 + // ), source=kp0.public_key).build() + // ) + // xdr = tx.to_xdr() + // PDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFKAAAABAGCYTDMRSWMZ3INFVGW3DNNZXXA4LSON2HK5TXPB4XUQKCINCEKRSHJBEUUS2MJVHE6UCRKJJVIVKWK5MFSWRQGAYDCMRTGQ2TMNZYHF52U + const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAGQBcH2gMW7AaAAAAAEAAAAAAAAAAAAAAABjlqocAAAAAQAAAAtoZWxsbyB3b3JsZAAAAAABAAAAAQAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAD4saBD5tQmyZL8lxf+El0W8/MdWWJGd3aNqynMuZp6FUAAABAYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAwMDEyMzQ1Njc4OQAAAAoAAAAAAAAAAA=="; + return TransactionBuilder.fromXDR(xdr, Networks.PUBLIC); +} + + +export function opSetOptionsRemoveEd25519SignerPayloadSigner() { + // We cannot build such a transaction directly through the js-stellar-base + // from stellar_sdk import * + + // kp0 = Keypair.from_secret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK") + // kp1 = Keypair.from_secret("SAE52G23WPAS7MIR2OFGILLICLXXR4K6HSXZHMKD6C33JCAVVILIWYAA") + + // account = Account(kp0.public_key, 103720918407102567) + // tx = ( + // TransactionBuilder(account, Network.PUBLIC_NETWORK_PASSPHRASE, 100) + // .add_text_memo("hello world") + // .add_time_bounds(0, 1670818332) + // .append_set_options_op(signer=Signer(signer_key=SignerKey.ed25519_signed_payload( + // SignedPayloadSigner(kp1.public_key, b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ000123456789')), + // weight=0 + // ), source=kp0.public_key).build() + // ) + // xdr = tx.to_xdr() + // PDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFKAAAABAGCYTDMRSWMZ3INFVGW3DNNZXXA4LSON2HK5TXPB4XUQKCINCEKRSHJBEUUS2MJVHE6UCRKJJVIVKWK5MFSWRQGAYDCMRTGQ2TMNZYHF52U + const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAGQBcH2gMW7AaAAAAAEAAAAAAAAAAAAAAABjlqocAAAAAQAAAAtoZWxsbyB3b3JsZAAAAAABAAAAAQAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAD4saBD5tQmyZL8lxf+El0W8/MdWWJGd3aNqynMuZp6FUAAABAYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAwMDEyMzQ1Njc4OQAAAAAAAAAAAAAAAA=="; + return TransactionBuilder.fromXDR(xdr, Networks.PUBLIC); +} + + export function opChangeTrustAddTrustLine() { return getCommonTransactionBuilder() .addOperation( @@ -894,6 +990,42 @@ export function opRevokeSponsorshipPreAuthTxSigner() { .build(); } + +// TODO: We need to add the corresponding support in the SDK. +// export function opRevokeSponsorshipEd25519SignedPayloadSigner() { +// // We cannot build such a transaction directly through the js-stellar-base +// // from stellar_sdk import * +// // from stellar_sdk.operation.revoke_sponsorship import RevokeSponsorshipType, Signer +// // tx = ( +// // TransactionBuilder(account, Network.PUBLIC_NETWORK_PASSPHRASE, 100) +// // .add_text_memo("hello world") +// // .add_time_bounds(0, 1670818332) +// // .append_operation( +// // RevokeSponsorship( +// // RevokeSponsorshipType.SIGNER, +// // account_id=None, +// // trustline=None, +// // offer=None, +// // data=None, +// // claimable_balance_id=None, +// // liquidity_pool_id=None, +// // signer=Signer( +// // kp1.public_key, +// // SignerKey.ed25519_signed_payload( +// // SignedPayloadSigner( +// // kp1.public_key, +// // b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ000123456789", +// // ) +// // ), +// // ), +// // source=kp0.public_key, +// // ) +// // ) +// // .build() +// // ) +// // xdr = tx.to_xdr() +// } + export function opClawback() { return getCommonTransactionBuilder() .addOperation( diff --git a/tests_unit/test_tx_formatter.c b/tests_unit/test_tx_formatter.c index 9a55da14..0b3f9d91 100644 --- a/tests_unit/test_tx_formatter.c +++ b/tests_unit/test_tx_formatter.c @@ -26,8 +26,13 @@ static const char *testcases[] = { "../testcases/opSetOptions.raw", "../testcases/opSetOptionsWithEmptyBody.raw", "../testcases/opSetOptionsAddPublicKeySigner.raw", + "../testcases/opSetOptionsRemovePublicKeySigner.raw", "../testcases/opSetOptionsAddHashXSigner.raw", + "../testcases/opSetOptionsRemoveHashXSigner.raw", "../testcases/opSetOptionsAddPreAuthTxSigner.raw", + "../testcases/opSetOptionsRemovePreAuthTxSigner.raw", + "../testcases/opSetOptionsAddEd25519SignerPayloadSigner.raw", + "../testcases/opSetOptionsRemoveEd25519SignerPayloadSigner.raw", "../testcases/opChangeTrustAddTrustLine.raw", "../testcases/opChangeTrustRemoveTrustLine.raw", "../testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.raw", diff --git a/tests_unit/test_tx_parser.c b/tests_unit/test_tx_parser.c index 8c15b12d..148e8b92 100644 --- a/tests_unit/test_tx_parser.c +++ b/tests_unit/test_tx_parser.c @@ -25,8 +25,13 @@ static const char *testcases[] = { "../testcases/opSetOptions.raw", "../testcases/opSetOptionsWithEmptyBody.raw", "../testcases/opSetOptionsAddPublicKeySigner.raw", + "../testcases/opSetOptionsRemovePublicKeySigner.raw", "../testcases/opSetOptionsAddHashXSigner.raw", + "../testcases/opSetOptionsRemoveHashXSigner.raw", "../testcases/opSetOptionsAddPreAuthTxSigner.raw", + "../testcases/opSetOptionsRemovePreAuthTxSigner.raw", + "../testcases/opSetOptionsAddEd25519SignerPayloadSigner.raw", + "../testcases/opSetOptionsRemoveEd25519SignerPayloadSigner.raw", "../testcases/opChangeTrustAddTrustLine.raw", "../testcases/opChangeTrustRemoveTrustLine.raw", "../testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.raw", diff --git a/tests_unit/test_utils.c b/tests_unit/test_utils.c index b690ca47..f86229bf 100644 --- a/tests_unit/test_utils.c +++ b/tests_unit/test_utils.c @@ -43,6 +43,85 @@ static void test_encode_pre_auth_x_key() { assert_string_equal(out, encoded_key); } +static void test_encode_ed25519_signed_payload() { + char out[166]; + uint8_t raw_key[] = {0x3f, 0xc, 0x34, 0xbf, 0x93, 0xad, 0xd, 0x99, 0x71, 0xd0, 0x4c, + 0xcc, 0x90, 0xf7, 0x5, 0x51, 0x1c, 0x83, 0x8a, 0xad, 0x97, 0x34, + 0xa4, 0xa2, 0xfb, 0xd, 0x7a, 0x3, 0xfc, 0x7f, 0xe8, 0x9a}; + uint8_t payload1[] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, + 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20}; + ed25519_signed_payload_t ed25519_signed_payload1 = {.ed25519 = raw_key, + .payload_len = 32, + .payload = payload1}; + assert_true(encode_ed25519_signed_payload(&ed25519_signed_payload1, out, sizeof(out))); + assert_string_equal(out, + "PA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAQACAQDAQCQMBYIBE" + "FAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB6IBZGM"); + + uint8_t payload2[] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, + 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d}; + ed25519_signed_payload_t ed25519_signed_payload2 = {.ed25519 = raw_key, + .payload_len = 29, + .payload = payload2}; + assert_true(encode_ed25519_signed_payload(&ed25519_signed_payload2, out, sizeof(out))); + assert_string_equal(out, + "PA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAOQCAQDAQCQMBYIBE" + "FAWDANBYHRAEISCMKBKFQXDAMRUGY4DUAAAAFGBU"); + + uint8_t payload3[] = {0x1a, 0xc9, 0x18, 0xbd, 0x8b, 0x1b, 0x7, 0x93, 0x56, 0x32, 0x6f, + 0x6b, 0x3, 0xe2, 0x85, 0x79, 0xa4, 0xdd, 0xa2, 0x9c, 0xc2, 0x7a, + 0x67, 0xf4, 0x2c, 0x26, 0x75, 0x6f, 0x6e, 0xe5, 0x23, 0x79, 0xbc, + 0x19, 0x7c, 0x47, 0x6f, 0xa6, 0x5a, 0x6c, 0xc7, 0x73, 0xdc, 0x14, + 0xbc, 0x6e, 0x9d, 0xfa, 0x1b, 0x70, 0x78, 0x6c, 0xaf, 0xe4, 0x89, + 0x7d, 0xa6, 0xad, 0x3, 0x2b, 0x78, 0x6e, 0xda, 0xfa}; + ed25519_signed_payload_t ed25519_signed_payload3 = {.ed25519 = raw_key, + .payload_len = 64, + .payload = payload3}; + assert_true(encode_ed25519_signed_payload(&ed25519_signed_payload3, out, sizeof(out))); + assert_string_equal( + out, + "PA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAABABVSIYXWFRWB4TKYZG62YD4KCXTJG5UK" + "OME6TH6QWCM5LPN3SSG6N4DF6EO35GLJWMO464CS6G5HP2DNYHQ3FP4SEX3JVNAMVXQ3W27JBW2"); +} + +static void test_print_ed25519_signed_payload() { + char out[89]; + uint8_t raw_key[] = {0x3f, 0xc, 0x34, 0xbf, 0x93, 0xad, 0xd, 0x99, 0x71, 0xd0, 0x4c, + 0xcc, 0x90, 0xf7, 0x5, 0x51, 0x1c, 0x83, 0x8a, 0xad, 0x97, 0x34, + 0xa4, 0xa2, 0xfb, 0xd, 0x7a, 0x3, 0xfc, 0x7f, 0xe8, 0x9a}; + uint8_t payload1[] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, + 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20}; + ed25519_signed_payload_t ed25519_signed_payload1 = {.ed25519 = raw_key, + .payload_len = 32, + .payload = payload1}; + assert_true(print_ed25519_signed_payload(&ed25519_signed_payload1, out, sizeof(out), 12, 12)); + assert_string_equal(out, "PA7QYNF7SOWQ..Y4DUPB6IBZGM"); + + uint8_t payload2[] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, + 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d}; + ed25519_signed_payload_t ed25519_signed_payload2 = {.ed25519 = raw_key, + .payload_len = 29, + .payload = payload2}; + assert_true(print_ed25519_signed_payload(&ed25519_signed_payload2, out, sizeof(out), 12, 12)); + assert_string_equal(out, "PA7QYNF7SOWQ..Y4DUAAAAFGBU"); + + uint8_t payload3[] = {0x1a, 0xc9, 0x18, 0xbd, 0x8b, 0x1b, 0x7, 0x93, 0x56, 0x32, 0x6f, + 0x6b, 0x3, 0xe2, 0x85, 0x79, 0xa4, 0xdd, 0xa2, 0x9c, 0xc2, 0x7a, + 0x67, 0xf4, 0x2c, 0x26, 0x75, 0x6f, 0x6e, 0xe5, 0x23, 0x79, 0xbc, + 0x19, 0x7c, 0x47, 0x6f, 0xa6, 0x5a, 0x6c, 0xc7, 0x73, 0xdc, 0x14, + 0xbc, 0x6e, 0x9d, 0xfa, 0x1b, 0x70, 0x78, 0x6c, 0xaf, 0xe4, 0x89, + 0x7d, 0xa6, 0xad, 0x3, 0x2b, 0x78, 0x6e, 0xda, 0xfa}; + ed25519_signed_payload_t ed25519_signed_payload3 = {.ed25519 = raw_key, + .payload_len = 64, + .payload = payload3}; + assert_true(print_ed25519_signed_payload(&ed25519_signed_payload3, out, sizeof(out), 12, 12)); + assert_string_equal(out, "PA7QYNF7SOWQ..MVXQ3W27JBW2"); +} + static void test_encode_muxed_account() { // https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0023.md#valid-test-cases char out[89]; @@ -367,6 +446,8 @@ int main() { cmocka_unit_test(test_encode_hash_x_key), cmocka_unit_test(test_encode_pre_auth_x_key), cmocka_unit_test(test_encode_muxed_account), + cmocka_unit_test(test_encode_ed25519_signed_payload), + cmocka_unit_test(test_print_ed25519_signed_payload), cmocka_unit_test(test_print_binary), cmocka_unit_test(test_print_claimable_balance_id), cmocka_unit_test(test_print_time), diff --git a/tests_unit/testcases/opSetOptionsAddEd25519SignerPayloadSigner.txt b/tests_unit/testcases/opSetOptionsAddEd25519SignerPayloadSigner.txt new file mode 100644 index 00000000..19b063e1 --- /dev/null +++ b/tests_unit/testcases/opSetOptionsAddEd25519SignerPayloadSigner.txt @@ -0,0 +1,10 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Add Signer; Type Ed25519 Signed Payload +Signer Key; PDRMNAIPTNIJ..Q2TMNZYHF52U +Weight; 10 +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptionsRemoveEd25519SignerPayloadSigner.txt b/tests_unit/testcases/opSetOptionsRemoveEd25519SignerPayloadSigner.txt new file mode 100644 index 00000000..ee482b59 --- /dev/null +++ b/tests_unit/testcases/opSetOptionsRemoveEd25519SignerPayloadSigner.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Remove Signer; Type Ed25519 Signed Payload +Signer Key; PDRMNAIPTNIJ..Q2TMNZYHF52U +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptionsRemoveHashXSigner.txt b/tests_unit/testcases/opSetOptionsRemoveHashXSigner.txt new file mode 100644 index 00000000..9063acb4 --- /dev/null +++ b/tests_unit/testcases/opSetOptionsRemoveHashXSigner.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Remove Signer; Type Hash(x) +Signer Key; XDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH235FXL +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptionsRemovePreAuthTxSigner.txt b/tests_unit/testcases/opSetOptionsRemovePreAuthTxSigner.txt new file mode 100644 index 00000000..29d71e51 --- /dev/null +++ b/tests_unit/testcases/opSetOptionsRemovePreAuthTxSigner.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Remove Signer; Type Pre-Auth +Signer Key; TDNA2V62PVEFBZ74CDJKTUHLY4Y7PL5UAV2MAM4VWF6USFE3SH234BSS +Op Source; GDUTHC..XM2FN7 diff --git a/tests_unit/testcases/opSetOptionsRemovePublicKeySigner.txt b/tests_unit/testcases/opSetOptionsRemovePublicKeySigner.txt new file mode 100644 index 00000000..797441a5 --- /dev/null +++ b/tests_unit/testcases/opSetOptionsRemovePublicKeySigner.txt @@ -0,0 +1,9 @@ +Memo Text; hello world +Max Fee; 0.00001 XLM +Sequence Num; 103720918407102568 +Valid Before (UTC); 2022-12-12 04:12:12 +Tx Source; GDUTHC..XM2FN7 +Operation Type; Set Options +Remove Signer; Type Public Key +Signer Key; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX +Op Source; GDUTHC..XM2FN7 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00000.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..88429892f93b7b0e9cd223636a3660d85014331c GIT binary patch literal 379 zcmV->0fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00002.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00003.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00005.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00006.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpR~k7dAzA zFR+_6XZHzjfTHERi}d(-J#F_1X#l2Wi9)I)x4gSh*%K9#7Ha<1Fe6T?@uy~+Xp-x` za2=QAAmJH;58i#B2iYZI9sMi&et}GqSA?Sc((73fX@fJdb`)A2-V9rj zZDw(OZayOL__zc0M)9_>AeCEp*e?6yLfbwWE4hMfQ5n~42e>&@tU1kUd z{dc_VDrHRs4Nzx~wK3|sS+8A-mQ>L+IAms(&`6ajzD)mGh-mKL1B~hYo7Gx>t0kn# z1ro67e`2x&S&ClZOojqm}=zi5LTYGi)^0000Fq}V literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00008.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..df7ffc344343639475f1d788addc293f0f5233d6 GIT binary patch literal 421 zcmV;W0b2fvP)Sv$2z z^Bv1_0U+FR8`=iC=0vZ^*|QQ=ppDL#+FSU-J5fP_9X10qPk@}iotlO*69D!E&VGbx zkTo0$GXW?ep5q^MUt&7|<(Zqh{**sqI@LVReXslw#|eS^Qtvp9Ch*cki^jFR z50=g&-5dP;Q+KlS!JUq!#IH*HCpnsxzJ?%rbB zk!uHyxZp!x?3AziUI`XjMd1R{9c*`6G+tEhyVVs=7|U~C@pHEW@->&UuPpC$3rF1! z@Z9<$Ymn||SFk_J!T_{WkbgK{s7nz;<$=*!LKWtcHCH(pawJ!cEEvqH128(3h022y zr7<~goM9W;f*P5ECekieIZA9^6YYKyn75Rz8cJRSjnp~9g?^U=(v1PWq>{^`mB)?A qFv^{A%B$4H8Lio643Z>C5*MBuk7!?SlW05u0000BGAGex<}o5qxftzy{13 z$Xcfv^&xC<*A2Y4;)k_e=lJd@3$rdX&EJQbY5ptO+LSJJA^Qu3!@jImHhv)TEX$1p zx011$qUe;6J()@aA1~DV1k`)BdAk{>C-=C$FH~AYL9srk$HxUR_fjw##y(YPgSKVT z*Vof``QHIG9@Bv5fYs`%$E`l~H-PQ|ltnbwc+vO8tDhgJ4Q20kB=X;t@+H}uNL{A@qq^rnA57X{B*VN=LWhg&VFQ?-I7||- zI|DYe^kqp+B?%f3stK9mJzz)_1fwq&q}LI;C0bJiO8H^47K&c5Su{#;_Vma&DitC3 zZ^HqHc?G+ivoF{o#O8t&_HqEyZ^-Wob$j@{WhrDiR1r&{0W5j3nu|+g={tJ$=`MG` zMw?%1<_4=zH*!H6%my93HWbAQm9L~pk|arzBuQ6309QnC65wij00000NkvXXu0mjf D(L>Kv literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00011.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4d9daadddf79c27181b32fe7a97f3fb1c59d09 GIT binary patch literal 277 zcmV+w0qXvVP)I+Sk1AU|^G^@?w>V5D^jid%u3hYC2u=|1BD-yVeG< zx0Sc6;-&KRE?`mJ!Q=c)>!77Bw$t)ju8`L5(P+9l7+s73_8X7|S^!4t!0au-0yxfZ zTkogSwSa;JU@Ljlv0~in-xfD5#3rk1j{FfOwM8!702F{2_R9q{0{fM9=Q9%Q4feD^rN1shj#(%;+~;)00xi?18~LwoG}2}1Nt|Vh=_=Y bL`38Q7|x2}9WmP%00000NkvXXu0mjf)UkV_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00012.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00014.png b/tests_zemu/snapshots/s-op-set-options-add-ed25519-signer-payload-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00002.png b/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00003.png b/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00005.png b/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00006.png b/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpRcI@Ge)bL&3GKl>Tz=7vvi%zNhX6!oAHsJ`b@6 zD{*oa+8>{bjMz|20shK5^=Fw?6}TXh2gR!JD+TwGF`8KQd0}=x7Rrk}exhe=WC}>> zi5&|4?OYIME|rYqqh=Qv^Vd$S;<+N)xuDv`ViJFg;36TN7V4fnk$lnwp(gZ&sgEV4 zyY*dB@!_F~HZeNMIzoz6l>sSqr!RKp+q}2yfOiZt9m_ R04D$d002ovPDHLkV1i!M@RtAp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00008.png b/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..6bb73892245c537effb33550bfcc68529e9c0e0d GIT binary patch literal 434 zcmV;j0ZsmiP)gxM2Z#b%X~#P?N)ZLo(v*TA2!em*A&}j-;=T89Q}kx++Z21U z+B_l{Z;CwWAX#nJ+G!+=hW+vqPK&*5=t}9zv7b3^sQ8}h4Z=L<7T=HX!AkC& zh5XZ4a7 z1Nitg>U4}72asRjWbsv@*0CqtIG~4tMN>EUc0hmR)(V{bPs%{d?UwJ^772ossDJT6 c5CnmZ4{rk^fmqvQc>n+a07*qoM6N<$f)Lct9RL6T literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00009.png b/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..1c37a14c037298dfe40475e495139bf64330af78 GIT binary patch literal 500 zcmVCh*cki^jFR z50=g&-5dP;Q+KlS!JUq!#IH*HCpnsxzJ?%rbB zk!uHyxZp!x?3AziUI`XjMd1R{9c*`6G+tEhyVVs=7|U~C@pHEW@->&UuPpC$3rF1! z@Z9<$Ymn||SFk_J!T_{WkbgK{s7nz;<$=*!LKWtcHCH(pawJ!cEEvqH128(3h022y zr7<~goM9W;f*P5ECekieIZA9^6YYKyn75Rz8cJRSjnp~9g?^U=(v1PWq>{^`mB)?A qFv^{A%B$4H8Lio643Z>C5*MBuk7!?SlW05u0000BGAGex<}o5qxftzy{13 z$Xcfv^&xC<*A2Y4;)k_e=lJd@3$rdX&EJQbY5ptO+LSJJA^Qu3!@jImHhv)TEX$1p zx011$qUe;6J()@aA1~DV1k`)BdAk{>C-=C$FH~AYL9srk$HxUR_fjw##y(YPgSKVT z*Vof``QHIG9@Bv5fYs`%$E`l~H-PQ|ltnbwc+vO8tDhgJ4Q20kB=X;t@+H}uNL{A@qq^rnA57X{B*VN=LWhg&VFQ?-I7||- zI|DYe^kqp+B?%f3stK9mJzz)_1fwq&q}LI;C0bJiO8H^47K&c5Su{#;_Vma&DitC3 zZ^HqHc?G+ivoF{o#O8t&_HqEyZ^-Wob$j@{WhrDiR1r&{0W5j3nu|+g={tJ$=`MG` zMw?%1<_4=zH*!H6%my93HWbAQm9L~pk|arzBuQ6309QnC65wij00000NkvXXu0mjf D(L>Kv literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00011.png b/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00013.png b/tests_zemu/snapshots/s-op-set-options-remove-ed25519-signer-payload-signer/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00002.png b/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00003.png b/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00005.png b/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00006.png b/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpR?s}@iJE!&nPNs>I3U0>wqti&Js@`ug%oRRkU zQO~@74m4w7-hQfJMZh0{{b+m9@wNZLYyTl*K(D&d-pHYBUOJM{2w)y&deQOF(lpK+ zV-Qs~5rBG%QBI)5);>Gzu=aV(W&@~5x6{S+qKhcp82eOXc?OipE6xE{b6(~$N!;rY zMvvL~@yswjdrS&9fATt(r-XDRbvCLcdcC$0MrP`~g#s}y`iw+N2aPynrK3hR*);fw9s!{EFL`1+Xn8~AoLZx`2J1dr(WGue{0}Fv>o>f!ID@JW`G|xq$ z>e3CxB;jBUR*HcBY#ggcQc0hZz?aQe4V`Jii(*3U#)bu@pd=Fh)|ezol6dh2*=`_# T35!Kj00000NkvXXu0mjfUFN~_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00008.png b/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..50eca91875f8d463462654be0c4c0c0cb3c2c232 GIT binary patch literal 534 zcmV+x0_pvUP)f7y@R*8- z^)cbAr|VfZj9-7BTy*t;@#h<1*V)j8X+M&qIkK--fMKV#^;1b7yp#8wLdnMKB(I>l zmPoPr99gRxlUFGYzh+?;$X+pRHmRl!wp3$*qvL|R=_!weRs0zhk|~6_Mxxe}=JX2^ zZM>wleJN2&94E@9TC*(*r^o(BvalD=B)~R~sXH(g(Mszl@whgBkNlXO202?6w83ra zYF8Et)|A*b@Y{lDgR;CmKR=1Jz9XT&17t9qn_KQyXaz^sU3bn0Mq25E7OQ6eA3$zO z?|acz zFR5d>UaIQiC7S_7Lqb|I@iQZ29McGpYxc-;BXxlYm{6KU9f_539JZiVw33eD2VeVO zZsNd5UIu=b7f86fdkR%#p+wOBQtQ>#;?jj03h4gikRjEo*~wAlxI-@F}{OEK!uokpb?Wu=`Ct=PoT#f*unbZwwC|TaEV$wLRDt;8e;3S+)aPK$a zS^F0IneWhcH{s*sA4F6c*5?dZwGv7FYpOG`HEsDQwt+daKnK82ii17=#a8 z^_eb$XcL>y0LqSOrLF_k>MaoV7($N07_2KK%*Z1T*v*xk5I?KtcA z9A7J@qkM=Flwtgqin#^95DW*15-?}L0O%{cjG zg^|`OGj8?CP@urFPw(ru=Z0Fwu_T~s70X`N>LtW0Y0j`r*e-C5g?&|8x&S@Wx)cTl zrQs7#Ut?1#g{Pqxg~vXLn)$txO)buN#g2_ z1>g^MfNCh64P7(fH*gnnYAA)rj0#kY(?uq=Oiz*|Ns=TP;9?wmT*;kOWT)I z#+W?#BuVuTzZlU`QzKO+IT{k`H6phH@;Tcb8JI(YbDUq7sfKp^{2(2I&ekc@G5lde zA9R>3YL!oLG}cwiTtG7i8?3>f}cyekaIvaiA890aEieyVQr{OyKP}x zSu0G5Cwhg%)!DVI4njweNBMeG^7&J!y{z8cgok8pM)uVKqT9^s-V*nLB?eK*NgRzF zkk@1KFuV>ryTF0_OG2`Md!$01H$HyTG0`@sdi~pUKipS%f)zjNBs>G0v+;0D9dPAB z4Vtp`6g>xa4nS{DQG=#Oc=eWqXfina>M#@5A&B{vqc3;C<%MQ@Qy%pq=FDU-aqLz= w(+;Hisj`{?axdl^&|e5sj^j9v<2d)@1?%e|<*4E-4*&oF07*qoM6N<$f}#1y*#H0l literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00012.png b/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00014.png b/tests_zemu/snapshots/s-op-set-options-remove-hash-x-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00002.png b/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00005.png b/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00006.png b/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpRWck|F#*|X=#rh z;L72%p&1k7tEVdNNQ}pb{YZO@<6->9*L)&kK(0E`p2(@$Jar}&GXQy@^cKg*mZXtx zj6hb&WI!=egla-fER5OP0V`j}WE@b-bU9r}Z*dbl9V1_AB)71`u-2xi|nGCvjV>$VzZ6!^dd2W7!VCDB}tMbNfvNEetxwjXdw1_S_4&r zTY~20Wt&-k2X`7eJ?z_$alpqaMLg%D9QUt_mgD}?^6XPZ+Q#mdRnE$GPibdKtu%{^ zMtuui%QRHk;8k`51DTWz6Arcw7-nbb3TR_i6Im?EiP0F>%MJ~gHr`G^3X)c<(lPqU zQy(mUaor9P;G5t*pd})#*mcl7^$e}qMSLuE0L}nlJFT>*T-1HCM8oANCOrm2X% zK4$xx8G4ls{^RdAxBl_Q{pUY|jvN!r++-CTxKmReZjhm9)mQL_D3l&Xeo-I0pp#%V#I z4YyeP*A`tmxsAJ6`5lGBSu`PR3G7&Y##?fsHFbvVJaJsGukArt3fKvBFY44Re5WmMAN#yO%AQ*mIG?0r(JB8Xugb zYA>BH3s;YE6BuSDaNs>gtCqkK}nfoOY*Z=?k07*qoM6N<$f~BzV AT>t<8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00009.png b/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa5116360d7195e7c4ec52dd8ad0e90750b3482 GIT binary patch literal 500 zcmVS4 zKh+Eu5q`(jP5BbzaYKd;C7++#X*gu}$id7Z$Ho;nluHt!&H_`(AX_ z=g3%=OSQUq$!0*&kdT&4{LBa$M>PWSHM_FhNL?TTCX^;oE3q<;!4}ktR?;#2;H3}d zCJxMav^fs~ZQmH50XY`Ssu~AHEmn=^RO=LJqv`;>1AyZ+kw*_X+T;ViZ{ap@bhj|v zrYz2So8xOnwU!NfpTGCAdgJ-?A3>k9rVCSElC9aPYm|y%m$mh;;yyUZnO(?G z{fjhbYg_Lo8@fr;>GIYPa7R2kES4MyDCvU}FY=Yi=a4fS(WsA}FDiliP qoJRQYcy@eQkotwAU%p$29R`UDWrd zdIgksaJ6PAP+%gc_a5%Kp(b`LS5h^vwUFtWzUHvkASkmMHOC^`vYKI{rl&_*m%<>$ zG_2Wa+vheGxf-8!R}KyUU5v(o!%b#KUp|ttu<`Qhr)`vqXdR}{_g3B+AXW1kz#r@Y z)lfPcx@xY8v6Dt>8)3)=*{?=w|3OBqr@7a}H#fPtkAahR215YUAWIg8!>C!xTg)`H^GfJr;=o-SIVfI`r+EQAn3$Wb2m*C$DW3>CkRX)uJg z#A$UuE?WLrH|wW6kGq?R;$92oG5O>g06|)VaDCn0B>6g%Tujs(ZEVo4U#K-gwLi7@ z7a4OhdGSe-<`;aJVW>+<(@Dfb!@W-Y-he!3hbsfPB%R~0#+aBvNp_VvN(FUU?peTyE+=$*Q1+JHPb@k&Q-2CMz^PVZ3QK@)-i5+3b*!OV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00012.png b/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc3dfc0bf92d491a4067aa847cef8f0c946545a GIT binary patch literal 408 zcmV;J0cZY+P)|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00014.png b/tests_zemu/snapshots/s-op-set-options-remove-pre-auth-tx-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v00000fhdEP);X?a z0de~=yk>HjK6hmD2E_AklvVW+oNFx&=(6=+WpaQd|YZbwnuFqAP4RRg%|`$U)uhLCPG8^ zOXBrf4-Ln{Pe6(Ev6_h8n-1$B=jL#K4c%4%TOC>to9$P zF%dgE8H}05I{Q2zkoZNMPtXGc_6Q+KL1delFhs7OTvvBPvzM^72e}|27+iKDU+jm0 zVw{ZromodV&kA{f-&7SL8n0G}7%NPGo<52GP|SxQr;8`@=IOYiDXrZuURVVH00013 Zhz}pEVds>2TN=BjF21;|^+n3Z-hTX?iMCOC_3ouJ?ea!H*@nEAwJ4c{ zomQWyH^9t9J@roK-D3kz)@e{AlG8!hg$wt> z`vwf14DXx4xEkI!27BNMqL3$^d005Pr7FOh(6igk+!bQM3dPmv+-qKlv2~EVIO@k# zIdjyOYpCl-V4=EsSNLpI)sezF_fVf0QpEa4Z%B*{*f{Ylp@tTTt$u)PGeLL)+yIF} nIU#)BebG;m1^@s60N9WplG?d6lq!K%00000NkvXXu0mjf+C!QR literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00002.png b/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2ad7eb88f1f76ec43ab02a7f0e0af82a80cc3b GIT binary patch literal 337 zcmV-X0j~auP)TtyCe zXv^2T0XNXS=qV!vAnnva+;zzdMh~&Fw7i-iM-(Ny&8ig(vX12~S-Cl*jex*3Yl}p2 z#O(TXqNe~TvetC0`8i;5;^Wlkecc@hB5Gjvydk~>+rf%JN>3blGiEB{4$|YXG0S}g41hCFnSvDTe{Vb{D~^DdkZmfm@=cpgX^ESq^uq53 jsi*&Cgb+dqAx~uk*0kV8FTAb100000NkvXXu0mjf>PV6_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00003.png b/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3957ddd44e8a44f41e2e30f25d42a10791e9816f GIT binary patch literal 444 zcmV;t0YmJK4^ghCNUPzmCBZ_)AKG(-X$bo2`*iyz^2!8m~N8Z4NxUM3v z5*L@8@ZJIK+7Z|LRcyMtmbeLm7;^-*8@BwnXKlJ`OfJGL+JPX*5{bim2k@x)>#G+$ zqANnW8MH*}F--Pjm9S@V67T%!*ewA?2{~jgHcUVfquz5O0?8aiveqfI8^4o$2!HcB zNs$UKy>bn)p%iCMM+PN5=amaN5&jvS(oHEkL6G7}+wN6bKndQ!tzY%i7M(534re#v z*gHLL-B#OKpkm>46ZY9|0QLGx4vo>N;)7IwM2YC9gi``|O&1?f__){#j^p9cZIcI@tEQDwhlx%}uub`T2NnHMNp9 z;7wRMgV!YN{66~ivT{}{^96Tvi+ST1b=ZjTKPsKL=e~`7Wx_)|O4gi98%o{)Ebyy<(2w_C8NoXP>%P&SJ)i zc0A_adOw{$09M!^_Wmk_u8!V6nHYnW#4faw*G}GqYV9l~p5)M+j3zrNz6!3YJWU{d zk9p=%)yTv;lZ9nwjUI2?W9j?NORRnpMyCTMqhLHgdi1G@)zt%VKH??-btN^egb#pc z7Zax#5J3Z#z&g9AY6eQp0`#oLjkp#Rx*PVa+2f4ms2Y-M7+;mX<2;|DeW3YZP8 z?msz$*d9z1ayYZUWjJ26rzsdQP}Y-riw=Sy2!bH^RUYP(i+3)!cg+9*002ovPDHLk FV1mkc)u8|Y literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00005.png b/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1521826bef487d239c6bd6ee69c5fafedb1b64b7 GIT binary patch literal 403 zcmV;E0c`$>P)8k0*i%AvB-o#2qENOncQYxm#jI>C&o7i6D>s= zOh&$nkM{y{qRL9S*Jb}-o@-m+C)2Rb;CF z7za{Q{fA)=JYf~`Bo`Un(B_@K66p9sf7Sqqor2|n!G-m2O}sy+J@^@ltJ17rqnlpd zb|6iE&0OniDlIdd6dybcC0K!i@8)en2d@Ut!I|J^>^eF|ccU$ipAgn`p xd9lA^(&DQTD|<)9IAw^A_Qn%J2qA>LkRL>u^&K!~g4_TA002ovPDHLkV1jeku2}#8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00006.png b/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..33bec1653b75e246918163902616157702af5cdb GIT binary patch literal 408 zcmV;J0cZY+P)s=z5fIE&>c*i1x2lZtmQi_snuVs0xb){aU92aDlbm4V?S$uIK{z4m&MhL z)CMf9*utxCM{R<)#w7V_^AnfaV`F{^hQ!PG8!wX%5Fw@`%mY?o18O!Kg7AR+7H%wd z8x?6b($><(beehz6%VLEEW=EQfN&eObOUHF264#<+>vML2G}75ef7xBw*eq=g;ws$ z`xlp8ODcKirpOEzZ04NRxF$Qbv@AMH2pha@?(OPc;5hL^?wlI;fMXZ`ifoG;e@6Gi z_h2OpqL7m~KV(!5mCM7UC7RmUq2bnED^}Xm<6d+*s8i~%{CM@3Fs^_OeUW0Xny;JM zt#?j>-}XieqQpR~O&1^BBef+)l^o5_-u+R5}KqYLI8ZK6%4Al+~PprUXg)Ad<{N zk)Y1uIt^`gM^VpjYIZ2Hrr~|eE$b_;VkMfG&g=Asi^smi%KC0gg~0hB}tMbNgR0G|9_<=NRjwFEP)HL zTY}~_%V}oKJD5lya>Uh-alnt4AeqPgvfZ8!HQVjbviB)N>PGTc6fTY>Z+T};tTu~9 zcYO_yWxiF#%?oxj6mIvct%`A2dzXX@%jFl<>{Kb7>sD|yW+lOErLe<0lSVGHh%$0*?XRJTo2p5u2a?2;*vv<91H}A=r^S6~4w%C=%R9Wk_Le_4 z%QAM3tI2OxqQIV-Ua>{u+U^ofbfIzWLgpzBsFz^Q)FNkHanI2pX`A582NFuZ2cTB7x!_ zHxgz97)FbU;3P#IukyPrgyU^2${}kqUkv{iaIY+!O}!_0!EWW!UXmn9@}~R(7`Kio TUwB6k00000NkvXXu0mjf;u7u* literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00009.png b/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..9ca8f43b78cd8e4bd600f4fd49360f3004085a79 GIT binary patch literal 515 zcmV+e0{s1nP)Z+ekv1Qk)F+g21sQ4|3@AHTm|lB7s{J|KZ~ z7>M;NO=nrR{05$#Ut*-Vk^V#pl6gM1{r-L!+3#N^?VH|YEF`a@aIr0^aAzte8+R-zw}TC5t+Y1ApA6KVjw1AybSGkTA4wA}{ww#01U=+;Qw zrZUd@oa5_=>Zm@%g}*miz3}|`kDzcibz$;LayBb<%_4N{vVHxllnu`0oL#7Bd{6Q& zRBOR6&*y06VxEV`h}vgU8nqj&7*J@!wS*NY56>nf(&5!w$;Sf;+Y4!4Lod002ovPDHLk FV1hAe?{WYD literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00010.png b/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..2d28f4cc524fb1f60aca0f2fc5a97b7681fca74d GIT binary patch literal 515 zcmV+e0{s1nP)H9DQ=|KC`CMv`?lX+50L%#QPO036Ih7;vdY=EsFn)bX>Cs$^$@z2 zX{fTnYZOxqxs=eqihxncD4{C=#_UYE8Eq*mz(wyidRRij79_1!qhsuYr#=XuxYlR5 z2%=3Sp8=4JuwvH%s+}<%b&AM@IzZn6l;gAmSC4VD-3Ruz&~5b0x7bbGrZUd@oa1Z6 zbW|VWuD=&tz3}|`N3`o~YGBfrj^1^iNw0-?m$_L-%JG)TP_?+aOsiv=&y#!sW zX_ACyeo$LjE~RUzB+|g8i%m_ z%U94AG`8WeGeW08`CzHc*YF-_?1{u!q!vX{6h%?|8BgTNly_iBZs-62002ovPDHLk FV1ju=@5lfE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00011.png b/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..da59064afb4bc24487cbed5288f9d58b7e419df5 GIT binary patch literal 456 zcmV;(0XP1MP)UzG$ZG(qultvzTxXVpj@ZzIfztS3Si)85E^S{) zo57TaPnNJ3@@B+DO@pvXN;D+YYea7clrh_VG6sD}0V`9}K)`n6Amj*%}L z`=G;QNvkrzt7jeC<^q;Epu{4es`~)krKgtU33)E*LeBwg5=+qLkTkk_&crOL)PF=fsYW75jyq1>w!(Tasv zT3@qWaCZQ%&s1vz)sF=1u(&T4PPXCP9bk0k=mzy!d`dFjE~9fmV$Mw9g3At&*teq% y9h;yfP5^jD9QADJG|=I$`)?+~2SE@7fiq9pno|-Uiete0*2g<$o*j48-`?hr^tJ@)Icr8cBJ1BO`Mc!A<~A>8-Y|>UX&fwE-LR zV!vK~H_yjw;AA6M8p;P@@+%pHapz@Z##(`buy3mO#6+{=V1n-RcQ@b$nsbaW`3N@L z05Q#%%sdXc2cCq!g&t46$S4g3>6*ABn9r4sxLaJJ0iBS-(@~z<(#1c|Ws4+{mDn#? zH~I1&cO+?Vm05JJxE93Qz$lVkF-0LDuP*2!M*9<%xX*U)d2iUR z=7r6+*nl48NwRFvl~%2yGzJHQ%UEncpR=h4c=`?*je$xje0De$qs4$8JAG;et-Vcq z0vJ1(!;9M$gW^IaxY-pq#;Iy(v=g5sNs=T*d00022;XEEsC~571ynqJYt7csH z&*~pYI1lId-^)cPDHX;alKCKAkxxJ-ezTS$X-3*q8|Xm63SfeoZ_GD~yHY8AK*0pG z+Cpkj-G`XSw)zJKK*C=)V^%;2&p|5iu}{vjet+!D1}3Js6T?*O4j0^c3NgHAp797LE1jxx>a8#q-f}G4x_|4O~OinaS j*&5560ssI202t;AKCIxd7~{N100000NkvXXu0mjfSAVO4 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00014.png b/tests_zemu/snapshots/s-op-set-options-remove-public-key-signer/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..b211081986086f69ee3ef1f0cefb6f1b1f727402 GIT binary patch literal 650 zcmV;50(Jd~P)?HeN5__2sR77oX%**jq_k2}AO#CEuLIeN+0001hJ3r3*rId*1x-R2X zZ+#xmT-T+D4bHFUX2ohLr4?gIbN@%vXIvf7qYh_%P?wP1ATP`*QWAwKhp|kecW}6+ z)a&#H1!k8z8^~OF6oHI#ZEfq`F3fX7zF)-80hyw0W-j)d@jFUw?q<^Xlr`@Xv@5tu zmFOKO_8Ri+`QelSb@5edLRn)GrE?p?LC$U05+v&~bxzLSaZ2ylm&Yk1y}7*~%SvE{ znKHg*y$@l)@ct+4K(m?w0059^XTYIiD%&q?mOX>&eH$rC{sp^j!O~|VXhy3Rd!%iD zjMD|mS*1nO8(~kP_RIHTkw4aoU@m1XMry?!*-~d?i(=(+nSVvBUCkj~#vD-ky7cJ` z*MZ8&K?kg#KU)s5 zTPLydQtwU%Ef()^*a2>Di}pT{Oz_P6fH}2gO=!OV>#f&gkUnb#4ITjY+ZdWHQ$}5i zOwGK;a>kYgZ#PbGR6!=~RZpOAQ+Pn0@slxyw#t7-||2-wf{Y^kvB`E~}00000fN;Jd2YbC<{kYcJ zPHU~FM{Gm%(T|R}%1_ux(%dPAc$D=^qyr@C^z5_{>48#+?N}tW7CWTmB|97gqO<6QbmFZO+h`<<-BhA zr{2=^q8CAn8On~QH!!*xTi;MH)I2Tzwd_-tp{L6LDP;x^p~W~l^|0D& zcuNsWyY_2a{Qd%f>aB2xGk$rY#y$)D4Wf{L?SyFSpKS*TLsRvWgg|sVwQvb-h zC7b<_;t{Z<=qYfnGJ0olR|1*(KrT|%X+itT#;N%5@>JqoaX$OLiG~UvYyH&{^bsF? zto5^i4>Ca(%4A|>_~0lx=ABmJ*d^Mh_f)%ie%pJ}Q`#bbuAUwu^V7tRx;mDnY`H== zFa)K3;*RoehqM<&%J>^wn`x*tl|iLJwm7Q-?3h-QWTMaY zN1OvzOQD;lxuG%>!Xy3z8o@8Eo?!j*oD|exKDaS!t5U4d`2i~c000000000000000 g0000000904zY1Ynn%XyB2mk;807*qoM6N<$g8j26P5=M^ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..4c13a321f189c331efe71be373f0163daa1924e3 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K-ba4!+nDh2VBHtkep0dYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00010.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00000.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..070462d1faa2378f83038f40456d7e3d3c502e4b GIT binary patch literal 674 zcmV;T0$u%yP)(0YNNJVD$Wk7o&A5pK>yFH)w8VMS@^>t4lX@b)UHjyhpovLL8|N4#_hiF$FCsEg!jBWJa=uJJ%c~7Qa5>1P6d6 zO8V(Plc*c7-BSvuwb=HQcobVO0SsWSeActMrywvS=AZDtL#C{!GywpB2eI~mq(o^K zaM~&b>!a3Wq$qiWH4e4%#2mOE#7GN2qS*q~YQ*psYhkBM|KqWE`OFn%as%+IF?E-2Ic*`CmV2G)jCK3IB5kUHOxmlxftu6?^d;h-`}_aS zJVI?qlJ95&Idol(7;IqRWW*qqL*2WaaPQc2h%eGVO>|;>oA%wD5&#LSKB|RSwZHNH zpd2&t&q6KV%NEatQ-a#<5l&eFH>>Kl%#%4K0BYVh-Y86oJvkDm1i-_#LhMeC4uF5= z_KL6en?*3q_qh+>h5{dXg-HMa000000000000000002N9e?=>5!9~?aAOHXW07*qo IM6N<$f|K4g0RR91 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..f90bd1dfdd31160f415271207026277472cd0f3a GIT binary patch literal 646 zcmV;10(t$3P)Q+Pn0@slxyw#t7-||2-wf{Y^kvB`E~}00000fN;Jd2YbC<{kYcJ zPHU~FM{Gm%(T|R}%1_ux(%dPAc$D=^qyr@C^z5_{>48#+?N}tW7CWTmB|97gqO<6QbmFZO+h`<<-BhA zr{2=^q8CAn8On~QH!!*xTi;MH)I2Tzwd_-tp{L6LDP;x^p~W~l^|0D& zcuNsWyY_2a{Qd%f>aB2xGk$rY#y$)D4Wf{L?SyFSpKS*TLsRvWgg|sVwQvb-h zC7b<_;t{Z<=qYfnGJ0olR|1*(KrT|%X+itT#;N%5@>JqoaX$OLiG~UvYyH&{^bsF? zto5^i4>Ca(%4A|>_~0lx=ABmJ*d^Mh_f)%ie%pJ}Q`#bbuAUwu^V7tRx;mDnY`H== zFa)K3;*RoehqM<&%J>^wn`x*tl|iLJwm7Q-?3h-QWTMaY zN1OvzOQD;lxuG%>!Xy3z8o@8Eo?!j*oD|exKDaS!t5U4d`2i~c000000000000000 g0000000904zY1Ynn%XyB2mk;807*qoM6N<$g8j26P5=M^ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00010.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00000.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..745c081fa17b382265e1bb7302b23a708e7720c4 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_u9>EaktG3V{f$Vn{1}I&GVLf+1!0)`P*{_qKh=<2hD*!bVta*#cp&*LpuY&w1oNY|i!*I=#d0Aq)Eg zuPH^=b!vv@_sYC=W3DCL3^HDHgHw2c^V3sX=gqC=YSJ@|KlGn(?xwIzCWa3wm#iC; zq_;no-F-J*e!?>G$9rb+rz~T42xeWp$}#VK`lNTqr-;R!d>Iz)dv~5$@}8c=u-&)v zpL$yFtgQX&@OI(Zi_DQ5nD{Ol+>6nO>yn>y?)ra=-PH_!;a^H@U(M4@_0>G29dll8 z<87VQCO0fvs#taAXjbK$)C=^T{&*zp#CZ?@s0Geem)7ZU&9ggk{=upD4PFmc*A$-D z`DyUxPua&i`E#W9w;VP6Q4|v{+|2#LVy1)->vvEbVgR4V{GlHYE^<@qRt3p2pw8!2B^&al=JWnnw?Z@2>;sO5d2$OLgy57+lV8{F5zH-hH}tjgKa>LQ>7r*C;*&2l$vyMqi~ zNKDO}mN>uKSMDTX7xaBenYo)vc2B~9VQM_GPT!j%ilQi9fc^}SH9~o!u}TZmk6c_W zOQ@wsfB8siQ(F#WQAdXb<)g(KtlD^jddjyN3_H%@8rQj0*=ZHXBM7wNJFD&KPGIM4 zZbRvu<*Xt+wavc)j}z239@iz8qZ65)vD3Brd&Frr4Uk)!w!nvkC#fv-BoilB3@#<&UU_Jg>a0Vo6!d8D+_%Pq1yy_G(D2DQW>_4cT3Q11u*j0s8PL{0CKTi7JiX(f)f!>U9&7;D(2Rtxc1O+B zA`jQ53SuMU#W+>9Rf2E!P(jtcea*#LweFbsMJ1_V00QnL(rq9Q5oIf7N z;SAfY@vI`%K3!vsF+JOgrq`H9nD9IOWZtq<`s|50!IS;sbCKnuidLDryxnK|Nm2JT z&ha9Sqr6!7jx1$L)qm2bqdq%Zzpop%mTLx_^!`tcR_1Izlk$K{ue2WFAp!ZreY&~(j--H##xY#mDAG$sOz%yL92Xqxj*y5{PahDLJ zFW&l9Qc+zU+HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00000.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2379be741b72f97b1075b0f37068e48ca58bb6bf GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_uB>EaktG3V{f*hz;KI2txv z@AZ6NukwBq|2YFajjTuU%kO`mvdoD=kawpZP!mJL(?2{Hg`6h5{{Gw6<$3Xx(2vh8 zpY^J=2;80A{dP`r=lSe!%x@lXC@%S_!K`9_Rd(vmm*>|_4HpvmcxA&HTUGH_ff}EG zyX@$ivEoi2-xBdKmFl^Fw~Ji9tK{?dhp9Cpg#4rZb2<)YtuNKbToI%%OQ zZ|t{}`9>+$l9r4Y(_eqMQhPoyZf^58DWmhPovJU|E{3Vx+bDW6{N9ddOEzq|Z9M0o z@B*%-e{$?6r9pKnnl%Mi^Uekh8Gt3|MAD*@*b{YdiPRc1c zgO!K)Uhe$1Pr|-(;=MB;HqW)PzIQEPYVE%TWy{K)m9_dq?tlC>|Ke3~jir{dcT`vN zc&|OR&CfnZbH$yFy=!w8S^m|p-=jbKp1$gi^_K&Gx43FA;68qS+PfxY?b;>9TE9Dm zADCP0PVtugR2*T>7`^Y*G^xkW&$P^IIGTNV+LSl$2i;^MpN2=Z&hgJY>>SAX{>>hZ z+|%){7hkhJOkh%yJTCrZU;UatW@cv?IjmO;gfyLz@oD`4ibo9K^O#?H|6b>BpB3^! Na-Ob!F6*2UngD#!>P-Lu literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..a443dd67f64a148e37a7331d63dc0a6e750ae841 GIT binary patch literal 964 zcmV;#13UbQP)l%!iLilQirq9}^n`3lOP=Q*yA zLdzq+c8fAZ6rlM3|#_ z+38DUER^KdS&0|1`*33tu zs)2t67`<68ZTD>A&qfXRv=v2i9|ryb=#y)?5j;O&RmPT@35OD#zWIGI%iXZ;b}~gF zF*OH0G5#s8+(^PM=;x9$bAw8vCt<)eH6B@~?@bX!Q4}v={R|LOxt8B~aS{KVbn;`T zScbHhlDIap<FGoIkO*8uzUL&3oT` z;ewHQXOR_M6}J_143?U&8USrC(Kh`PxoVk*apaJHj%f`NcI=+UfzQm zJI#vPmKrSg#h*(-+&iq+*pU!C#Mlz|W=k9hS`=zwax1a-0yqpXRYN1k&c)H=VxF~b z;o4eIy#K~kteuv*b?t*+pR2yc0I?FVt6^N@!LYxFu(Y&9Hs#aU%d4UBG4L@S zu;VAL{3O;^w=g{ef=}~D-jN-I_To>2)+<2!29(Bh**&}t#CPSG-S#O=MtMve9m(hZ z$zJ?NJTVkSQ4~cXWBUI9x`X7q$rJwTFF(pIzZS)JCPC33;Kt-F^?B+7_l1;$5?oJr_@+oKOip*O2++f=^TsKqO@}Pt=lzS)`wN^~Tsr`CF&YDhMRud#+Z$^k z=Lbv6ENzQY#ON@sC5-DxfJDtcfIrv)s-Yj*5D2k#eilQiryZHwenWf@QA@TkI00001=(S+?wue~-ir80r1$ch$>P6utm48d?Ddd;D{wjWt`Yq%xopS?m2WNEyv2-}jWx z1BMsD&;W?@_pGwJ#YJQEQ9D#(kh6`k7tP%F+-M5QD_wgR^*8s_Bb9l~2%;4e^^_bL zT~T}mbT-9(Er+L4`(o6bnzQW?x@AVh2jG}o?nW@Z*`Yd1YE=Y+Xz!bRdmBVdbPIOg z5mhe?rsjz)>HOD}_&p}1>%j6~Q9GI5UqHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00000.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..73ca7a6a8ad580834a62e0b4fb28e69407fcb647 GIT binary patch literal 527 zcmV+q0`UEbP) z3S(aH44xt;Hf|pd)Qx_K+E#lKBBYS!moI$XO+yUxR-OkwBOZE|QDwh>H z(s0Tib(WCFNn`>JpL>T>pL>S#X%74~B+rG!5_G}ne#mjBuSm9X=bn?o;< zQZD^x67|7rOZLiTFV>Ph9>XrU027)}em1hXry!UT^Cr9;eaZTiB>({bf%2COwNpvs z=BeQeA2-8I_s8YJw;)yW=IAFLLmN-ztAM(qPi>u1RtzP6vHoM62&*1Fi;;=y`m%dH z@)tCZqNb+gf}XRa{||6t_#<7}r*-)y;500RrzF7ssClOuO%AeW&rQIJe`3{r(DZI` z9<>QD=8mE-De8|vrxIIpk7q8)!3D!?CgIJfcMF^xPV%M;&G1*2!-vg*-7@lr0k_1GS{*NjtHok8osBSAAzV4bCO$1k|arzBuSEN=gZmtzVG_` zx~^yQx-O^Lp~uHX^=|ff-*?-V#*f`~%?*5e8rR?+>Ti!t1D@Uoo1J}jBtR=Ae>{yT zQj`x*iqu3Yzo$}rTKP;akW$iYZGBM}(rB^$NTUkJl>rZU3e>nk+P0b08U&U>t!T%u z?#H#ISaVmJYI=~epW|-RM*+lP+66R^kHi^9%*azU5T*HOn{Q;X&o+-I77{TS6?q{pqhGn;r zt``DJvojLqA-{1Y0jr>Ymynt3G~#^{26R*7NS?m8L?lU)ynw+yfUV7Vco{t=D*hrO>Cll`)DXHBsySxJt;NwNx^WYEbu21}vcJ61!n z+{o_7YUNNpo$|;wq?_0{PZxj#6miQRO&(M_r@)tB zd$u>UZCNPBNr#+BSIgGrS@mLnBCZnSs`!NgQxcpnc~qV$F{>a|Ig53zw5A$>Zg%J= zOSmYe>{EKC@)BYL))4$cW@^&0J%UBh&JpM@a}88RB4L}UNs=T za)xc@7_&&ZPv;myNY84~>>Oo;3BS`%%92It+7okvr}ne!td_GZv@~Vxtw25;kQ0;+8@B(D?xXo?+t}AXV3c?AuKq9*o}4 zf@`N8GWXF^eX!15pmqc_df$Ji=P+uOo427uM+L{EZ_ERIfAMkjDmz-G`O$uh(+yB= z%&SwjcFJ#uEuSrKK5f9AZh%d5&e~3`E&Dq>;wa*oE5RB02-wl)J@q@0rsoK{d{F*} zuDK1ZPLCdqXkXh6PrkUC*Vop5baNYgdF`J^8{COm=uVAFrVX~DdI10c0000000000 f00000fNlN(xqi+sP<$m*00000NkvXXu0mjfVB7ta literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00010.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00000.png b/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00001.png b/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00003.png b/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00007.png b/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..b211081986086f69ee3ef1f0cefb6f1b1f727402 GIT binary patch literal 650 zcmV;50(Jd~P)?HeN5__2sR77oX%**jq_k2}AO#CEuLIeN+0001hJ3r3*rId*1x-R2X zZ+#xmT-T+D4bHFUX2ohLr4?gIbN@%vXIvf7qYh_%P?wP1ATP`*QWAwKhp|kecW}6+ z)a&#H1!k8z8^~OF6oHI#ZEfq`F3fX7zF)-80hyw0W-j)d@jFUw?q<^Xlr`@Xv@5tu zmFOKO_8Ri+`QelSb@5edLRn)GrE?p?LC$U05+v&~bxzLSaZ2ylm&Yk1y}7*~%SvE{ znKHg*y$@l)@ct+4K(m?w0059^XTYIiD%&q?mOX>&eH$rC{sp^j!O~|VXhy3Rd!%iD zjMD|mS*1nO8(~kP_RIHTkw4aoU@m1XMry?!*-~d?i(=(+nSVvBUCkj~#vD-ky7cJ` z*MZ8&K?kg#KU)s5 zTPLydQtwU%Ef()^*a2>Di}pT{Oz_P6fH}2gO=!OV>#f&gkUnb#4ITjY+ZdWHQ$}5i zOwGK;a>kYgZ#PbGR6!=~RZpOAQ+Pn0@slxyw#t7-||2-wf{Y^kvB`E~}00000fN;Jd2YbC<{kYcJ zPHU~FM{Gm%(T|R}%1_ux(%dPAc$D=^qyr@C^z5_{>48#+?N}tW7CWTmB|97gqO<6QbmFZO+h`<<-BhA zr{2=^q8CAn8On~QH!!*xTi;MH)I2Tzwd_-tp{L6LDP;x^p~W~l^|0D& zcuNsWyY_2a{Qd%f>aB2xGk$rY#y$)D4Wf{L?SyFSpKS*TLsRvWgg|sVwQvb-h zC7b<_;t{Z<=qYfnGJ0olR|1*(KrT|%X+itT#;N%5@>JqoaX$OLiG~UvYyH&{^bsF? zto5^i4>Ca(%4A|>_~0lx=ABmJ*d^Mh_f)%ie%pJ}Q`#bbuAUwu^V7tRx;mDnY`H== zFa)K3;*RoehqM<&%J>^wn`x*tl|iLJwm7Q-?3h-QWTMaY zN1OvzOQD;lxuG%>!Xy3z8o@8Eo?!j*oD|exKDaS!t5U4d`2i~c000000000000000 g0000000904zY1Ynn%XyB2mk;807*qoM6N<$g8j26P5=M^ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00009.png b/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..4c13a321f189c331efe71be373f0163daa1924e3 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K-ba4!+nDh2VBHtkep0dYF=rLqs7&G}j$SsCH~fH^m-s`iCXcJ8gv(Bpn$?cJgmB-?^M-|E_J zy?yVAf<5_PW%Q15y~w+*{V}NFlFY4|cHN|^^H!NUuWhy|gTe~DWM4f^w^9) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00010.png b/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00011.png b/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00012.png b/tests_zemu/snapshots/x-op-set-options-add-ed25519-signer-payload-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00000.png b/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00001.png b/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00003.png b/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00007.png b/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..070462d1faa2378f83038f40456d7e3d3c502e4b GIT binary patch literal 674 zcmV;T0$u%yP)(0YNNJVD$Wk7o&A5pK>yFH)w8VMS@^>t4lX@b)UHjyhpovLL8|N4#_hiF$FCsEg!jBWJa=uJJ%c~7Qa5>1P6d6 zO8V(Plc*c7-BSvuwb=HQcobVO0SsWSeActMrywvS=AZDtL#C{!GywpB2eI~mq(o^K zaM~&b>!a3Wq$qiWH4e4%#2mOE#7GN2qS*q~YQ*psYhkBM|KqWE`OFn%as%+IF?E-2Ic*`CmV2G)jCK3IB5kUHOxmlxftu6?^d;h-`}_aS zJVI?qlJ95&Idol(7;IqRWW*qqL*2WaaPQc2h%eGVO>|;>oA%wD5&#LSKB|RSwZHNH zpd2&t&q6KV%NEatQ-a#<5l&eFH>>Kl%#%4K0BYVh-Y86oJvkDm1i-_#LhMeC4uF5= z_KL6en?*3q_qh+>h5{dXg-HMa000000000000000002N9e?=>5!9~?aAOHXW07*qo IM6N<$f|K4g0RR91 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00008.png b/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..f90bd1dfdd31160f415271207026277472cd0f3a GIT binary patch literal 646 zcmV;10(t$3P)Q+Pn0@slxyw#t7-||2-wf{Y^kvB`E~}00000fN;Jd2YbC<{kYcJ zPHU~FM{Gm%(T|R}%1_ux(%dPAc$D=^qyr@C^z5_{>48#+?N}tW7CWTmB|97gqO<6QbmFZO+h`<<-BhA zr{2=^q8CAn8On~QH!!*xTi;MH)I2Tzwd_-tp{L6LDP;x^p~W~l^|0D& zcuNsWyY_2a{Qd%f>aB2xGk$rY#y$)D4Wf{L?SyFSpKS*TLsRvWgg|sVwQvb-h zC7b<_;t{Z<=qYfnGJ0olR|1*(KrT|%X+itT#;N%5@>JqoaX$OLiG~UvYyH&{^bsF? zto5^i4>Ca(%4A|>_~0lx=ABmJ*d^Mh_f)%ie%pJ}Q`#bbuAUwu^V7tRx;mDnY`H== zFa)K3;*RoehqM<&%J>^wn`x*tl|iLJwm7Q-?3h-QWTMaY zN1OvzOQD;lxuG%>!Xy3z8o@8Eo?!j*oD|exKDaS!t5U4d`2i~c000000000000000 g0000000904zY1Ynn%XyB2mk;807*qoM6N<$g8j26P5=M^ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00009.png b/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00010.png b/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00011.png b/tests_zemu/snapshots/x-op-set-options-remove-ed25519-signer-payload-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00000.png b/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00001.png b/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00003.png b/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00007.png b/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..745c081fa17b382265e1bb7302b23a708e7720c4 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_u9>EaktG3V{f$Vn{1}I&GVLf+1!0)`P*{_qKh=<2hD*!bVta*#cp&*LpuY&w1oNY|i!*I=#d0Aq)Eg zuPH^=b!vv@_sYC=W3DCL3^HDHgHw2c^V3sX=gqC=YSJ@|KlGn(?xwIzCWa3wm#iC; zq_;no-F-J*e!?>G$9rb+rz~T42xeWp$}#VK`lNTqr-;R!d>Iz)dv~5$@}8c=u-&)v zpL$yFtgQX&@OI(Zi_DQ5nD{Ol+>6nO>yn>y?)ra=-PH_!;a^H@U(M4@_0>G29dll8 z<87VQCO0fvs#taAXjbK$)C=^T{&*zp#CZ?@s0Geem)7ZU&9ggk{=upD4PFmc*A$-D z`DyUxPua&i`E#W9w;VP6Q4|v{+|2#LVy1)->vvEbVgR4V{GlHYE^<@qRt3p2pw8!2B^&al=JWnnw?Z@2>;sO5d2$OLgy57+lV8{F5zH-hH}tjgKa>LQ>7r*C;*&2l$vyMqi~ zNKDO}mN>uKSMDTX7xaBenYo)vc2B~9VQM_GPT!j%ilQi9fc^}SH9~o!u}TZmk6c_W zOQ@wsfB8siQ(F#WQAdXb<)g(KtlD^jddjyN3_H%@8rQj0*=ZHXBM7wNJFD&KPGIM4 zZbRvu<*Xt+wavc)j}z239@iz8qZ65)vD3Brd&Frr4Uk)!w!nvkC#fv-BoilB3@#<&UU_Jg>a0Vo6!d8D+_%Pq1yy_G(D2DQW>_4cT3Q11u*j0s8PL{0CKTi7JiX(f)f!>U9&7;D(2Rtxc1O+B zA`jQ53SuMU#W+>9Rf2E!P(jtcea*#LweFbsMJ1_V00QnL(rq9Q5oIf7N z;SAfY@vI`%K3!vsF+JOgrq`H9nD9IOWZtq<`s|50!IS;sbCKnuidLDryxnK|Nm2JT z&ha9Sqr6!7jx1$L)qm2bqdq%Zzpop%mTLx_^!`tcR_1Izlk$K{ue2WFAp!ZreY&~(j--H##xY#mDAG$sOz%yL92Xqxj*y5{PahDLJ zFW&l9Qc+zU+HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00011.png b/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00012.png b/tests_zemu/snapshots/x-op-set-options-remove-hash-x-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00000.png b/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00007.png b/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2379be741b72f97b1075b0f37068e48ca58bb6bf GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_uB>EaktG3V{f*hz;KI2txv z@AZ6NukwBq|2YFajjTuU%kO`mvdoD=kawpZP!mJL(?2{Hg`6h5{{Gw6<$3Xx(2vh8 zpY^J=2;80A{dP`r=lSe!%x@lXC@%S_!K`9_Rd(vmm*>|_4HpvmcxA&HTUGH_ff}EG zyX@$ivEoi2-xBdKmFl^Fw~Ji9tK{?dhp9Cpg#4rZb2<)YtuNKbToI%%OQ zZ|t{}`9>+$l9r4Y(_eqMQhPoyZf^58DWmhPovJU|E{3Vx+bDW6{N9ddOEzq|Z9M0o z@B*%-e{$?6r9pKnnl%Mi^Uekh8Gt3|MAD*@*b{YdiPRc1c zgO!K)Uhe$1Pr|-(;=MB;HqW)PzIQEPYVE%TWy{K)m9_dq?tlC>|Ke3~jir{dcT`vN zc&|OR&CfnZbH$yFy=!w8S^m|p-=jbKp1$gi^_K&Gx43FA;68qS+PfxY?b;>9TE9Dm zADCP0PVtugR2*T>7`^Y*G^xkW&$P^IIGTNV+LSl$2i;^MpN2=Z&hgJY>>SAX{>>hZ z+|%){7hkhJOkh%yJTCrZU;UatW@cv?IjmO;gfyLz@oD`4ibo9K^O#?H|6b>BpB3^! Na-Ob!F6*2UngD#!>P-Lu literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..a443dd67f64a148e37a7331d63dc0a6e750ae841 GIT binary patch literal 964 zcmV;#13UbQP)l%!iLilQirq9}^n`3lOP=Q*yA zLdzq+c8fAZ6rlM3|#_ z+38DUER^KdS&0|1`*33tu zs)2t67`<68ZTD>A&qfXRv=v2i9|ryb=#y)?5j;O&RmPT@35OD#zWIGI%iXZ;b}~gF zF*OH0G5#s8+(^PM=;x9$bAw8vCt<)eH6B@~?@bX!Q4}v={R|LOxt8B~aS{KVbn;`T zScbHhlDIap<FGoIkO*8uzUL&3oT` z;ewHQXOR_M6}J_143?U&8USrC(Kh`PxoVk*apaJHj%f`NcI=+UfzQm zJI#vPmKrSg#h*(-+&iq+*pU!C#Mlz|W=k9hS`=zwax1a-0yqpXRYN1k&c)H=VxF~b z;o4eIy#K~kteuv*b?t*+pR2yc0I?FVt6^N@!LYxFu(Y&9Hs#aU%d4UBG4L@S zu;VAL{3O;^w=g{ef=}~D-jN-I_To>2)+<2!29(Bh**&}t#CPSG-S#O=MtMve9m(hZ z$zJ?NJTVkSQ4~cXWBUI9x`X7q$rJwTFF(pIzZS)JCPC33;Kt-F^?B+7_l1;$5?oJr_@+oKOip*O2++f=^TsKqO@}Pt=lzS)`wN^~Tsr`CF&YDhMRud#+Z$^k z=Lbv6ENzQY#ON@sC5-DxfJDtcfIrv)s-Yj*5D2k#eilQiryZHwenWf@QA@TkI00001=(S+?wue~-ir80r1$ch$>P6utm48d?Ddd;D{wjWt`Yq%xopS?m2WNEyv2-}jWx z1BMsD&;W?@_pGwJ#YJQEQ9D#(kh6`k7tP%F+-M5QD_wgR^*8s_Bb9l~2%;4e^^_bL zT~T}mbT-9(Er+L4`(o6bnzQW?x@AVh2jG}o?nW@Z*`Yd1YE=Y+Xz!bRdmBVdbPIOg z5mhe?rsjz)>HOD}_&p}1>%j6~Q9GI5UqHdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00011.png b/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00012.png b/tests_zemu/snapshots/x-op-set-options-remove-pre-auth-tx-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00000.png b/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..df51419d9880ff10f1f24cebe779f11ff7ce27e0 GIT binary patch literal 419 zcmV;U0bKrxP)D$(iko|UTF@u&Yag{)@)mN`1iGamjW z?-@|#I%DcL`R;-Wx1m8iV&w2DI!Y>*e7y)ffN(0IS^hR>UWBs}p1R_IuO&=RwhCUX{fYF*|8$ z-}7I$&Jfhf0$I4MAmWJn3INi&qfcFT$NR000000000U?jMqbF~2?)b|e4* N002ovPDHLkV1ho3w>JO) literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00001.png b/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0b599bce0942cb7043eeb34d4e43b072adcc2bc5 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{#ba4!+nDh2#VBTQ`o`yuT zw`zC(d)!IoUvYvvKt@P<+Q0kGt+xV#CtI|(0Ch3!`2C4iRAaP-36_#Q=c;))R_rE>qV9|y*rnQo?PAA@dolvvv;q5QCzn)q@ zRXxArY-7%qSf|y`GMuiQ)SWMPt8Cj0hM9T3TF%;!-&=okiqQ$XzH{1whoSE$G~Io7 zjC)-}^rw4kx^f)z0i+;eLc~omcu&QW?Ey29T1G2M4dCi{H5 xYZB!9ZLT4^c3^9ml*&v?1J^1>Q1~DL9$(+?EXJ5Nqd2-7hmu>NSxpOZ*sPSJfe^04?iGN&f(A_sKE}yUJPb=Nk ztmhQNsC+kO+D`jd?RCpm1x$OzSM@R9Ve5=7#^!S;hTL5Bc>6D5*T|-A?tg-lcL}?YeCz3?qoM+5T({Rf z4*0ywH{E*C?4?0b`4f81UMh^wx|jZ3`i4QurTNQ*O<(%E@!M?Vs(fVkrn7<(Xgv~W bIK78)ORE2$D`yThgM>X@{an^LB{Ts5L7uJO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00003.png b/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7329ee7dc5fa72c8907b6788382f1df1ffa187 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`(m>EaktG3V{f=%T|4Jg#^B z${+pJ*Q|coo-V<5vVeEe+%3;*ELkpar%c$+3)IE%pll!0^QygZPb=?#KQJ>{vr5iO z&VGK-5B01?>1Th$9AbKq^xfs|rkSQUTrSGS?c%LA(_L3}Hh!Jj)`0L|T=!oGU%8Sd z-doy#W96F6y<8IMeUv5d}Ej73Ox>4_8 z=Ret*#b@s;{}5pbR|LBH|MWuBD`7X!X_<(J#YE?*%_PU0|$JyySS4`DV(!a4Y{s>p4na^{j ziEq|kV{?dHez7zm{R00000Z0AGNo#$CfIgY~| zKTrmPm7Z}Uj%6v%^K5;t$HqM)Fe53izD6An$p*+hRYRQqXWTC8)>F@uR1Ss`(B|J2 z7>`Gms6Ts_uOn68tJZhmb7b=IOA&&rRBo@t+N-+`7O!bs$9twyj_HWesHj)KPc@lB z)0YvIb(OZ*b;~ACSIvV}tXs4$}Ae;;)>v~>0$l|7ku zR%>>VK6ohXZJCYOU$IT=(7xHb`vJEjbujpAL?631%f9Zs%ceKs9uM}b#}{pDKUKMN z%lyR&*pJ(JQlXsNUeXCrzBafemhyYGK1<4eN}Nl;l<42StPkpA<<+3rsn6P)Nkl3_wvjm78$?BXO53sL%unkTHWh_1`L?45kGZgL41?0Kj&y&F>2#6eZsKOSLS| zqa%bMM`FsuALsjY2i~*Wd!PSpua%diMq+sgL6)ROY9%{;ZGN95f3q5eJWREKs?>^6 zQDSLry7L3z{)VzK9`OMgqi)na)HX1Vhz$RdSrQJ4-c?2q^Y8Y#uHYchs!xZ+ah z2cVr&;@mHm+(ycZt8VRGsbXqVmH+?%V1x17&|=f3?&9-9Y`!~8|JE8&A9jX&8?~<7 zu&O5y^)2pqE8Ok>)>B1o%UnA~wU1ZEe~nvp`BGU?ZK~E=`TW3jNX_|!*d>-(mdF}QES04(}8hZQqDm8+|9 zQ6+!)>g&dQ*cz~6q%TEq`fMw|0Ap_&{b+o=viuVDW>jYOfs7${qTOx`^xt*E`>0Iv zUsZ!l^tVw$P4qWo3{D~oozw|3W3UwA1poj5000000000000000miYnkQGYk7Wp#!C O0000oGek z9ji+Tg^{3kDqX6BoKRGi3Unm~&1km7ChkAj`_kDyB@4q5ON?jHX)R zcVXD~mBKw#`%2%;D_e@F3?)cOH)Ee3uDnD^JIuq7pE zO>cH#z`OyFoC{RDohLNuRCRZaarhEcn5)MvVVf!a{FkeUE?gaea;uh?3UkGD@;d>0 z(zn0UC1Q-vc3~B(x9{NC;0axrw*?O!NZ&`{wBbrbhU&6MtyVJw;44815A&<9e4@Pw$<-CTP&rCl^&+%k4+nC1X zU2{ctJg&i;)82-~Fq literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00007.png b/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..73ca7a6a8ad580834a62e0b4fb28e69407fcb647 GIT binary patch literal 527 zcmV+q0`UEbP) z3S(aH44xt;Hf|pd)Qx_K+E#lKBBYS!moI$XO+yUxR-OkwBOZE|QDwh>H z(s0Tib(WCFNn`>JpL>T>pL>S#X%74~B+rG!5_G}ne#mjBuSm9X=bn?o;< zQZD^x67|7rOZLiTFV>Ph9>XrU027)}em1hXry!UT^Cr9;eaZTiB>({bf%2COwNpvs z=BeQeA2-8I_s8YJw;)yW=IAFLLmN-ztAM(qPi>u1RtzP6vHoM62&*1Fi;;=y`m%dH z@)tCZqNb+gf}XRa{||6t_#<7}r*-)y;500RrzF7ssClOuO%AeW&rQIJe`3{r(DZI` z9<>QD=8mE-De8|vrxIIpk7q8)!3D!?CgIJfcMF^xPV%M;&G1*2!-vg*-7@lr0k_1GS{*NjtHok8osBSAAzV4bCO$1k|arzBuSEN=gZmtzVG_` zx~^yQx-O^Lp~uHX^=|ff-*?-V#*f`~%?*5e8rR?+>Ti!t1D@Uoo1J}jBtR=Ae>{yT zQj`x*iqu3Yzo$}rTKP;akW$iYZGBM}(rB^$NTUkJl>rZU3e>nk+P0b08U&U>t!T%u z?#H#ISaVmJYI=~epW|-RM*+lP+66R^kHi^9%*azU5T*HOn{Q;X&o+-I77{TS6?q{pqhGn;r zt``DJvojLqA-{1Y0jr>Ymynt3G~#^{26R*7NS?m8L?lU)ynw+yfUV7Vco{t=D*hrO>Cll`)DXHBsySxJt;NwNx^WYEbu21}vcJ61!n z+{o_7YUNNpo$|;wq?_0{PZxj#6miQRO&(M_r@)tB zd$u>UZCNPBNr#+BSIgGrS@mLnBCZnSs`!NgQxcpnc~qV$F{>a|Ig53zw5A$>Zg%J= zOSmYe>{EKC@)BYL))4$cW@^&0J%UBh&JpM@a}88RB4L}UNs=T za)xc@7_&&ZPv;myNY84~>>Oo;3BS`%%92It+7okvr}ne!td_GZv@~Vxtw25;kQ0;+8@B(D?xXo?+t}AXV3c?AuKq9*o}4 zf@`N8GWXF^eX!15pmqc_df$Ji=P+uOo427uM+L{EZ_ERIfAMkjDmz-G`O$uh(+yB= z%&SwjcFJ#uEuSrKK5f9AZh%d5&e~3`E&Dq>;wa*oE5RB02-wl)J@q@0rsoK{d{F*} zuDK1ZPLCdqXkXh6PrkUC*Vop5baNYgdF`J^8{COm=uVAFrVX~DdI10c0000000000 f00000fNlN(xqi+sP<$m*00000NkvXXu0mjfVB7ta literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00010.png b/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..746f94e121ac137bd28baedf8be1bd2671ccf6c1 GIT binary patch literal 469 zcmV;`0V@89P)HdjNkrRz_$ND*F;^ZTR5}b&2R`*Yf&a)>EVM&5PAzQsHZF=!ue+ zs||GA1O&MS;mdW5s!{XtEi~M+%N?`@RfX_P3e%Q@{oEB0heJnP2dgoB-3=!>C=D$i z!pTE2cLMaSd8yoJb^VSHAvtfB1+_e7{(%+G?2xW! zyrvxbEok_yiWlRt(Y!O+113Q4u=kZe1kIp#c|90?7~D5t0w%4^ZsJJ~<;l}nG>I!; z?XJ(8odGju`cedkKW%aaG>)b)j>6*A<(GuhHNJ@6**kU&orzY5(J_8g4ewDq$x~&6 zO!SvYgqr9t#vJU#F0@l6$jrf1gckq+0000000000000000GQ?%fcAMh_t?kQ00000 LNkvXXu0mjf)sfWs literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00011.png b/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..62b55891f51032ff3116c5d4ed0e9828b7d9560c GIT binary patch literal 451 zcmV;!0X+VRP);Jv!VoeiDOI8s800000006ik=bUr4j^c!0 z>j2&Ervxj&Y=sG$eF;~9qN_pN>`S-;)D+jGht9r;{8$HYg^_+#^2#005?Vu=}Vd>9x&%esm!o-Jfu18k>30uLod$3Y*$EkNTFw z4SkKOjac{NM0F#|2fKQ7hcZ0h5?ddD`Sj5N440IhVY7a{7wXTMr6P;dW=_tNR@+tCj11g|i^raL;AV>m8~_1y2CWm8J+o!M1k z0002K&3(TM8g^!G=51SG;Qmg4dGBG(cq7(si*zGs-2~lil-8GBqebt?PIaQ9n)NA% zZw{NFvl;!g6?*E(w_P`mS`qu_Je6VMQD~7KE?9>173d+$EBzx=0 t`sOK*wP|nE?Nvfs6aWAK0002^I)7p2BQ)mMC$azl002ovPDHLkV1hc>)gk}@ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00012.png b/tests_zemu/snapshots/x-op-set-options-remove-public-key-signer/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..96627275e9fd531cf2a8a78050d5c0d573dddb7e GIT binary patch literal 473 zcmV;~0Ve*5P)aC3!FX2xMG4c08dOzen%+g1|7UWSK;y5dZ)H008_aU#kPSF6X>I zPAM&nM_+q~zTy=w4S9l#Z3_RG|-jOi+;4k*`q zxzgLz8#RGt2Sl?49UigZSAbsX!!Y~dSb$#YjkcYV(|160PJ5#BwQRw!1KJJ8bobww zbwF?-rhrj|gwGhp0RZq~dN%FiB)vM>&o7g2t{y1s2B{N$8_75}uL8vHI3N2V*;DB) z+;-*@{nP)!m|Ee_tbWgU(pf(3=2Jdx*ZZIYG@Ij~1EN=!6;4N+r`eQBcjY9>QlTHN z-_8Ivr4&S(}4-wHLVp>|4sX2JNe+cZk;0 zP!Z+C?ax0}YWJ7xfSF0>;Xt%1*i9wGyVR;8x&`3_&EIGQ000000PgYw{4GReVQ(vW P00000NkvXXu0mjfwaeE+ literal 0 HcmV?d00001 From 5b7514e33afced6830c94e325b5504493efd4aef Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Thu, 25 Aug 2022 16:15:55 +0800 Subject: [PATCH 4/5] refactor: added some missing naming changes --- src/transaction/transaction_parser.c | 14 ++++++++------ src/transaction/transaction_types.h | 8 ++++---- src/utils.c | 6 +++--- src/utils.h | 2 +- tests_unit/test_utils.c | 2 +- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/transaction/transaction_parser.c b/src/transaction/transaction_parser.c index 7a89e8a7..f9abe7d8 100644 --- a/src/transaction/transaction_parser.c +++ b/src/transaction/transaction_parser.c @@ -292,8 +292,10 @@ bool parse_memo(buffer_t *buffer, memo_t *memo) { return buffer_read64(buffer, &memo->id); case MEMO_TEXT: { size_t size; - PARSER_CHECK( - parse_binary_string_ptr(buffer, (const uint8_t **) &memo->text.text, &size, 28)) + PARSER_CHECK(parse_binary_string_ptr(buffer, + (const uint8_t **) &memo->text.text, + &size, + MEMO_TEXT_MAX_SIZE)) memo->text.text_size = size; return true; } @@ -682,15 +684,15 @@ bool parse_create_claimable_balance(buffer_t *buffer, create_claimable_balance_o } return true; } -bool parse_claimable_balance_id(buffer_t *buffer, claimable_balance_id *claimable_balance_id) { +bool parse_claimable_balance_id(buffer_t *buffer, claimable_balance_id_t *claimable_balance_id_t) { uint32_t claimable_balance_id_type; PARSER_CHECK(buffer_read32(buffer, &claimable_balance_id_type)) - claimable_balance_id->type = claimable_balance_id_type; + claimable_balance_id_t->type = claimable_balance_id_type; - switch (claimable_balance_id->type) { + switch (claimable_balance_id_t->type) { case CLAIMABLE_BALANCE_ID_TYPE_V0: PARSER_CHECK(buffer_can_read(buffer, CLAIMABLE_BALANCE_ID_SIZE)) - claimable_balance_id->v0 = buffer->ptr + buffer->offset; + claimable_balance_id_t->v0 = buffer->ptr + buffer->offset; PARSER_CHECK(buffer_advance(buffer, CLAIMABLE_BALANCE_ID_SIZE)) return true; default: diff --git a/src/transaction/transaction_types.h b/src/transaction/transaction_types.h index bc8fc1eb..303a9ee3 100644 --- a/src/transaction/transaction_types.h +++ b/src/transaction/transaction_types.h @@ -365,10 +365,10 @@ typedef enum { typedef struct { claimable_balance_id_type_t type; const uint8_t *v0; -} claimable_balance_id; +} claimable_balance_id_t; typedef struct { - claimable_balance_id balance_id; + claimable_balance_id_t balance_id; } claim_claimable_balance_op_t; typedef struct { @@ -408,7 +408,7 @@ typedef struct { } data; // type == DATA struct { - claimable_balance_id balance_id; + claimable_balance_id_t balance_id; } claimable_balance; // type == CLAIMABLE_BALANCE struct { @@ -442,7 +442,7 @@ typedef struct { } clawback_op_t; typedef struct { - claimable_balance_id balance_id; + claimable_balance_id_t balance_id; } clawback_claimable_balance_op_t; typedef struct { diff --git a/src/utils.c b/src/utils.c index 22e80d65..6825009b 100644 --- a/src/utils.c +++ b/src/utils.c @@ -284,7 +284,7 @@ bool print_muxed_account(const muxed_account_t *muxed_account, return encode_muxed_account(muxed_account, out, out_len); } -bool print_claimable_balance_id(const claimable_balance_id *claimable_balance_id, +bool print_claimable_balance_id(const claimable_balance_id_t *claimable_balance_id_t, char *out, size_t out_len, uint8_t num_chars_l, @@ -297,8 +297,8 @@ bool print_claimable_balance_id(const claimable_balance_id *claimable_balance_id data[0] = '\0'; data[1] = '\0'; data[2] = '\0'; - data[3] = claimable_balance_id->type; - memcpy(data + 4, claimable_balance_id->v0, 32); + data[3] = claimable_balance_id_t->type; + memcpy(data + 4, claimable_balance_id_t->v0, 32); return print_binary(data, 36, out, out_len, num_chars_l, num_chars_r); } diff --git a/src/utils.h b/src/utils.h index a1625827..b1871517 100644 --- a/src/utils.h +++ b/src/utils.h @@ -20,7 +20,7 @@ bool encode_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payloa char *out, size_t out_len); -bool print_claimable_balance_id(const claimable_balance_id *claimable_balance_id, +bool print_claimable_balance_id(const claimable_balance_id_t *claimable_balance_id_t, char *out, size_t out_len, uint8_t num_chars_l, diff --git a/tests_unit/test_utils.c b/tests_unit/test_utils.c index f86229bf..3af0fb7b 100644 --- a/tests_unit/test_utils.c +++ b/tests_unit/test_utils.c @@ -164,7 +164,7 @@ void test_print_claimable_balance_id() { const uint8_t v0[] = {0xc9, 0xc4, 0xa9, 0xe3, 0xa4, 0x68, 0x91, 0xa3, 0x60, 0x15, 0xc3, 0x17, 0xb3, 0xdf, 0x17, 0xb4, 0x2b, 0xf, 0x2a, 0xd8, 0xa2, 0xee, 0xa6, 0xc9, 0x34, 0xc9, 0xf7, 0xc8, 0x42, 0x5d, 0xa7, 0xad}; - claimable_balance_id id = {.type = CLAIMABLE_BALANCE_ID_TYPE_V0, .v0 = v0}; + claimable_balance_id_t id = {.type = CLAIMABLE_BALANCE_ID_TYPE_V0, .v0 = v0}; char out[36 * 2 + 1]; assert_true(print_claimable_balance_id(&id, out, sizeof(out), 0, 0)); From fbe0eed8ebc99980df1db59c9fefc2d90ea4ccf3 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Tue, 30 Aug 2022 08:07:58 +0800 Subject: [PATCH 5/5] deps: bump @zondax/zemu to 0.33.1 --- tests_zemu/package-lock.json | 15 ++++++------ tests_zemu/package.json | 2 +- tests_zemu/tests/zemu.ts | 47 +++++++++++------------------------- 3 files changed, 23 insertions(+), 41 deletions(-) diff --git a/tests_zemu/package-lock.json b/tests_zemu/package-lock.json index a96f48c3..766e6dc6 100644 --- a/tests_zemu/package-lock.json +++ b/tests_zemu/package-lock.json @@ -11,7 +11,7 @@ "devDependencies": { "@ledgerhq/hw-app-str": "^6.27.1", "@types/jest": "^27.4.1", - "@zondax/zemu": "0.33.0", + "@zondax/zemu": "0.33.1", "jest": "^27.5.1", "stellar-base": "^8.1.0", "tests-common": "file:../tests_common_js", @@ -1250,10 +1250,11 @@ "license": "MIT" }, "node_modules/@zondax/zemu": { - "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@zondax/zemu/-/zemu-0.33.0.tgz", - "integrity": "sha512-Ql1gqAYr6kflnLX4UXFFtcd0GDDrjSxmfsaqXUHhSR8xMck71XcvxD2d4wLUnGCnEu3jA9pw5d2fBFlvIzDtQA==", + "version": "0.33.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/@zondax%2fzemu/-/zemu-0.33.1.tgz", + "integrity": "sha512-6BJ8eXim6cXyY/idhSLy18iCN170BxCGBHU+BiXlC4dfWCsrIqG+mX0g3CGyHvFP9Cs6ruxrEm7UQbov639ttA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.5.5", "@grpc/proto-loader": "^0.6.9", @@ -6216,9 +6217,9 @@ "dev": true }, "@zondax/zemu": { - "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@zondax/zemu/-/zemu-0.33.0.tgz", - "integrity": "sha512-Ql1gqAYr6kflnLX4UXFFtcd0GDDrjSxmfsaqXUHhSR8xMck71XcvxD2d4wLUnGCnEu3jA9pw5d2fBFlvIzDtQA==", + "version": "0.33.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/@zondax%2fzemu/-/zemu-0.33.1.tgz", + "integrity": "sha512-6BJ8eXim6cXyY/idhSLy18iCN170BxCGBHU+BiXlC4dfWCsrIqG+mX0g3CGyHvFP9Cs6ruxrEm7UQbov639ttA==", "dev": true, "requires": { "@grpc/grpc-js": "^1.5.5", diff --git a/tests_zemu/package.json b/tests_zemu/package.json index ce55a7ac..6e2b4f60 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -13,7 +13,7 @@ "devDependencies": { "@ledgerhq/hw-app-str": "^6.27.1", "@types/jest": "^27.4.1", - "@zondax/zemu": "0.33.0", + "@zondax/zemu": "0.33.1", "jest": "^27.5.1", "stellar-base": "^8.1.0", "tests-common": "file:../tests_common_js", diff --git a/tests_zemu/tests/zemu.ts b/tests_zemu/tests/zemu.ts index 5b1b4b47..6deef4a9 100644 --- a/tests_zemu/tests/zemu.ts +++ b/tests_zemu/tests/zemu.ts @@ -1,52 +1,33 @@ import Zemu from "@zondax/zemu"; import axios from "axios"; -function getRandomInt(min: number, max: number): number { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min + 1)) + min; -} export default class StellarZemu extends Zemu { - private stellarSpeculosApiPort?: number; - - constructor( - elfPath: string, - libElfs: { [key: string]: string } = {}, - host: string = "127.0.0.1", - desiredTransportPort?: number - ) { - const desiredSpeculosApiPort = getRandomInt(3000, 65535); // TODO: Check if it has been used - super(elfPath, libElfs, host, desiredTransportPort, desiredSpeculosApiPort); - this.stellarSpeculosApiPort = desiredSpeculosApiPort; - } - async click( endpoint: string, filename?: string, waitForScreenUpdate?: boolean, waitBeforeSnapshot?: number ) { - let previousScreen; + let previousScreen if (waitForScreenUpdate) { - previousScreen = await this.snapshot(); + previousScreen = await this.snapshot() } - const bothClickUrl = - "http://localhost:" + this.stellarSpeculosApiPort?.toString() + endpoint; - const payload = { action: "press-and-release" }; - await axios.post(bothClickUrl, payload); - this.log(`Click ${endpoint} -> ${filename}`); + const bothClickUrl = 'http://localhost:' + this.speculosApiPort?.toString() + endpoint + const payload = { action: 'press-and-release' } + await axios.post(bothClickUrl, payload) + this.log(`Click ${endpoint} -> ${filename}`) // Wait and poll Speculos until the application screen gets updated if (waitForScreenUpdate) { - let watchdog = 5000; - let currentScreen = await this.snapshot(); + let watchdog = 5000 + let currentScreen = await this.snapshot() while (currentScreen.data.equals(previousScreen.data)) { - this.log("sleep"); - await Zemu.delay(100); - watchdog -= 100; - if (watchdog <= 0) throw "Timeout waiting for screen update"; - currentScreen = await this.snapshot(); + this.log('sleep') + Zemu.delay(100) + watchdog -= 100 + if (watchdog <= 0) throw 'Timeout waiting for screen update' + currentScreen = await this.snapshot() } } else { // A minimum delay is required @@ -62,6 +43,6 @@ export default class StellarZemu extends Zemu { } async clickBoth(filename?: string, waitForScreenUpdate = true, waitBeforeSnapshot = 1000) { - return this.click('/button/both', filename, waitForScreenUpdate, waitBeforeSnapshot); + return this.click('/button/both', filename, waitForScreenUpdate, waitBeforeSnapshot) } }