From 8cfa6a369355bf35dcaf6a98b7562cd5b4fa05a2 Mon Sep 17 00:00:00 2001 From: Lukas Bielesch Date: Tue, 20 May 2025 15:23:26 +0200 Subject: [PATCH] chore(eckhart): update shamir wallet creation [no changelog] --- core/embed/rust/librust_qstr.h | 5 + .../generated/translated_string.rs | 45 +- .../rust/src/ui/api/firmware_micropython.rs | 9 + .../rust/src/ui/layout_bolt/ui_firmware.rs | 2 + .../rust/src/ui/layout_caesar/ui_firmware.rs | 2 + .../layout_delizia/flow/show_share_words.rs | 3 +- .../rust/src/ui/layout_delizia/ui_firmware.rs | 3 + .../firmware/select_word_screen.rs | 19 +- .../ui/layout_eckhart/firmware/share_words.rs | 69 ++- .../ui/layout_eckhart/firmware/text_screen.rs | 2 +- .../firmware/updatable_info_screen.rs | 2 +- .../layout_eckhart/flow/show_share_words.rs | 90 ++- .../rust/src/ui/layout_eckhart/ui_firmware.rs | 22 +- core/embed/rust/src/ui/ui_firmware.rs | 4 +- core/mocks/generated/trezorui_api.pyi | 2 + core/mocks/trezortranslate_keys.pyi | 3 + core/src/trezor/ui/layouts/delizia/reset.py | 2 + core/src/trezor/ui/layouts/eckhart/reset.py | 74 ++- core/translations/en.json | 31 +- core/translations/order.json | 5 +- core/translations/signatures.json | 6 +- tests/click_tests/reset.py | 38 +- .../click_tests/test_backup_slip39_custom.py | 6 +- tests/click_tests/test_repeated_backup.py | 8 +- .../click_tests/test_reset_slip39_advanced.py | 11 +- tests/click_tests/test_reset_slip39_basic.py | 8 +- tests/common.py | 10 +- tests/ui_tests/fixtures.json | 562 +++++++++--------- 28 files changed, 640 insertions(+), 403 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 328768e871..137f75d990 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -334,6 +334,7 @@ static void _librust_qstrs(void) { MP_QSTR_instructions__learn_more; MP_QSTR_instructions__shares_continue_with_x_template; MP_QSTR_instructions__shares_start_with_1; + MP_QSTR_instructions__shares_start_with_x_template; MP_QSTR_instructions__swipe_down; MP_QSTR_instructions__swipe_horizontally; MP_QSTR_instructions__tap; @@ -341,6 +342,7 @@ static void _librust_qstrs(void) { MP_QSTR_instructions__tap_to_continue; MP_QSTR_instructions__tap_to_start; MP_QSTR_instructions__view_all_data; + MP_QSTR_instructions_verb; MP_QSTR_interface; MP_QSTR_is_connected; MP_QSTR_is_data; @@ -549,6 +551,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__check_backup_instructions; MP_QSTR_reset__check_backup_title; MP_QSTR_reset__check_group_share_title_template; + MP_QSTR_reset__check_share_backup_template; MP_QSTR_reset__check_share_title_template; MP_QSTR_reset__check_wallet_backup_title; MP_QSTR_reset__continue_with_next_share; @@ -586,6 +589,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__required_number_of_groups; MP_QSTR_reset__select_correct_word; MP_QSTR_reset__select_threshold; + MP_QSTR_reset__select_word_from_share_template; MP_QSTR_reset__select_word_template; MP_QSTR_reset__select_word_x_of_y_template; MP_QSTR_reset__set_it_to_count_template; @@ -741,6 +745,7 @@ static void _librust_qstrs(void) { MP_QSTR_summary_items; MP_QSTR_summary_title; MP_QSTR_text; + MP_QSTR_text_check; MP_QSTR_text_confirm; MP_QSTR_text_footer; MP_QSTR_text_mono; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 7ec3367d42..80c090ed27 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -766,7 +766,7 @@ pub enum TranslatedString { recovery__enter_backup = 503, // "Enter your backup." recovery__enter_different_share = 504, // "Enter a different share." recovery__enter_share_from_diff_group = 505, // "Enter share from a different group." - recovery__group_num_template = 506, // "Group {0}" + recovery__group_num_template = 506, // {"Bolt": "Group {0}", "Caesar": "Group {0}", "Delizia": "Group {0}", "Eckhart": "Group #{0}"} recovery__group_threshold_reached = 507, // "Group threshold reached." recovery__invalid_wallet_backup_entered = 508, // "Invalid wallet backup entered." recovery__invalid_share_entered = 509, // "Invalid recovery share entered." @@ -776,7 +776,7 @@ pub enum TranslatedString { recovery__progress_will_be_lost = 513, // "All progress will be lost." recovery__share_already_entered = 515, // "Share already entered" recovery__share_from_another_multi_share_backup = 516, // "You have entered a share from a different backup." - recovery__share_num_template = 517, // "Share {0}" + recovery__share_num_template = 517, // {"Bolt": "Share {0}", "Caesar": "Share {0}", "Delizia": "Share {0}", "Eckhart": "Share #{0}"} recovery__title = 518, // "Recover wallet" recovery__title_cancel_dry_run = 519, // "Cancel backup check" recovery__title_cancel_recovery = 520, // "Cancel recovery" @@ -811,7 +811,7 @@ pub enum TranslatedString { reset__group_description = 549, // "A group is made up of recovery shares." reset__group_info = 550, // "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds." reset__group_share_checked_successfully_template = 551, // "Group {0} - Share {1} checked successfully." - reset__group_share_title_template = 552, // "Group {0} - share {1}" + reset__group_share_title_template = 552, // {"Bolt": "Group {0} - share {1}", "Caesar": "Group {0} - share {1}", "Delizia": "Group {0} - share {1}", "Eckhart": "Group #{0} - Share #{1}"} reset__more_info_at = 553, // "More info at" reset__need_all_share_template = 554, // "For recovery you need all {0} of the shares." reset__need_any_share_template = 555, // "For recovery you need any {0} of the shares." @@ -1275,7 +1275,7 @@ pub enum TranslatedString { reset__incorrect_word_selected = 907, // {"Bolt": "Incorrect word selected", "Caesar": "Incorrect word selected", "Delizia": "Incorrect word selected", "Eckhart": "Incorrect word selected."} reset__more_at = 908, // "More at" reset__num_of_shares_how_many = 909, // "How many wallet backup shares do you want to create?" - reset__num_of_shares_long_info_template = 910, // "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + reset__num_of_shares_long_info_template = 910, // {"Bolt": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", "Caesar": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", "Delizia": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", "Eckhart": "Each backup share is a sequence of {0} words.\nStore each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet."} reset__select_threshold = 911, // "Select the minimum shares required to recover your wallet." reset__share_completed_template = 912, // "Share #{0} completed" reset__slip39_checklist_num_shares_x_template = 913, // "Number of shares: {0}" @@ -1443,6 +1443,9 @@ pub enum TranslatedString { pin__reenter = 1038, // "Re-enter PIN" pin__setup_completed = 1039, // "PIN setup completed." pin__title_setup = 1040, // "Set PIN" + instructions__shares_start_with_x_template = 1041, // "Start with Share #{0}" + reset__check_share_backup_template = 1042, // "Let's do a quick check of Share #{0}." + reset__select_word_from_share_template = 1043, // "Select word #{0} from\nShare #{1}" } impl TranslatedString { @@ -2316,7 +2319,14 @@ impl TranslatedString { (Self::recovery__enter_backup, "Enter your backup."), (Self::recovery__enter_different_share, "Enter a different share."), (Self::recovery__enter_share_from_diff_group, "Enter share from a different group."), + #[cfg(feature = "layout_bolt")] (Self::recovery__group_num_template, "Group {0}"), + #[cfg(feature = "layout_caesar")] + (Self::recovery__group_num_template, "Group {0}"), + #[cfg(feature = "layout_delizia")] + (Self::recovery__group_num_template, "Group {0}"), + #[cfg(feature = "layout_eckhart")] + (Self::recovery__group_num_template, "Group #{0}"), (Self::recovery__group_threshold_reached, "Group threshold reached."), (Self::recovery__invalid_wallet_backup_entered, "Invalid wallet backup entered."), (Self::recovery__invalid_share_entered, "Invalid recovery share entered."), @@ -2326,7 +2336,14 @@ impl TranslatedString { (Self::recovery__progress_will_be_lost, "All progress will be lost."), (Self::recovery__share_already_entered, "Share already entered"), (Self::recovery__share_from_another_multi_share_backup, "You have entered a share from a different backup."), + #[cfg(feature = "layout_bolt")] (Self::recovery__share_num_template, "Share {0}"), + #[cfg(feature = "layout_caesar")] + (Self::recovery__share_num_template, "Share {0}"), + #[cfg(feature = "layout_delizia")] + (Self::recovery__share_num_template, "Share {0}"), + #[cfg(feature = "layout_eckhart")] + (Self::recovery__share_num_template, "Share #{0}"), (Self::recovery__title, "Recover wallet"), (Self::recovery__title_cancel_dry_run, "Cancel backup check"), (Self::recovery__title_cancel_recovery, "Cancel recovery"), @@ -2382,7 +2399,14 @@ impl TranslatedString { (Self::reset__group_description, "A group is made up of recovery shares."), (Self::reset__group_info, "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds."), (Self::reset__group_share_checked_successfully_template, "Group {0} - Share {1} checked successfully."), + #[cfg(feature = "layout_bolt")] (Self::reset__group_share_title_template, "Group {0} - share {1}"), + #[cfg(feature = "layout_caesar")] + (Self::reset__group_share_title_template, "Group {0} - share {1}"), + #[cfg(feature = "layout_delizia")] + (Self::reset__group_share_title_template, "Group {0} - share {1}"), + #[cfg(feature = "layout_eckhart")] + (Self::reset__group_share_title_template, "Group #{0} - Share #{1}"), (Self::reset__more_info_at, "More info at"), (Self::reset__need_all_share_template, "For recovery you need all {0} of the shares."), (Self::reset__need_any_share_template, "For recovery you need any {0} of the shares."), @@ -2909,7 +2933,14 @@ impl TranslatedString { (Self::reset__incorrect_word_selected, "Incorrect word selected."), (Self::reset__more_at, "More at"), (Self::reset__num_of_shares_how_many, "How many wallet backup shares do you want to create?"), + #[cfg(feature = "layout_bolt")] (Self::reset__num_of_shares_long_info_template, "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet."), + #[cfg(feature = "layout_caesar")] + (Self::reset__num_of_shares_long_info_template, "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet."), + #[cfg(feature = "layout_delizia")] + (Self::reset__num_of_shares_long_info_template, "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet."), + #[cfg(feature = "layout_eckhart")] + (Self::reset__num_of_shares_long_info_template, "Each backup share is a sequence of {0} words.\nStore each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet."), (Self::reset__select_threshold, "Select the minimum shares required to recover your wallet."), (Self::reset__share_completed_template, "Share #{0} completed"), (Self::reset__slip39_checklist_num_shares_x_template, "Number of shares: {0}"), @@ -3121,6 +3152,9 @@ impl TranslatedString { (Self::pin__reenter, "Re-enter PIN"), (Self::pin__setup_completed, "PIN setup completed."), (Self::pin__title_setup, "Set PIN"), + (Self::instructions__shares_start_with_x_template, "Start with Share #{0}"), + (Self::reset__check_share_backup_template, "Let's do a quick check of Share #{0}."), + (Self::reset__select_word_from_share_template, "Select word #{0} from\nShare #{1}"), ]; #[cfg(feature = "micropython")] @@ -3755,6 +3789,7 @@ impl TranslatedString { (Qstr::MP_QSTR_instructions__learn_more, Self::instructions__learn_more), (Qstr::MP_QSTR_instructions__shares_continue_with_x_template, Self::instructions__shares_continue_with_x_template), (Qstr::MP_QSTR_instructions__shares_start_with_1, Self::instructions__shares_start_with_1), + (Qstr::MP_QSTR_instructions__shares_start_with_x_template, Self::instructions__shares_start_with_x_template), (Qstr::MP_QSTR_instructions__swipe_down, Self::instructions__swipe_down), (Qstr::MP_QSTR_instructions__swipe_horizontally, Self::instructions__swipe_horizontally), (Qstr::MP_QSTR_instructions__tap, Self::instructions__tap), @@ -4062,6 +4097,7 @@ impl TranslatedString { (Qstr::MP_QSTR_reset__check_backup_instructions, Self::reset__check_backup_instructions), (Qstr::MP_QSTR_reset__check_backup_title, Self::reset__check_backup_title), (Qstr::MP_QSTR_reset__check_group_share_title_template, Self::reset__check_group_share_title_template), + (Qstr::MP_QSTR_reset__check_share_backup_template, Self::reset__check_share_backup_template), (Qstr::MP_QSTR_reset__check_share_title_template, Self::reset__check_share_title_template), (Qstr::MP_QSTR_reset__check_wallet_backup_title, Self::reset__check_wallet_backup_title), (Qstr::MP_QSTR_reset__continue_with_next_share, Self::reset__continue_with_next_share), @@ -4099,6 +4135,7 @@ impl TranslatedString { (Qstr::MP_QSTR_reset__required_number_of_groups, Self::reset__required_number_of_groups), (Qstr::MP_QSTR_reset__select_correct_word, Self::reset__select_correct_word), (Qstr::MP_QSTR_reset__select_threshold, Self::reset__select_threshold), + (Qstr::MP_QSTR_reset__select_word_from_share_template, Self::reset__select_word_from_share_template), (Qstr::MP_QSTR_reset__select_word_template, Self::reset__select_word_template), (Qstr::MP_QSTR_reset__select_word_x_of_y_template, Self::reset__select_word_x_of_y_template), (Qstr::MP_QSTR_reset__set_it_to_count_template, Self::reset__set_it_to_count_template), diff --git a/core/embed/rust/src/ui/api/firmware_micropython.rs b/core/embed/rust/src/ui/api/firmware_micropython.rs index a1931f21db..b736d55a5f 100644 --- a/core/embed/rust/src/ui/api/firmware_micropython.rs +++ b/core/embed/rust/src/ui/api/firmware_micropython.rs @@ -1010,11 +1010,16 @@ extern "C" fn new_show_share_words_extended( .and_then(Obj::try_into_option) .unwrap_or(None); let instructions: Obj = kwargs.get(Qstr::MP_QSTR_instructions)?; + let instructions_verb: Option = kwargs + .get(Qstr::MP_QSTR_instructions_verb) + .and_then(Obj::try_into_option) + .unwrap_or(None); let text_footer: Option = kwargs .get(Qstr::MP_QSTR_text_footer) .and_then(Obj::try_into_option) .unwrap_or(None); let text_confirm: TString = kwargs.get(Qstr::MP_QSTR_text_confirm)?.try_into()?; + let text_check: TString = kwargs.get(Qstr::MP_QSTR_text_check)?.try_into()?; let words: Vec = util::iter_into_vec(words)?; @@ -1022,8 +1027,10 @@ extern "C" fn new_show_share_words_extended( words, subtitle, instructions, + instructions_verb, text_footer, text_confirm, + text_check, )?; Ok(LayoutObj::new_root(layout)?.into()) }; @@ -1768,8 +1775,10 @@ pub static mp_module_trezorui_api: Module = obj_module! { /// words: Iterable[str], /// subtitle: str | None, /// instructions: Iterable[str], + /// instructions_verb: str | None, /// text_footer: str | None, /// text_confirm: str, + /// text_check: str, /// ) -> LayoutObj[UiResult]: /// """Show mnemonic for wallet backup preceded by an instruction screen and followed by a /// confirmation screen.""" diff --git a/core/embed/rust/src/ui/layout_bolt/ui_firmware.rs b/core/embed/rust/src/ui/layout_bolt/ui_firmware.rs index 061f147413..b74d3131f4 100644 --- a/core/embed/rust/src/ui/layout_bolt/ui_firmware.rs +++ b/core/embed/rust/src/ui/layout_bolt/ui_firmware.rs @@ -1087,8 +1087,10 @@ impl FirmwareUI for UIBolt { _words: heapless::Vec, 33>, _subtitle: Option>, _instructions: Obj, + _instructions_verb: Option>, _text_footer: Option>, _text_confirm: TString<'static>, + _text_check: TString<'static>, ) -> Result { Err::, Error>(ERROR_NOT_IMPLEMENTED) } diff --git a/core/embed/rust/src/ui/layout_caesar/ui_firmware.rs b/core/embed/rust/src/ui/layout_caesar/ui_firmware.rs index f1dbe2ad5e..3e7010ce5e 100644 --- a/core/embed/rust/src/ui/layout_caesar/ui_firmware.rs +++ b/core/embed/rust/src/ui/layout_caesar/ui_firmware.rs @@ -1218,8 +1218,10 @@ impl FirmwareUI for UICaesar { _words: heapless::Vec, 33>, _subtitle: Option>, _instructions: Obj, + _instructions_verb: Option>, _text_footer: Option>, _text_confirm: TString<'static>, + _text_check: TString<'static>, ) -> Result { Err::, Error>(ERROR_NOT_IMPLEMENTED) } diff --git a/core/embed/rust/src/ui/layout_delizia/flow/show_share_words.rs b/core/embed/rust/src/ui/layout_delizia/flow/show_share_words.rs index 71d40a33d7..a27b3631f7 100644 --- a/core/embed/rust/src/ui/layout_delizia/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/layout_delizia/flow/show_share_words.rs @@ -82,6 +82,7 @@ pub fn new_show_share_words( instructions_paragraphs: ParagraphVecShort<'static>, text_footer: Option>, text_confirm: TString<'static>, + text_check: TString<'static>, ) -> Result { let nwords = share_words_vec.len(); let paragraphs_spacing = 8; @@ -126,7 +127,7 @@ pub fn new_show_share_words( TR::reset__check_wallet_backup_title.into(), SwipeContent::new(Paragraphs::new(Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, - TR::reset__check_backup_instructions, + text_check, ))), ) .with_swipeup_footer(None) diff --git a/core/embed/rust/src/ui/layout_delizia/ui_firmware.rs b/core/embed/rust/src/ui/layout_delizia/ui_firmware.rs index 6ba549e19d..18949ae860 100644 --- a/core/embed/rust/src/ui/layout_delizia/ui_firmware.rs +++ b/core/embed/rust/src/ui/layout_delizia/ui_firmware.rs @@ -1051,8 +1051,10 @@ impl FirmwareUI for UIDelizia { words: heapless::Vec, 33>, subtitle: Option>, instructions: Obj, + _instructions_verb: Option>, text_footer: Option>, text_confirm: TString<'static>, + text_check: TString<'static>, ) -> Result { let mut instructions_paragraphs = ParagraphVecShort::new(); for item in IterBuf::new().try_iterate(instructions)? { @@ -1066,6 +1068,7 @@ impl FirmwareUI for UIDelizia { instructions_paragraphs, text_footer, text_confirm, + text_check, )?; Ok(flow) } diff --git a/core/embed/rust/src/ui/layout_eckhart/firmware/select_word_screen.rs b/core/embed/rust/src/ui/layout_eckhart/firmware/select_word_screen.rs index ac1634deda..3e4cbd114f 100644 --- a/core/embed/rust/src/ui/layout_eckhart/firmware/select_word_screen.rs +++ b/core/embed/rust/src/ui/layout_eckhart/firmware/select_word_screen.rs @@ -31,10 +31,9 @@ pub enum SelectWordMsg { } impl SelectWordScreen { - const DESCRIPTION_HEIGHT: i16 = 58; - const MENU_HEIGHT: i16 = 360; - const DESCRIPTION_PADDING: i16 = 24; - const MENU_PADDING: i16 = 12; + const DESCRIPTION_HEIGHT: i16 = 76; + const MENU_HEIGHT: i16 = 330; + const MENU_INSETS: Insets = Insets::sides(12); pub fn new( share_words_vec: [TString<'static>; MAX_WORD_QUIZ_ITEMS], description: TString<'static>, @@ -65,11 +64,9 @@ impl Component for SelectWordScreen { let (description_area, rest) = rest.split_top(Self::DESCRIPTION_HEIGHT); let (menu_area, _) = rest.split_top(Self::MENU_HEIGHT); - let description_area = description_area.inset(Insets::sides(Self::DESCRIPTION_PADDING)); - let menu_area = menu_area.inset(Insets::sides(Self::MENU_PADDING)); - - self.menu.place(menu_area); - self.description.place(description_area); + self.menu.place(menu_area.inset(Self::MENU_INSETS)); + self.description + .place(description_area.inset(theme::SIDE_INSETS)); self.header.place(header_area); bounds @@ -188,9 +185,9 @@ mod tests { #[test] fn test_component_heights_fit_screen() { assert!( - SelectWordScreen::DESCRIPTION_HEIGHT + Header::HEADER_HEIGHT + + SelectWordScreen::DESCRIPTION_HEIGHT + SelectWordScreen::MENU_HEIGHT - + Header::HEADER_HEIGHT <= SCREEN.height(), "Components overflow the screen height", ); diff --git a/core/embed/rust/src/ui/layout_eckhart/firmware/share_words.rs b/core/embed/rust/src/ui/layout_eckhart/firmware/share_words.rs index d83f6d45cd..acad504c8c 100644 --- a/core/embed/rust/src/ui/layout_eckhart/firmware/share_words.rs +++ b/core/embed/rust/src/ui/layout_eckhart/firmware/share_words.rs @@ -3,10 +3,11 @@ use crate::{ translations::TR, ui::{ component::{ - swipe_detect::SwipeConfig, Component, Event, EventCtx, Never, PaginateFull, Swipe, + swipe_detect::SwipeConfig, text::TextStyle, Component, Event, EventCtx, Label, Never, + PaginateFull, Swipe, }, flow::Swipable, - geometry::{Alignment, Direction, Offset, Rect}, + geometry::{Alignment, Direction, Insets, Offset, Rect}, shape::{Bar, Renderer, Text}, util::Pager, }, @@ -27,6 +28,7 @@ type IndexVec = Vec; /// Full-screen component for rendering ShareWords. pub struct ShareWordsScreen<'a> { header: Header, + subtitle: Option>, content: ShareWords<'a>, hint: Hint<'static>, action_bar: ActionBar, @@ -43,16 +45,20 @@ pub enum ShareWordsScreenMsg { impl<'a> ShareWordsScreen<'a> { const WORD_AREA_HEIGHT: i16 = 120; - const WORD_AREA_WIDTH: i16 = 330; - const WORD_Y_OFFSET: i16 = 76; + const SUBTITLE_HEIGHT: i16 = 44; + const WORD_Y_OFFSET: i16 = 80 - Self::SUBTITLE_HEIGHT; // vertical distance from the subtitle + const SUBTITLE_STYLE: TextStyle = theme::TEXT_MEDIUM_EXTRA_LIGHT; - pub fn new(share_words_vec: Vec, 33>) -> Self { + pub fn new(share_words_vec: Vec, 33>, show_back_button: bool) -> Self { let content = ShareWords::new(share_words_vec); - let mut action_bar = ActionBar::new_double( - Button::with_icon(theme::ICON_CHEVRON_UP), - Button::with_text(TR::buttons__continue.into()), - ); + let right_button = Button::with_text(TR::buttons__continue.into()); + let mut action_bar = if show_back_button { + ActionBar::new_double(Button::with_icon(theme::ICON_CHEVRON_UP), right_button) + } else { + ActionBar::new_single(right_button) + }; + // Set action bar page counter action_bar.update(content.pager()); @@ -62,8 +68,9 @@ impl<'a> ShareWordsScreen<'a> { hint.update(content.pager()); Self { - content, header, + subtitle: None, + content, hint, action_bar, area: Rect::zero(), @@ -72,6 +79,13 @@ impl<'a> ShareWordsScreen<'a> { } } + pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { + if !subtitle.is_empty() { + self.subtitle = Some(Label::left_aligned(subtitle, Self::SUBTITLE_STYLE).top_aligned()); + } + self + } + fn on_page_change(&mut self, direction: Direction) { // Update page based on the direction @@ -126,20 +140,18 @@ impl<'a> Component for ShareWordsScreen<'a> { self.area = bounds; let (header_area, rest) = bounds.split_top(Header::HEADER_HEIGHT); + let (subtitle_area, rest) = rest.split_top(Self::SUBTITLE_HEIGHT); let (rest, action_bar_area) = rest.split_bottom(ActionBar::ACTION_BAR_HEIGHT); - let (content_area, hint_area) = rest.split_bottom(self.hint.height()); + let (mut content_area, hint_area) = rest.split_bottom(self.hint.height()); // Use constant y offset for the word area because the height is floating - let top_left = content_area.top_left().ofs(Offset::new( - (content_area.width() - Self::WORD_AREA_WIDTH) / 2, - Self::WORD_Y_OFFSET, - )); - let content_area = Rect::from_top_left_and_size( - top_left, - Offset::new(Self::WORD_AREA_WIDTH, Self::WORD_AREA_HEIGHT), - ); + content_area = content_area + .inset(Insets::top(Self::WORD_Y_OFFSET)) + .inset(theme::SIDE_INSETS) + .with_height(Self::WORD_AREA_HEIGHT); self.header.place(header_area); + self.subtitle.place(subtitle_area.inset(theme::SIDE_INSETS)); self.content.place(content_area); self.hint.place(hint_area); self.action_bar.place(action_bar_area); @@ -183,6 +195,7 @@ impl<'a> Component for ShareWordsScreen<'a> { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.header.render(target); + self.subtitle.render(target); self.content.render(target); self.hint.render(target); self.action_bar.render(target); @@ -323,3 +336,21 @@ impl<'a> crate::trace::Trace for ShareWords<'a> { t.int("page_count", self.share_words.len() as i64) } } + +#[cfg(test)] +mod tests { + use super::{super::super::constant::SCREEN, *}; + + #[test] + fn test_component_heights_fit_screen() { + assert!( + Header::HEADER_HEIGHT + + ShareWordsScreen::SUBTITLE_HEIGHT + + ShareWordsScreen::WORD_Y_OFFSET + + ShareWords::AREA_WORD_HEIGHT + + Hint::HEIGHT_MAXIMAL + <= SCREEN.height(), + "Components overflow the screen height", + ); + } +} diff --git a/core/embed/rust/src/ui/layout_eckhart/firmware/text_screen.rs b/core/embed/rust/src/ui/layout_eckhart/firmware/text_screen.rs index 6275cf4993..53a7065e6e 100644 --- a/core/embed/rust/src/ui/layout_eckhart/firmware/text_screen.rs +++ b/core/embed/rust/src/ui/layout_eckhart/firmware/text_screen.rs @@ -185,7 +185,7 @@ where fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { // Update page count of the screen - ctx.set_page_count(self.content_pager().total() as usize); + ctx.set_page_count(self.content_pager().total().into()); self.content.event(ctx, event); if let Some(msg) = self.header.event(ctx, event) { diff --git a/core/embed/rust/src/ui/layout_eckhart/firmware/updatable_info_screen.rs b/core/embed/rust/src/ui/layout_eckhart/firmware/updatable_info_screen.rs index 220ae31d84..55e6963941 100644 --- a/core/embed/rust/src/ui/layout_eckhart/firmware/updatable_info_screen.rs +++ b/core/embed/rust/src/ui/layout_eckhart/firmware/updatable_info_screen.rs @@ -90,7 +90,7 @@ where fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option { // Update page count of the screen - ctx.set_page_count(self.paragraph.pager().total() as usize); + ctx.set_page_count(self.paragraph.pager().total().into()); if let Event::Attach(_) = event { self.update_text(ctx); diff --git a/core/embed/rust/src/ui/layout_eckhart/flow/show_share_words.rs b/core/embed/rust/src/ui/layout_eckhart/flow/show_share_words.rs index 30cd7b9655..c2a9dbe04e 100644 --- a/core/embed/rust/src/ui/layout_eckhart/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/layout_eckhart/flow/show_share_words.rs @@ -3,7 +3,7 @@ use crate::{ strutil::TString, translations::TR, ui::{ - button_request::ButtonRequestCode, + button_request::{ButtonRequest, ButtonRequestCode}, component::{ text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort}, ButtonRequestExt, ComponentExt, @@ -21,7 +21,8 @@ use heapless::Vec; use super::super::{ component::Button, firmware::{ - ActionBar, Header, ShareWordsScreen, ShareWordsScreenMsg, TextScreen, TextScreenMsg, + ActionBar, Header, ShareWordsScreen, ShareWordsScreenMsg, ShortMenuVec, TextScreen, + TextScreenMsg, VerticalMenu, VerticalMenuScreen, VerticalMenuScreenMsg, }, theme, }; @@ -32,6 +33,7 @@ pub enum ShowShareWords { ShareWords, Confirm, CheckBackupIntro, + CheckBackupMenu, } impl FlowController for ShowShareWords { @@ -53,6 +55,9 @@ impl FlowController for ShowShareWords { (Self::Confirm, FlowMsg::Cancelled) => Self::ShareWords.goto(), (Self::Confirm, FlowMsg::Confirmed) => Self::CheckBackupIntro.goto(), (Self::CheckBackupIntro, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), + (Self::CheckBackupIntro, FlowMsg::Info) => Self::CheckBackupMenu.goto(), + (Self::CheckBackupMenu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + (Self::CheckBackupMenu, FlowMsg::Cancelled) => Self::CheckBackupIntro.goto(), _ => self.do_nothing(), } } @@ -60,34 +65,41 @@ impl FlowController for ShowShareWords { pub fn new_show_share_words_flow( words: Vec, 33>, - _subtitle: TString<'static>, - instructions_paragraphs: ParagraphVecShort<'static>, + subtitle: TString<'static>, + instructions_paragraphs: Option>, + instructions_verb: Option>, text_confirm: TString<'static>, + text_check: TString<'static>, ) -> Result { + let br: ButtonRequest = ButtonRequestCode::ResetDevice.with_name("share_words"); + // Determine whether to show the instructions or not + let has_intro = instructions_paragraphs.is_some(); let nwords = words.len(); + let instruction = TextScreen::new( instructions_paragraphs + .unwrap_or_default() .into_paragraphs() .with_placement(LinearPlacement::vertical().with_spacing(24)), ) .with_header(Header::new(TR::reset__recovery_wallet_backup_title.into())) .with_action_bar(ActionBar::new_single(Button::with_text( - TR::buttons__continue.into(), + instructions_verb.unwrap_or(TR::buttons__continue.into()), ))) .with_page_limit(1) .map(|msg| match msg { TextScreenMsg::Cancelled => Some(FlowMsg::Cancelled), TextScreenMsg::Confirmed => Some(FlowMsg::Confirmed), _ => Some(FlowMsg::Cancelled), - }) - .one_button_request(ButtonRequestCode::ResetDevice.with_name("share_words")) - .with_pages(move |_| nwords + 2); - - let share_words = ShareWordsScreen::new(words).map(|msg| match msg { - ShareWordsScreenMsg::Cancelled => Some(FlowMsg::Cancelled), - ShareWordsScreenMsg::Confirmed => Some(FlowMsg::Confirmed), }); + let share_words = ShareWordsScreen::new(words, has_intro) + .with_subtitle(subtitle) + .map(|msg| match msg { + ShareWordsScreenMsg::Cancelled => Some(FlowMsg::Cancelled), + ShareWordsScreenMsg::Confirmed => Some(FlowMsg::Confirmed), + }); + let confirm_paragraphs = Paragraph::new(&theme::TEXT_REGULAR, text_confirm) .into_paragraphs() .with_placement(LinearPlacement::vertical()); @@ -106,25 +118,59 @@ pub fn new_show_share_words_flow( TextScreenMsg::Menu => Some(FlowMsg::Cancelled), }); - let check_backup_paragraphs = - Paragraph::new(&theme::TEXT_REGULAR, TR::reset__check_backup_instructions) - .into_paragraphs() - .with_placement(LinearPlacement::vertical()); + let check_backup_paragraphs = Paragraph::new(&theme::TEXT_REGULAR, text_check) + .into_paragraphs() + .with_placement(LinearPlacement::vertical()); let check_backup_intro = TextScreen::new(check_backup_paragraphs) - .with_header(Header::new(TR::reset__check_wallet_backup_title.into())) + .with_header(Header::new(TR::reset__check_wallet_backup_title.into()).with_menu_button()) .with_action_bar(ActionBar::new_single(Button::with_text( TR::buttons__continue.into(), ))) .map(|msg| match msg { TextScreenMsg::Confirmed => Some(FlowMsg::Confirmed), + TextScreenMsg::Menu => Some(FlowMsg::Info), _ => None, }); - - let mut res = SwipeFlow::new(&ShowShareWords::Instruction)?; - res.add_page(&ShowShareWords::Instruction, instruction)? + let check_backup_menu = VerticalMenuScreen::new( + VerticalMenu::::empty().with_item(Button::new_menu_item( + TR::backup__title_skip.into(), + theme::menu_item_title_orange(), + )), + ) + .with_header(Header::new(TR::reset__check_wallet_backup_title.into()).with_close_button()) + .map(|msg| match msg { + VerticalMenuScreenMsg::Selected(i) => Some(FlowMsg::Choice(i)), + VerticalMenuScreenMsg::Close => Some(FlowMsg::Cancelled), + _ => None, + }); + let mut res = if has_intro { + SwipeFlow::new(&ShowShareWords::Instruction)? + } else { + SwipeFlow::new(&ShowShareWords::ShareWords)? + }; + if has_intro { + res.add_page( + &ShowShareWords::Instruction, + instruction + .one_button_request(br) + .with_pages(move |_| nwords + 2), + )? .add_page(&ShowShareWords::ShareWords, share_words)? - .add_page(&ShowShareWords::Confirm, confirm)? - .add_page(&ShowShareWords::CheckBackupIntro, check_backup_intro)?; + } else { + // If there is no introduction page, share words page sends the BR instead + // the instruction page is just a placeholder + res.add_page(&ShowShareWords::Instruction, instruction)? + .add_page( + &ShowShareWords::ShareWords, + share_words + .one_button_request(br) + .with_pages(move |_| nwords + 1), + )? + }; + + res.add_page(&ShowShareWords::Confirm, confirm)? + .add_page(&ShowShareWords::CheckBackupIntro, check_backup_intro)? + .add_page(&ShowShareWords::CheckBackupMenu, check_backup_menu)?; Ok(res) } diff --git a/core/embed/rust/src/ui/layout_eckhart/ui_firmware.rs b/core/embed/rust/src/ui/layout_eckhart/ui_firmware.rs index 67ee00c413..42c0296534 100644 --- a/core/embed/rust/src/ui/layout_eckhart/ui_firmware.rs +++ b/core/embed/rust/src/ui/layout_eckhart/ui_firmware.rs @@ -925,7 +925,7 @@ impl FirmwareUI for UIEckhart { TextScreen::new(checklist_content) .with_header(Header::new(title)) .with_action_bar(ActionBar::new_double( - Button::with_icon(theme::ICON_CROSS).styled(theme::button_cancel()), + Button::with_icon(theme::ICON_CROSS), Button::with_text(button), )), ); @@ -1219,21 +1219,31 @@ impl FirmwareUI for UIEckhart { words: heapless::Vec, 33>, subtitle: Option>, instructions: Obj, + instructions_verb: Option>, // Irrelevant for Eckhart because the footer is dynamic _text_footer: Option>, text_confirm: TString<'static>, + text_check: TString<'static>, ) -> Result { - let mut instructions_paragraphs = ParagraphVecShort::new(); - for item in IterBuf::new().try_iterate(instructions)? { - let text: TString = item.try_into()?; - instructions_paragraphs.add(Paragraph::new(&theme::TEXT_REGULAR, text)); - } + let instructions_paragraphs = { + let mut vec = ParagraphVecShort::new(); + for item in IterBuf::new().try_iterate(instructions)? { + let text: TString = item.try_into()?; + vec.add(Paragraph::new(&theme::TEXT_REGULAR, text)); + } + match vec.is_empty() { + true => None, + false => Some(vec), + } + }; let flow = flow::show_share_words::new_show_share_words_flow( words, subtitle.unwrap_or(TString::empty()), instructions_paragraphs, + instructions_verb, text_confirm, + text_check, )?; Ok(flow) } diff --git a/core/embed/rust/src/ui/ui_firmware.rs b/core/embed/rust/src/ui/ui_firmware.rs index 4987febe7c..654183ebb2 100644 --- a/core/embed/rust/src/ui/ui_firmware.rs +++ b/core/embed/rust/src/ui/ui_firmware.rs @@ -382,9 +382,11 @@ pub trait FirmwareUI { fn show_share_words_extended( words: Vec, 33>, subtitle: Option>, - instructions: Obj, // TODO: replace Obj + instructions: Obj, // TODO: replace Obj + instructions_verb: Option>, text_footer: Option>, // footer description at instruction screen text_confirm: TString<'static>, + text_check: TString<'static>, ) -> Result; fn show_simple( diff --git a/core/mocks/generated/trezorui_api.pyi b/core/mocks/generated/trezorui_api.pyi index dd4e2b5b2a..059990c672 100644 --- a/core/mocks/generated/trezorui_api.pyi +++ b/core/mocks/generated/trezorui_api.pyi @@ -665,8 +665,10 @@ def show_share_words_extended( words: Iterable[str], subtitle: str | None, instructions: Iterable[str], + instructions_verb: str | None, text_footer: str | None, text_confirm: str, + text_check: str, ) -> LayoutObj[UiResult]: """Show mnemonic for wallet backup preceded by an instruction screen and followed by a confirmation screen.""" diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 8ec05fd146..4deb613cba 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -403,6 +403,7 @@ class TR: instructions__learn_more: str = "Learn more" instructions__shares_continue_with_x_template: str = "Continue with Share #{0}" instructions__shares_start_with_1: str = "Start with share #1" + instructions__shares_start_with_x_template: str = "Start with Share #{0}" instructions__swipe_down: str = "Swipe down" instructions__swipe_horizontally: str = "Swipe horizontally" instructions__tap: str = "Tap" @@ -640,6 +641,7 @@ class TR: reset__check_backup_instructions: str = "Let's do a quick check of your backup." reset__check_backup_title: str = "Check backup" reset__check_group_share_title_template: str = "Check g{0} - share {1}" + reset__check_share_backup_template: str = "Let's do a quick check of Share #{0}." reset__check_share_title_template: str = "Check share #{0}" reset__check_wallet_backup_title: str = "Check wallet backup" reset__continue_with_next_share: str = "Continue with the next share." @@ -677,6 +679,7 @@ class TR: reset__required_number_of_groups: str = "The required number of groups for recovery." reset__select_correct_word: str = "Select the correct word for each position." reset__select_threshold: str = "Select the minimum shares required to recover your wallet." + reset__select_word_from_share_template: str = "Select word #{0} from\nShare #{1}" reset__select_word_template: str = "Select {0} word" reset__select_word_x_of_y_template: str = "Select word {0} of {1}:" reset__set_it_to_count_template: str = "Set it to {0} and you will need " diff --git a/core/src/trezor/ui/layouts/delizia/reset.py b/core/src/trezor/ui/layouts/delizia/reset.py index c7e616228d..2adf4eec8b 100644 --- a/core/src/trezor/ui/layouts/delizia/reset.py +++ b/core/src/trezor/ui/layouts/delizia/reset.py @@ -42,8 +42,10 @@ def show_share_words( words=share_words, subtitle=subtitle, instructions=instructions, + instructions_verb=None, text_footer=description, text_confirm=text_confirm, + text_check=TR.reset__check_backup_instructions, ), None, ) diff --git a/core/src/trezor/ui/layouts/eckhart/reset.py b/core/src/trezor/ui/layouts/eckhart/reset.py index c16c21ce52..050bdb698e 100644 --- a/core/src/trezor/ui/layouts/eckhart/reset.py +++ b/core/src/trezor/ui/layouts/eckhart/reset.py @@ -19,18 +19,43 @@ def show_share_words( if share_index is None: subtitle = None elif group_index is None: - subtitle = TR.reset__recovery_share_title_template.format(share_index + 1) + subtitle = TR.recovery__share_num_template.format(share_index + 1) else: subtitle = TR.reset__group_share_title_template.format( group_index + 1, share_index + 1 ) words_count = len(share_words) - description = None - # Eckhart currently has only one instruction, other are shown in the hint area - instructions = [ - TR.reset__write_down_words_template.format(words_count), - TR.reset__words_may_repeat, - ] + + # BIP39 + if share_index is None: + instructions = [ + TR.reset__write_down_words_template.format(words_count), + TR.reset__words_may_repeat, + ] + instructions_verb = None + text_check = TR.reset__check_backup_instructions + # 1st share of SLIP39 + elif share_index == 0 and group_index is None: + instructions = [ + TR.reset__write_down_words_template.format(words_count), + TR.reset__repeat_for_all_shares, + ] + instructions_verb = TR.instructions__shares_start_with_1 + text_check = TR.reset__check_share_backup_template.format(share_index + 1) + # remaining shares of SLIP39 + elif share_index > 0 and group_index is None: + instructions = [] + instructions_verb = None + text_check = TR.reset__check_share_backup_template.format(share_index + 1) + # super shamir + else: + instructions = [ + TR.reset__write_down_words_template.format(words_count), + TR.reset__words_may_repeat, + ] + instructions_verb = None + text_check = TR.reset__check_share_backup_template.format(share_index + 1) + text_confirm = TR.reset__words_written_down_template.format(words_count) return raise_if_not_confirmed( @@ -38,8 +63,10 @@ def show_share_words( words=share_words, subtitle=subtitle, instructions=instructions, - text_footer=description, + instructions_verb=instructions_verb, text_confirm=text_confirm, + text_check=text_check, + text_footer=None, ), None, ) @@ -54,12 +81,17 @@ async def select_word( ) -> str: if share_index is None: title: str = TR.reset__check_wallet_backup_title + description = TR.reset__select_word_template.format(checked_index + 1) elif group_index is None: - title: str = TR.reset__check_share_title_template.format(share_index + 1) + title: str = TR.reset__check_wallet_backup_title + description = TR.reset__select_word_from_share_template.format( + checked_index + 1, share_index + 1 + ) else: title: str = TR.reset__check_group_share_title_template.format( group_index + 1, share_index + 1 ) + description = TR.reset__select_word_template.format(checked_index + 1) # It may happen (with a very low probability) # that there will be less than three unique words to choose from. @@ -71,7 +103,7 @@ async def select_word( result = await interact( trezorui_api.select_word( title=title, - description=TR.reset__select_word_template.format(checked_index + 1), + description=description, words=(words[0], words[1], words[2]), ), None, @@ -197,7 +229,7 @@ def slip39_prompt_threshold( ) return _prompt_number( - TR.reset__title_set_threshold, + TR.reset__slip39_checklist_set_threshold, description, info, count, @@ -283,7 +315,7 @@ async def show_intro_backup(single_share: bool, num_of_words: int | None) -> Non await interact( trezorui_api.show_info( - title=TR.backup__title_create_wallet_backup, + title=TR.reset__recovery_wallet_backup_title, description=description, button=TR.buttons__continue, ), @@ -348,28 +380,30 @@ async def show_share_confirmation_success( # TODO: super-shamir copy not done if share_index == num_of_shares - 1: - content = TR.reset__share_completed_template.format(share_index + 1) if group_index is None: - title = TR.words__title_done + content = TR.reset__share_completed_template.format(share_index + 1) else: - title = TR.reset__finished_verifying_group_template.format(group_index + 1) + content = TR.reset__finished_verifying_group_template.format( + group_index + 1 + ) + button = TR.buttons__continue else: if group_index is None: content = TR.reset__share_completed_template.format(share_index + 1) - title = TR.instructions__shares_continue_with_x_template.format( + button = TR.instructions__shares_start_with_x_template.format( share_index + 2 ) else: - content = TR.reset__continue_with_next_share - title = TR.reset__group_share_checked_successfully_template.format( + button = TR.reset__continue_with_next_share + content = TR.reset__group_share_checked_successfully_template.format( group_index + 1, share_index + 1 ) await show_success( "success_recovery", content, - subheader=title, - button=TR.buttons__continue, + subheader=TR.words__title_done, + button=button, ) diff --git a/core/translations/en.json b/core/translations/en.json index d76e2a00f2..ef62870dc0 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -464,6 +464,7 @@ "instructions__hold_to_sign": "Hold to sign", "instructions__learn_more": "Learn more", "instructions__shares_continue_with_x_template": "Continue with Share #{0}", + "instructions__shares_start_with_x_template": "Start with Share #{0}", "instructions__shares_start_with_1": "Start with share #1", "instructions__swipe_down": "Swipe down", "instructions__swipe_horizontally": "Swipe horizontally", @@ -716,7 +717,12 @@ "recovery__enter_different_share": "Enter a different share.", "recovery__enter_each_word": "Enter each word of your wallet backup in order.", "recovery__enter_share_from_diff_group": "Enter share from a different group.", - "recovery__group_num_template": "Group {0}", + "recovery__group_num_template": { + "Bolt": "Group {0}", + "Caesar": "Group {0}", + "Delizia": "Group {0}", + "Eckhart": "Group #{0}" + }, "recovery__group_threshold_reached": "Group threshold reached.", "recovery__info_about_disconnect": "It's safe to disconnect your Trezor while recovering your wallet and continue later.", "recovery__invalid_share_entered": "Invalid recovery share entered.", @@ -728,7 +734,12 @@ "recovery__share_already_entered": "Share already entered", "recovery__share_does_not_match": "Share doesn't match", "recovery__share_from_another_multi_share_backup": "You have entered a share from a different backup.", - "recovery__share_num_template": "Share {0}", + "recovery__share_num_template": { + "Bolt": "Share {0}", + "Caesar": "Share {0}", + "Delizia": "Share {0}", + "Eckhart": "Share #{0}" + }, "recovery__title": "Recover wallet", "recovery__title_cancel_dry_run": "Cancel backup check", "recovery__title_cancel_recovery": "Cancel recovery", @@ -771,6 +782,7 @@ }, "reset__cancel_create_wallet": "Cancel create wallet", "reset__check_backup_instructions": "Let's do a quick check of your backup.", + "reset__check_share_backup_template": "Let's do a quick check of Share #{0}.", "reset__check_backup_title": "Check backup", "reset__check_group_share_title_template": "Check g{0} - share {1}", "reset__check_share_title_template": "Check share #{0}", @@ -784,7 +796,12 @@ "reset__group_description": "A group is made up of recovery shares.", "reset__group_info": "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds.", "reset__group_share_checked_successfully_template": "Group {0} - Share {1} checked successfully.", - "reset__group_share_title_template": "Group {0} - share {1}", + "reset__group_share_title_template": { + "Bolt": "Group {0} - share {1}", + "Caesar": "Group {0} - share {1}", + "Delizia": "Group {0} - share {1}", + "Eckhart": "Group #{0} - Share #{1}" + }, "reset__incorrect_word_selected": { "Bolt": "Incorrect word selected", "Caesar": "Incorrect word selected", @@ -802,7 +819,12 @@ "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}.", "reset__num_of_shares_basic_info_template": "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet.", "reset__num_of_shares_how_many": "How many wallet backup shares do you want to create?", - "reset__num_of_shares_long_info_template": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + "reset__num_of_shares_long_info_template": { + "Bolt": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + "Caesar": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + "Delizia": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + "Eckhart": "Each backup share is a sequence of {0} words.\nStore each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + }, "reset__num_shares_for_group_template": "The required number of shares to form Group {0}.", "reset__number_of_shares_info": "= total number of unique word lists used for wallet backup.", "reset__one_share": "1 share", @@ -821,6 +843,7 @@ "Delizia": "Select {0} word", "Eckhart": "Select word #{0} from your wallet backup" }, + "reset__select_word_from_share_template": "Select word #{0} from\nShare #{1}", "reset__select_word_x_of_y_template": "Select word {0} of {1}:", "reset__set_it_to_count_template": "Set it to {0} and you will need ", "reset__share_checked_successfully_template": "Share #{0} checked successfully.", diff --git a/core/translations/order.json b/core/translations/order.json index 35522a88c9..9bd470fb57 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -1039,5 +1039,8 @@ "1037": "passphrase__show", "1038": "pin__reenter", "1039": "pin__setup_completed", - "1040": "pin__title_setup" + "1040": "pin__title_setup", + "1041": "instructions__shares_start_with_x_template", + "1042": "reset__check_share_backup_template", + "1043": "reset__select_word_from_share_template" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 127a30213a..5f82713c82 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "14925b1bd4dcbdd44a3fb0fa412fa6a8bb6a467bb26156859b6e4747f030cc9f", - "datetime": "2025-06-08T14:07:14.202875+00:00", - "commit": "7730e4c63bcffef3537e7174252b4114b74852e4" + "merkle_root": "116c70939f541e3881931ac898f2f60b6e1a09af3f12a5e9b18dcf17441cca7c", + "datetime": "2025-06-08T16:35:16.660449+00:00", + "commit": "1836a50814fda0ae2809572a0c0a280b50a294dc" }, "history": [ { diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index e725f1eec6..a33953348c 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -113,15 +113,21 @@ def set_selection(debug: "DebugLink", diff: int) -> None: raise RuntimeError("Unknown model") -def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: +def read_words( + debug: "DebugLink", do_htc: bool = True, confirm_instruction: bool = True +) -> list[str]: words: list[str] = [] + # introductory screen if debug.layout_type is LayoutType.Caesar: debug.press_right() elif debug.layout_type is LayoutType.Delizia: debug.swipe_up() - elif debug.layout_type is LayoutType.Eckhart: + elif debug.layout_type is LayoutType.Eckhart and confirm_instruction: + # In SLIP39, the screen is present only before the 1st share + assert "ShareWordsInner" not in debug.read_layout().all_components() debug.click(debug.screen_buttons.ok()) + assert "ShareWordsInner" in debug.read_layout().all_components() # Swiping through all the pages and loading the words layout = debug.read_layout() @@ -158,15 +164,14 @@ def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: return words -def confirm_words(debug: "DebugLink", words: list[str]) -> None: +def confirm_words(debug: "DebugLink", words: list[str], skip_intro=False) -> None: if debug.layout_type is LayoutType.Delizia: debug.swipe_up() - elif debug.layout_type is LayoutType.Eckhart: - # Press ok if the select word screen is not yet present - if not TR.regexp("reset__select_word_template").match( - debug.read_layout().subtitle() - ): - debug.click(debug.screen_buttons.ok()) + elif debug.layout_type is LayoutType.Eckhart and not skip_intro: + # In 16-of-16 scenario, the intro screen is skipped + assert "SelectWordScreen" not in debug.read_layout().all_components() + debug.click(debug.screen_buttons.ok()) + assert "SelectWordScreen" in debug.read_layout().all_components() layout = debug.read_layout() if debug.layout_type is LayoutType.Bolt: @@ -223,14 +228,19 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: debug.click(debug.screen_buttons.word_check_words()[button_pos]) layout = debug.read_layout() elif debug.layout_type is LayoutType.Eckhart: - assert TR.regexp("reset__select_word_template").match( - debug.read_layout().subtitle() + subtitle = debug.read_layout().subtitle().strip() + assert any( + TR.regexp(template).match(subtitle) + for template in [ + "reset__select_word_template", + "reset__select_word_from_share_template", + ] ) for _ in range(3): - # "Select word 3 of 20" - # ^ - word_pos_match = re.search(r"\d+", debug.read_layout().subtitle()) + # Select word #3 from Share 2 + # "Select word 3 of your backup" + word_pos_match = re.search(r"\d+", debug.read_layout().subtitle().strip()) assert word_pos_match is not None word_pos = int(word_pos_match.group(0)) # Unifying both the buttons and words to lowercase diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index 96b3365e64..39c17cd3a0 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -93,9 +93,11 @@ def test_backup_slip39_custom( reset.confirm_read(debug, middle_r=True) all_words: list[str] = [] - for _ in range(share_count): + for share in range(share_count): # read words - words = reset.read_words(debug) + eckahrt = debug.layout_type is LayoutType.Eckhart + confirm_instruction = not eckahrt or share == 0 + words = reset.read_words(debug, confirm_instruction=confirm_instruction) # confirm words reset.confirm_words(debug, words) diff --git a/tests/click_tests/test_repeated_backup.py b/tests/click_tests/test_repeated_backup.py index e26abd138c..f78f6afa5b 100644 --- a/tests/click_tests/test_repeated_backup.py +++ b/tests/click_tests/test_repeated_backup.py @@ -20,7 +20,7 @@ import pytest from trezorlib import device, exceptions, messages -from ..common import MOCK_GET_ENTROPY +from ..common import MOCK_GET_ENTROPY, LayoutType from . import recovery, reset from .common import go_next @@ -137,9 +137,11 @@ def test_repeated_backup_via_device( reset.confirm_read(debug, middle_r=True) second_backup_2_of_3: list[str] = [] - for _ in range(3): + for share in range(3): # read words - words = reset.read_words(debug, do_htc=False) + eckahrt = debug.layout_type is LayoutType.Eckhart + confirm_instruction = not eckahrt or share == 0 + words = reset.read_words(debug, confirm_instruction=confirm_instruction) # confirm words reset.confirm_words(debug, words) diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index 72d2769f57..cf406a0124 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -163,11 +163,16 @@ def test_reset_slip39_advanced( all_words: list[str] = [] for _ in range(group_count): for _ in range(share_count): - # read words - words = reset.read_words(debug, do_htc=False) + # In 16-of-16 scenario, skip 1500 ms HTC after each word set + # to avoid long test durations + is_16_of_16 = group_count == 16 and group_threshold == 16 + do_htc = not is_16_of_16 + skip_intro = is_16_of_16 + + words = reset.read_words(debug, do_htc=do_htc) # confirm words - reset.confirm_words(debug, words) + reset.confirm_words(debug, words, skip_intro=skip_intro) # confirm share checked reset.confirm_read(debug) diff --git a/tests/click_tests/test_reset_slip39_basic.py b/tests/click_tests/test_reset_slip39_basic.py index 8314067906..f46d1eb9ec 100644 --- a/tests/click_tests/test_reset_slip39_basic.py +++ b/tests/click_tests/test_reset_slip39_basic.py @@ -21,7 +21,7 @@ import pytest from trezorlib import device, messages from .. import translations as TR -from ..common import EXTERNAL_ENTROPY, MOCK_GET_ENTROPY, generate_entropy +from ..common import EXTERNAL_ENTROPY, MOCK_GET_ENTROPY, LayoutType, generate_entropy from . import reset if TYPE_CHECKING: @@ -129,9 +129,11 @@ def test_reset_slip39_basic( reset.confirm_read(debug, middle_r=True) all_words: list[str] = [] - for _ in range(num_of_shares): + for share in range(num_of_shares): # read words - words = reset.read_words(debug) + eckahrt = debug.layout_type is LayoutType.Eckhart + confirm_instruction = not eckahrt or share == 0 + words = reset.read_words(debug, confirm_instruction=confirm_instruction) # confirm words reset.confirm_words(debug, words) diff --git a/tests/common.py b/tests/common.py index 9c7d61f6e7..3d7646acd1 100644 --- a/tests/common.py +++ b/tests/common.py @@ -286,10 +286,14 @@ def read_mnemonic_from_screen_eckhart( br = yield assert br.pages is not None - debug.read_layout() - debug.click(debug.screen_buttons.ok()) + # There is an intro screen + if br.pages != debug.read_layout().page_count() + 1: + debug.click(debug.screen_buttons.ok()) - for _ in range(br.pages - 2): + nwords = debug.read_layout().page_count() + assert nwords > 1 + + for _ in range(nwords): words = debug.read_layout().seed_words() mnemonic.extend(words) debug.click(debug.screen_buttons.ok()) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index e66ecbd31a..b82869439c 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -805,10 +805,10 @@ "T2T1_cs_test_recovery.py::test_recovery_cancel_issue4613": "6a89fa27ea318f1033a48d9686df13d4a110a2bd9a4f35c367cf35616c320762", "T2T1_cs_test_recovery.py::test_recovery_cancel_number_of_words": "01da07f9b71bdd700ad3b0b9e4480c9e8567ba57383d406d380cef6d50d3b197", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "17b72f08784965af83954d7eeee74e364d27796ef8f40d4ae609ef66ccedf6d3", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_via_device": "23b068216bfebc54cc40dc0b779b762a1d84996b50037f0b9b3b81ca578bc467", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_via_device": "5817c97527e0da63626d3e8f6f6bfe55344d149f89ae9addd6f3915e83bc1ea1", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "a2f8c63628d41aff913ef3ccba61f8262bb90b535578ce349cadbb63294bf8cf", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f7683e45a6e304dd3e76501d96f4da45aacc7186a2820149eeb9d61dedd58b96", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8a522f8953a1a49083a6ef4644429d56d02a6d47191be1ccfafd107fa30dfe61", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a62da708e3505518b50543db3128a0ccac574f81b7f55f0ca88492e47ad77226", "T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e67a4655fbb9817a94f551122d40f3b71387a3cf4e999abd1018f431f5917c63", "T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "03902d955f704fc2ebc715161f680a0a840d81759e28e22983c12bdf1359c5d7", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "5fbc60e52b5c4903b31b9aebca857484db77a8fc93428e29271700c90b354a0b", @@ -857,10 +857,10 @@ "T2T1_de_test_recovery.py::test_recovery_cancel_issue4613": "1d4497515e07d3674ee32d909fdbe8f4097aa8e28f040202f753a33a65f97340", "T2T1_de_test_recovery.py::test_recovery_cancel_number_of_words": "745e1d65da0afade34db98a1715ffd5cd64789025d48f30df1da4e271ce7e8dc", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "867f0c4e66e867d9e32d19df864d4e2bb4733d6d5a09b882cc1d4951d427ab6d", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_via_device": "d411f069501737e48c96d2a05e50879bd36ab9ae9b702a9561118a10e1cef4be", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_via_device": "c1c365652aae042f06c8ff829ad9176f1ad5285ab722606c6de502edad42538b", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "6d176c432d3d835fdf3fe8f437751f3c58a41be553071008a9cad68efb26874c", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2ea57b5b040accc10a632bacbdd46434a0e5acdd1c240a0078f6cf8c7d6c66f8", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e81ef0014e1a8dd51e2318837b790a7622e2448fb43c4196348f5be4a9e4db12", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9868addbfcc0bfb89fcf50cc6c3db312efe5a8e862a870db5d808bf1a7952701", "T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eb862e7ab81121de9d677a36bdbb4b2abd59b982d30da2f04ce1bfaf30bc5918", "T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6c5ab02138b38f9c6d23c35f7ccaa832ab856200b13393f4246611688823d718", "T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d172111b08819e8cf74ae7aaf7fcdb50a3c91931042a844346d1a0a62fdcea7a", @@ -909,10 +909,10 @@ "T2T1_en_test_recovery.py::test_recovery_cancel_issue4613": "fe766874bc3b50bcb5dd735b8d02eaf55ae18f6a9d7938d44f20cc6c5c2d1475", "T2T1_en_test_recovery.py::test_recovery_cancel_number_of_words": "7d489d3b0c63d802139b83c1ad2607793b1232150d115c2f15c597d782a02e45", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "0bbdd3d4c70a946175718c052fdcb4513f3aa4018d8390ef47ddea991ce0d704", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_via_device": "2599f2c91fe0b0384b67fb0766aff23c57661d079c57bc0bbdc8bd7775d9ce0d", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_via_device": "41e1a6095a0cbbe969ab468f0aaa3d67d3ee7b9eb6bad2fd89c6f615ad038b76", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "5af195b13687cc0c4d6fcf481eedbdb06e48a074f62aa86fd28cc9f9f1a60752", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "563bfddbdbc705be3f556c4be347af2c776a99b351ca95029b646e662f712d64", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f80d209a2b88f9cb52b78039deaee9500eb9baa13b1bbe522abe48104bba25e1", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c7a77d827beebc2c800ff0418b5f2ec727030c61b039df31493b771b25dc74c5", "T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e6acdc2c2dd53d3655a73c200edb908147b7bd04d4524a5e7adeb41c03778b72", "T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8ba31085119923964504eb945a8844ab270d5b796796a302b210ffc7addf98f7", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "446c7dedbcee73eca818558baaeddb0967ea60d27d8ff60039d3f3eeb58cd6a8", @@ -961,10 +961,10 @@ "T2T1_es_test_recovery.py::test_recovery_cancel_issue4613": "f7a6e6b6908aa3b864775eb0f18b61708b0bcd49ad3e74ffbabefae4ab12cc8c", "T2T1_es_test_recovery.py::test_recovery_cancel_number_of_words": "df31777c1cf1bcf792a93f1127bfc88f46535d5fc95c8e62cf7a615094d7d36d", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "410ad35e9970b35b55c48c4b6c225ad3e63342a83f62e3161cfbd31893069579", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_via_device": "01e0ddf55f7624630e15fe9d73c2ed4d08d7fda8aa873f0e927524a266372c8a", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_via_device": "53d0f5c04da015b3979ddd2481adacad964ba1ad32c21bd45f28f381267c906c", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "e5286038a631c727dad181308d78f7d2218ea465bcc17174e455eadb7ceea920", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "af2ff498d75af426ad6030bae7ba07990bb83e3f05542be1c318d792b7673067", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "67814b024ad209dd84cd1fe2abd8f1544294f25481ade066013804494a116e6f", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aae4c9ae49bdbfbebf52f34b8274de64ed9c64f8b64caa82b8735cef17f9bc7a", "T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "084e71dfe13b10f97b6c56650ccd02bdea20c483d911e2c4a75916041c0194b2", "T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3ffe3ddb3cfb54084f2417eb36cec99bf5f2784aeb1d53c2497f85150d974214", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2bef0a15018a597f14156e01bfa9d3c26bfc7857faa6206e002c013d1d147725", @@ -1013,10 +1013,10 @@ "T2T1_fr_test_recovery.py::test_recovery_cancel_issue4613": "dce932978ee36e18b4db8da145ce7af9bbd1d63112ce06b3466792c5b0ef7792", "T2T1_fr_test_recovery.py::test_recovery_cancel_number_of_words": "2de15ea31367bd623c7c3eb52e527f8177b05cf2937a37d74e050605c6be8b6f", "T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "0f399f6553d78a863e8252a3e292098ab337d6acb26f59fbcd36cc27379fa726", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_via_device": "33c4d91488c14393c10078e1d85d42cbf66ba69fdae58a045493a8cc67f2c90a", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_via_device": "b3099634a0106bdf08ec3ca6f38093812273aaf7532ad17f47656cf1f374e844", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "e4a677eb3ea4b16d968d12402af03fbfa50a7ab648c6b6e3a7bf4c45d3da698e", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "8c367669cc7128f346e4c765f6ae3ff122d34cfafc9027f1171ac15ec6ef65b3", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7655a34d52f8dc21b7914e6271ea0f9de219a29133e887b1e56c3fa1a4581cad", +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "dbef3d855cf371def34b4d438955d447fea421dc885e8e9f94ed012c5bc91e0c", "T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1202f4c37942ceccb75d6005592055cbd66553c891fed20c4a0ebc832cfba425", "T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "34e7b81e5ced83f709055960c191723dc5750a57180541a7c1a422b3a1f76c40", "T2T1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "74765f56c22d80e1e36d0bcfa38b8abe9b3964283f2cda61ef9d5b7099015f49", @@ -1065,10 +1065,10 @@ "T2T1_pt_test_recovery.py::test_recovery_cancel_issue4613": "69b4e8f4aacb57e63ef0d96a5dfb691271b4d324b7852dbf9038ac458f7a7ddd", "T2T1_pt_test_recovery.py::test_recovery_cancel_number_of_words": "8ae102c86719d886a628c4b1225fde09f5fd143421842ee34bdffb8d532e37e4", "T2T1_pt_test_recovery.py::test_recovery_slip39_basic": "1a879653b955c074f79c2d5e083b752159f1275f5723ff5f041496abe1b3fd62", -"T2T1_pt_test_repeated_backup.py::test_repeated_backup_via_device": "083fe9f431232014699e37e536d48a3ba6e7288f8da7d5b6c1e64fff6e20b6ba", +"T2T1_pt_test_repeated_backup.py::test_repeated_backup_via_device": "c4112ba439707d1f1aabad7fefba38c7c37b1110df8973cbda7e2c594038124b", "T2T1_pt_test_reset_bip39.py::test_reset_bip39": "3bfbf6b22c4507726660a5fd1fddebf1d76cfce0372378ce42aff0d5a3a97cf7", "T2T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5f4c46af3021797e522b99a75918765ef6694630892aa6dc33fe661779e9fc77", -"T2T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f0989524d817a4c803a5af99f6e9e84f6baeb506c68c62f9bd32e4968c982727", +"T2T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b143c5be61d3c89b76ef60b34f784d335f33f9ec5ea4943146ada658bc60d8e0", "T2T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5c4862791e94634e32847c3a1792525dcaf972750cbfd09976dbcefd93254b41", "T2T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "86f79e8d97d0a45823ab23280476d480f987b990a84a0f4e3da1556c8bbab800" }, @@ -18713,10 +18713,10 @@ "T3T1_cs_test_recovery.py::test_recovery_cancel_issue4613": "89bec24d34b63a486b6ef3ed3d6ccbffaaf858ab8f21d39e2b7b4b4e14944863", "T3T1_cs_test_recovery.py::test_recovery_cancel_number_of_words": "5f43b7ef903f251cc61a0fda3424be3acc7eb6113b9242dcea0056543abf0e0e", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "0711778f13861849188a284aca0f1315e29f68bd89d4a3ae87ab3a2519d3e4eb", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_via_device": "4b38ca110d37a3e6bba2a7d23b61b5b34dc502232873bb95712c8c59fe29cba1", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_via_device": "d235cd338d4ae28598a00df255aab0266babbdd11fcc0982209e2938b7a3ecf1", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "6bff7a7eed8fd54293e0c5c726c3c8841a49608d7d9fddb2acc863d515948809", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b15cd79b82c3b874fad637a5ef4d142edfaf387d27f7ab4937ed578e48077b41", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1f4b65617cc3490d2e2a55da128fd313f65661868156931ba15dfd55b9be07ed", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ff62a341d4ce6012764e77bdf9c81159516c786cbb1d432e42be4142deab8e8d", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "61a8f7fd8c769f8cb5908ce7d6b6ff8c0b516c4d4d9c19d4104bdb0597188046", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "690c7b5741ab64d1ce689b2f7bc508be0e79be199f647297481ee724562112ea", "T3T1_cs_test_tutorial_delizia.py::test_tutorial_ignore_menu": "fea75199774e1664eb840b8e303016fc34952859ea745cac6c2e20463c516b28", @@ -18770,10 +18770,10 @@ "T3T1_de_test_recovery.py::test_recovery_cancel_issue4613": "6d31bd43b2bd2a8c9e25ef9f48a066c852669e5e46bc4a463786d67b5e91b7a8", "T3T1_de_test_recovery.py::test_recovery_cancel_number_of_words": "247160c18c462b92b558263f49d4f79974ea95202ab3faa0ef33f50a2d21d2f7", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "314caaeb33d6bfc7e9c4f7977b486516eb338ea2220ff13ee40f62beb0179303", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_via_device": "0682ace691b62b03d3b338de3277ccde32efac5fddfc3000561d0d10f12be44d", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_via_device": "203b2efbd1df12209a06f2124af5cfbdbaaaf02cb17a11d9bd4309a25b8b9894", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "b9248b8bfd35de9b4e268db9638dbf1e1710e5ae25115c88c408d1e4260970ad", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4f925c8ff2782f56731f2faa831b66970b5af3d0faf2efe82d7f144ca49e56a1", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a1354d7c03d7de8e8cc843dab828e08b67f0739f00428165346bd3fed9076e55", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c2dd8ddf2a8f46d1238b1125e3c9f0ae253e797a9172a903b05cde44556e052d", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4173691536fb8ac3595b7057753e175a7ada8025995017b001a86813f22f7f3f", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "67003c3ea9aeb328ef8eabfec908bb1fdc5c923958879f4000ed3334ea84a7ed", "T3T1_de_test_tutorial_delizia.py::test_tutorial_ignore_menu": "88db81ff42c917f6d6f7a2bd9106e96cf466b42931b7c26a54c9cff7d4168774", @@ -18827,10 +18827,10 @@ "T3T1_en_test_recovery.py::test_recovery_cancel_issue4613": "0413fa152a7ae8d1e30659375165d2356faccd832e4fd01ac75fc62eba0b1c16", "T3T1_en_test_recovery.py::test_recovery_cancel_number_of_words": "40c22731deba58bc21a75bd77f5fba9fee11d84cce1c57d1402a941a79650189", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "6989ce3c9a9ef7484fe41a75d9a9023e110a535f4c8be2c72406c40f71f484cd", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_via_device": "ae5989c85a0c90cb30e69172f2f1ee21b96d7878f5e1f2badc5904c182e68785", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_via_device": "f2d30ed07d3d3013b690ec8d90eedd58a63d58eb497dec6aa97490331ba120bc", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "bfd6ba797bd3277fb45ba705f2e8ca12a869087c1a4592a0b11587486545af14", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e6fff7f7a396a62a202550800b7387ba58757166f82f889a93deb12ee9ebf061", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8038228b49edfd62e31dc92c68b871774263aa62f7336414a7ebda2ec0e93fe4", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a92940c6ba7e025d7342bd01d116490bb9821028154b8e8e667ffaa7946804e0", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "09df0c3ce6291a69b4815d885bcd6d018a2e79edcbb85515b134064ea460b3ef", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b498af812f548761455966ad5614652329505d2a2447b2db7d0c62c02561a7fd", "T3T1_en_test_tutorial_delizia.py::test_tutorial_ignore_menu": "5fe652fd819a7d759a33de957d72f78846a7400dcea2a6283327645abbed48a5", @@ -18884,10 +18884,10 @@ "T3T1_es_test_recovery.py::test_recovery_cancel_issue4613": "3bbe4f0e3d53b266a8a3895611a8b4079e3562c8e7a5b97ac19e3e42d9b98a5a", "T3T1_es_test_recovery.py::test_recovery_cancel_number_of_words": "819f4d4a518fd03805dcfaf583258e2788da00a2a54931981af2464f72971e65", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "75267dc5782cd86264a65ad502e1ddf413f8e278fe2f073c10613bd40e784849", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_via_device": "705530e6d084aaa90dc1e4ee12d7615f3dcac43919383bc7a81a88616bfd27c8", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_via_device": "8eb2ce71cc875829b44ea3bc68d8e75a3de66b95fb6769414a14ce1e47322905", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "775b7800d0acde5083dc8e0e4084fa70dfb8c74174d985af78bdb33e975e9096", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "142e89d0af9c3a185adf6b4a3a8c2b9b29ad4a5ab8d2588ffcdc90b772cf322b", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f0311c097cf511b4c68e0ef7c88ff1f3ece7f8a58e0fa4cfe32b8a01a5079cdc", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2ea525a911c728c8e58f0842b2be16bf6810860c753286017a7cbef161744a93", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7fdfb73db1d0fadee463cbde9fc7fde5ef969270df2af97dd636c213041336b9", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b94f93d902ebd4542235c9a0da812a7cdb9c59e65325bf9fc331fa37ff644f87", "T3T1_es_test_tutorial_delizia.py::test_tutorial_ignore_menu": "dae97038abd04e27b543da49d50f5e6c424a6a522c93e3d991150d0d7bff54e6", @@ -18941,10 +18941,10 @@ "T3T1_fr_test_recovery.py::test_recovery_cancel_issue4613": "63ce53c67f6abb16b4545c35f88f89f24c59ca0f865b321a877e39281d60652e", "T3T1_fr_test_recovery.py::test_recovery_cancel_number_of_words": "195b4d7ea094959d5b61dde6bb9d4e31165885f54099ae10ed99ab5e8d2fe14e", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "ec1991f833adfdf98cdcf09a3bd828f44ab39600765bec8459d2873d9da73b77", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_via_device": "2b46ef705e04f3fdb144c4c531e679fb59c90e838a732ae7743c1a5287a9be8c", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_via_device": "b5819a83a7ed426a77097cfa5cbece16e848f646946ac4b4607b55f62390bd7a", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "229b2d3bab421f688806dca5fc095b9a15331c2adba4fbe5510e20af6b4852e4", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ef181f48b10b5138411a9f9b9d7be82e5f7bf53d48a5bbeb607bf108ef942659", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a8f0887882805c952a885150771541f014517f8a58680c1f1bf1453351d830fa", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c0f27d8df0fd703e8667cce023987f19941172660d8589d490f3bcc86926a6d9", "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c90e75e4c7f26a7998fea5d474d35508c1cc83857188186726347e9ce9ca957e", "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "0137289098945310d57b4fdb990552e43040414070987d030f49c1cb3d2e3272", "T3T1_fr_test_tutorial_delizia.py::test_tutorial_ignore_menu": "5d0f16c108accb3475b38b575e95087b6a5f5ac745828e043d5c487a9c3c6b72", @@ -18998,10 +18998,10 @@ "T3T1_pt_test_recovery.py::test_recovery_cancel_issue4613": "6ca26a02a3c05d90b3aae3c8f49b2171f46b97182ec8962537ae5690662b86c3", "T3T1_pt_test_recovery.py::test_recovery_cancel_number_of_words": "62e74061f5f7450330de79565a5e6e6eb0ba2bdeac812b9f5f02d22b295c3570", "T3T1_pt_test_recovery.py::test_recovery_slip39_basic": "b9c123296ce9d6b167eef45d31a420a97cba8eacc8f891cbb3af163e595b27be", -"T3T1_pt_test_repeated_backup.py::test_repeated_backup_via_device": "77803e913f0d259db3a6cbfa0d739cddabce9b59182991e572cf456e5d294d1c", +"T3T1_pt_test_repeated_backup.py::test_repeated_backup_via_device": "b4e8f3598e90ac14eead98dd52ff450de9077cd5040dc5bc290d3f010167491c", "T3T1_pt_test_reset_bip39.py::test_reset_bip39": "50c9e722c394f602134c34baf6f3c8512f6eae27ccdd71b896d6800f685af4aa", "T3T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f1af197537f56db7e288b5fc19253583498d1e66eb5d73c8b742d51b93357a94", -"T3T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6d688f3c09b1760e76faa4de3535057e9a4cf8e04da5a920a90b7a0e6c22f0e6", +"T3T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "12a360bc7644e3c6ac511559da1ef4d6ec3cf014a7856e2c3520ffe7b904bc4f", "T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "8d582ffe708613f5c71f48cdce54418ed677780374f86c20c77f5505d7dddd5d", "T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5f23a051796ecb8a244ea7fd8cbe4b6c2babefb301df9e50037ef044125ad9f6", "T3T1_pt_test_tutorial_delizia.py::test_tutorial_ignore_menu": "92869d001d5697bc78a1f11a348b290264eed5943fa544dc6117d05b365d73f3", @@ -27571,9 +27571,9 @@ "T3W1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "723c97ba30331412824f0a4c731a20af35b3fcd3ba866886173cf1b72d9a08d0", "T3W1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "55041a94f42d380c0f1828a5fe1f6c70e3cda9daf9e0fe75c9847c1fbf80438b", "T3W1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "c781d3b3648d58c6e74959b565580b43a36d7d3fda35a8b7a8b030c59eab121d", -"T3W1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a1e5e3bd5fc8e9a77f8c42cdbaeff5e2772b239605c5f7eaa980ee839c7e5bc8", -"T3W1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "6144c6558d25aafae16fd8c9ff31e7286d9d65db0a1cffb849e2624530dfea3d", -"T3W1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7ff7f6f6a3d4242f8be8327032558dedb13af26e0349fa2c755585f357b9c419", +"T3W1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5b356d95bad24df37be6227f5eff499f4ca68509432a36183c30d6e2dae4b7bf", +"T3W1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7c35337007915ceff427040f3d45a24427cc9e01e546fd03d539892194fe5908", +"T3W1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c29c46a9dd243d05ff570addf5ac8e84706807ebeb964cfb04a5b3858eb29eb5", "T3W1_cs_test_lock.py::test_hold_to_lock": "36234f0a291eefd083d26aa2bd7481ca52d353d15b21c79ad41d1ff896506d16", "T3W1_cs_test_passphrase_bde.py::test_cycle_through_last_character": "3b5510d551f2e93e2a06f8dfbddbd56dd4bb17333fb0e8b2a4798213aa787c4b", "T3W1_cs_test_passphrase_bde.py::test_passphrase_click_same_button_many_times": "59e6ab40a255418777eef287c13d87e3aeb2df48b1cb052a426193ea427866cd", @@ -27609,12 +27609,12 @@ "T3W1_cs_test_recovery.py::test_recovery_cancel_issue4613": "9c246a8f1ef25add5c1dbf9c5f0cacceacb3b98c8bd1c735cbcc2f91e96d3912", "T3W1_cs_test_recovery.py::test_recovery_cancel_number_of_words": "fa876cb8b0cec318640321277e3a2e56fc8762ea7adff4f1051851727d0a5db4", "T3W1_cs_test_recovery.py::test_recovery_slip39_basic": "6b52acf6cac87f290110c11009f3d3b2396fd1a9b6c2a3a2f7821e2589d9320f", -"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_device": "1d09111788aea0d92b88a6eba50a868ca4cc9964547d0ec3184a8a0e9da23743", -"T3W1_cs_test_reset_bip39.py::test_reset_bip39": "cdf9877947275b8375661b1d96d2c48acee240d18e9677aa59a105c64245c178", -"T3W1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "274a47ff00e6d67672ace99256f03914dd636fb8b1ec50c1fd435bca5650cbd4", -"T3W1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "14fa7844646c87677f9bbc755ce673d466650e549fdc0c426f83f7414dcd92e7", -"T3W1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "54458d6b45a2d38b9a0bfc8ceedb1b6c478af37955c22bfb92ce6e36363ee6e6", -"T3W1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5b6015c39015c6b2aa4b1f1f7b9fc918e23910929153ea52e6acb0a815ceb745", +"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_device": "d9af67eb4c336f8e208ed0a0ec365d6bc38a749fecc432dccb747345847e87ef", +"T3W1_cs_test_reset_bip39.py::test_reset_bip39": "f79fb7dec3d15a0b76a6b0e516ada00bc12ced8f108976a82db419b089e4bd8f", +"T3W1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e7f663e6a6ec420e88a288633528169a50575cbd62f3c1c0fa9cc0c36ccbaf47", +"T3W1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e6fdced61e0909f49fef9a45a410b94fb832061be6407acfb9e7f9bab9b723c4", +"T3W1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "40f6f552e2342f5de37551ad469cb20df338e53501a763695dadf6abca12af02", +"T3W1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "481de8a75acef1675d6873ed17336a4b0675f1763ccf06888b1bb58e9da9cd56", "T3W1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "fd9c8dffc8d225732366baf238e77df6b0fc649eb20cf9eaa9673dc05d88800d", "T3W1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "64d32bed982e15d558769e209654c5c6b1085e7ce47f2f941cb50dff6eb91bc2", "T3W1_de_test_autolock.py::test_autolock_interrupts_passphrase": "bd592f5e847c025c8f8a2d9d70b48e39b22b8171edea63722bb1a513cae0e3b0", @@ -27623,9 +27623,9 @@ "T3W1_de_test_autolock.py::test_dryrun_enter_word_slowly": "8f831a2e1dfd327473dcc6aff3e7360519e78897b5bf5be0142dc1ed3693c005", "T3W1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "55533c36a3d5ce04497f93b6cb0f5c7bb7800362fbb7fafda56908b5f55e5cf3", "T3W1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "ccfac6e0df3b9fff1563d3b63aacc2560113be88de8305372e1ad557fef65346", -"T3W1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "bb79519b60a862e0a49cb00fa0d37e0706c06166238c2bf0dc3a3ad5e049cbd7", -"T3W1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "058dc22446f0e4e69594cf50ca95a8634ffab82ba24af00258e57c79d9fc6270", -"T3W1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "e708be39e5ba1360e54d6796f25616406a10f5e318c69b1b5ff3e2441f806992", +"T3W1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5b9dfdcf13cc5fe9d55647ce1250c815645dfc2ccbfde099b6443a2f17043326", +"T3W1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a88786367734789bbf25fb441ad6adc8d50a10bdb0a2f7d80000d5a3c94e4a14", +"T3W1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "60b5ecf7dc97c27af4115e8c622cfc19bb36195f563e6d5399059c02aa3c9251", "T3W1_de_test_lock.py::test_hold_to_lock": "3494df6f6d2853262f182a9a3ec10767ff336a244bc2dfcb12703710fb561a65", "T3W1_de_test_passphrase_bde.py::test_cycle_through_last_character": "ed0e271dc26edb9f280488b3735d3f60d36f8430e6b10869c379badb44bc396a", "T3W1_de_test_passphrase_bde.py::test_passphrase_click_same_button_many_times": "1906802d951e004c6a99a45a85a9f46c3a0222805a2dec4a4132399a644e8066", @@ -27661,12 +27661,12 @@ "T3W1_de_test_recovery.py::test_recovery_cancel_issue4613": "df81b0b557644fc7887d3ddbe678e3cc96965777be23c07f5c60d9b0e897aa72", "T3W1_de_test_recovery.py::test_recovery_cancel_number_of_words": "9a414b0e2397133ca8de1c54ad227416e65719cca97f91519f34331ec5efc16f", "T3W1_de_test_recovery.py::test_recovery_slip39_basic": "80cc16e4a75e48f3d9342228edb4c7542c46142834b6340ad93f4460692c87ab", -"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_device": "519fd3d515399e75509ad2b5197457f2415868a19b61d6c729e4ff7483eb0607", -"T3W1_de_test_reset_bip39.py::test_reset_bip39": "93640cf4cd14ebd3d475a2da78eda5df7d1bf122a7be4b9675fd9ba361e90fe0", -"T3W1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "6a916b430f55f9a5693a3c7cac3c882b3ee120b0e9906d189a22b8effecb79fb", -"T3W1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c9d1590f3d473fec2b6231b78061f3abe7b031741208416d3bf9d0677fda5d75", -"T3W1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5cec9ff3a951a40118139b025374c91fb5b736be63b9adfdae8f04c96408eca7", -"T3W1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "150e7f55b9d0f499dc860977e55d80666cdc25878ce548b640fa78af02c7d7b9", +"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_device": "182f8361f1d958826a176b05636207508990e98b3327253de894addfe4979d8f", +"T3W1_de_test_reset_bip39.py::test_reset_bip39": "04f9b5c9f5e8e1eed05b60372cbfeede3208769194429129e44a3837adc75c37", +"T3W1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b49d5816586dc30ee33cb07c02f7cda06d59bb3702ffc3ec4f3b7a49e7b53e8f", +"T3W1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a619423653b6f12564c072d0d9f2eb754d2de4925bc6e1c12e7558a526d54da2", +"T3W1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3bbd69177e6b57d6cd85d5c9037579cc5e2c77bc639959b28efc12ad9c87183f", +"T3W1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "eba8c21cc401c1a2a7cd4bee2b4d695fd3e9ff3f939cce0f153ab04dae35bfcc", "T3W1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d5706a2121b4358c0aefd8ca212a13ff252d53687558ba7323fa4076683b2457", "T3W1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "777da811919a3812a4fdb2b2c416a9aa7508bf749108af8c9fe74182035cb286", "T3W1_en_test_autolock.py::test_autolock_interrupts_passphrase": "08195b8613c12e212fbba1e617832f86a6f52428ca7107df9abb42eab9fc9282", @@ -27675,9 +27675,9 @@ "T3W1_en_test_autolock.py::test_dryrun_enter_word_slowly": "ee7b424d91ad840ea2319a0e6bac492bd3c72237efcaefaceb8e2ebfed1d5c6b", "T3W1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "5e261aa5d39fc750261fadada8d0947167e11b33a3fb754cf595e90a792208db", "T3W1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "04b87b1175d989fe4e1571fffc34264f2920779a4a2213bda500853195321de5", -"T3W1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "fe30522b05aca73aa694a1a9d7d052e4430eb98c3295bcfdd4f397bee8239f27", -"T3W1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ae5458f9fa8da3f5c170c0f4b62fa26be0128b9a3769685225309270f28e2e1d", -"T3W1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3d39adb7d8106b569db560df3d4aeb3e0b96a096b871f7995a32e13c4d062523", +"T3W1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2ab52bb3f2e216f32fdb19dd99002e3cb113ea12032a799111bdb1dd12d5feb7", +"T3W1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4cacd3e8f880a3a05862859fd56d9c253997b1be3fbeca1ee83f2d18649a3dc8", +"T3W1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "dbd40d2076241a53d9dba947804affc53cf3f74920849d374f2ab076e95d2e7b", "T3W1_en_test_lock.py::test_hold_to_lock": "10f50c808d3426e629e6a270f9109ab43285039c8fe524a51e9d3696828684e8", "T3W1_en_test_passphrase_bde.py::test_cycle_through_last_character": "98865c762eebde199762d8a078d289c8de9fa41b3db54d7b6785a0d7f13049b3", "T3W1_en_test_passphrase_bde.py::test_passphrase_click_same_button_many_times": "46e16ffee7e49be2a255b1678f09023adddd9dd09e7f9d19b221e641145ec224", @@ -27713,12 +27713,12 @@ "T3W1_en_test_recovery.py::test_recovery_cancel_issue4613": "f5b14e9a028b1a138701777b06d77a579a19e08cc6838cdbd309a97d87ff1af4", "T3W1_en_test_recovery.py::test_recovery_cancel_number_of_words": "b583edabdaa20b281868bda7842fbb22e9362815ec365a61bd5dddb82e885bd2", "T3W1_en_test_recovery.py::test_recovery_slip39_basic": "1c6071dd0d3990ff691aa7f3e24e79b6a574aaeac5b021b1467e4c3a687be174", -"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_device": "c62f943a6d82e51da6c6baf8e3cdcc3070e1a78797041e4502965d852923e70e", -"T3W1_en_test_reset_bip39.py::test_reset_bip39": "b1bbdcbe11d47ec0d029dcf4a1d6fbb4ab86dcd197778a8132b5204fa1e404ca", -"T3W1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "7792910592968749967a6d2d91d0d1650601922702d0c3170e51bc011127f7f8", -"T3W1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "14a88004fc0866dc1a72b431d91f8a9be76962d6ce989ba8b3137570a4f5ee2c", -"T3W1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0fcab433d2aa469a428ad0c4c9b68838ffe0ea1da594651146afd0b5fe50bf0e", -"T3W1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b6c1294783e360448e055c5a618186fc9d039f3d84c78964662863e2743a8cd2", +"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_device": "d243976a3f429434b819e8542382341dee5f8eaab8c573b46094c95b835496d1", +"T3W1_en_test_reset_bip39.py::test_reset_bip39": "9f0bfc5dd86109632a89680da103cedaa8c0c94ff1263d43effb4d5c3537b5a6", +"T3W1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "fea2caeb09b071e868410493ca54bef8dfcc78158dbc22c2af87e19f62e3911f", +"T3W1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e73c8f18de01862b433c776c46a09f6926642577c6d535bbe04106d7930af63e", +"T3W1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0a681bedfb88bce5610cd2bcc75ae71089aa2d902b5e5f4e6fbb3ddf66f0c0dd", +"T3W1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a376a3dd319b8cde6133961a7759765537bd3a9984a75199177bfef7ff4202c2", "T3W1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3e71918a5805d51cf7ca901934d0455326b9048ca9d609572b930ecc9dc74322", "T3W1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "2b34972e2f18f2728cbb41bca4d6cea708d73feb1d7d6c4ce14abbc264ac9118", "T3W1_es_test_autolock.py::test_autolock_interrupts_passphrase": "d34348a221d6769438e093e188cd28bf8fe1cbb5c4f5ce09d2045aa245e6238e", @@ -27727,9 +27727,9 @@ "T3W1_es_test_autolock.py::test_dryrun_enter_word_slowly": "fff976aae3b9ff53ecbd83e36fc604b5fc2e6f03914b1e470c178db4b71e1e68", "T3W1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "5b38b73307e2e468051da0d46922b31e26e8b29d652b808734ff72dcf59a4ac9", "T3W1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "40ae420c8b94ee24ef3a01989c86fef96122afb2658e2cebe667672066d627e1", -"T3W1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "04759ba60b3fb45aaba81e8fb5dacb17141a476c2dabce1292603f6a98d9830d", -"T3W1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ef761ad6c6ea367dca94e0ef7badd16e95c5e0363fab2ebf4081fdffc775b264", -"T3W1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9f9cbcc485251fb613a23a5777fff4ec76f76f846f7c4b3cd5fdcd40efe9d1d7", +"T3W1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2df8c0b9ea7b12c4cd0792bdb2340bf5da128f216182081ac33fb3ae743d4f5f", +"T3W1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "97330447d0de937488324f0309a4cd1b687cadfd5154f6544299010074d79e33", +"T3W1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "070a540299bb954747e5dfe66956a267ca733689f946d950ee7101010e1ddeb6", "T3W1_es_test_lock.py::test_hold_to_lock": "1d679dd7103982b79005df3308695aed011ea001102a6c46f1c3b91a86bac256", "T3W1_es_test_passphrase_bde.py::test_cycle_through_last_character": "f387de150adbd1add37850cfaa1f2fe56d88f6ddaf9d6854ba81c397a09002ec", "T3W1_es_test_passphrase_bde.py::test_passphrase_click_same_button_many_times": "107118100bd88a563d757b1e179584659e2f4d1842304749cbc795b4a6bf2e7b", @@ -27765,12 +27765,12 @@ "T3W1_es_test_recovery.py::test_recovery_cancel_issue4613": "2fe4c18175b5a6b2be2f7a146ffe25b0f2078911d746490346c2a0c557028ec4", "T3W1_es_test_recovery.py::test_recovery_cancel_number_of_words": "fa7e862f1cd3989763224ab6449e8b71fe5e74139fc2cfef382245645c986753", "T3W1_es_test_recovery.py::test_recovery_slip39_basic": "40997bdcc8800273866dfce53f4a3a73237a2660bd2bf50f3bc8753e2e6ee860", -"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_device": "00647c5cb5200f28c5ed23c072274df49afcd1ca2b996553e58205f34b4f697d", -"T3W1_es_test_reset_bip39.py::test_reset_bip39": "18184ad66eb0fb0deaba160a20798bdf912212e72d4d75e2e6813dbb71536add", -"T3W1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "7dfa2c4620fd21020c24656ec45b8b733b150ff2e30d8b0dcf82d52b473010c7", -"T3W1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3eaf608111cace71bef8a680e0384f650fd13eaff5194a4865de2341f9db738e", -"T3W1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b5e1231a4ea4e667413ed09e940fd89f97d9f693adf7c0718d1a8a4ad6cae706", -"T3W1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a067d13c8d9dec95c44fadfbdfa6b68fd723c03b5c29608e0a5aa68d9b5d4b23", +"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_device": "399b2e4d28ff0ad065fec8e64ccd207dfb2779153fd8e74c58e98c3044cdaddd", +"T3W1_es_test_reset_bip39.py::test_reset_bip39": "d9a773ef072334737b062c8c637bc1ee4c0c09b6bc7cb26775d29fabc66ad9ce", +"T3W1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "8bab4db2ceb6ff74ff96b23b1d5c7281007be461d6211af9cb26bc18b707c96b", +"T3W1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "23478240162097110c8afab26ca4367ac036dc6e91a3fc5c725d3cbb20083022", +"T3W1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "fbca421e6e2c7051c532c6d70935d4b881e66f070d3b16e4c72bf6d884d4e741", +"T3W1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c884f7758b5c8484c118337504c5d74d92b66b4129e542d11b7abbee753c0081", "T3W1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b18ff02c4d0980109d289a87e5222b3dacfc1ccd7612cfb6dbf6d8664bc9ed38", "T3W1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "0f6433bfbe0ff7b975713705cd25d52a1d3f085c14d77ba7657766a4b864e796", "T3W1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "4022ad8b9745e897edc5486d86dc4f7fecc2379cddd980ff0757a37ca139e3bc", @@ -27779,9 +27779,9 @@ "T3W1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "ce6507660bb84cecb664b133c83356cdb7194271ef0d5488925a79ffa56b12e8", "T3W1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "27a6ba770e360f52bd8566dd822cb37d7b2db073e84a45d8468f19f08b252618", "T3W1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "d818a16fcd90cbb8fd598a64a493f381332da5498b8ffd328ff2871899d26d36", -"T3W1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5e2fe7d07caad87614971a9dfd3f868a414ef368a78541a26c669ea3131507ee", -"T3W1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3a5e4b92ed03cb9474bb0636373b75e8d681912bebc359f8aa3d855163c98544", -"T3W1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c35d37890df061c9fb9aae73d5f621ee268ee26f1658e295ef3e53b527166e0e", +"T3W1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a1cca06ad84ae3c88fbaca6e77296f3be1cea3f005f2335eb6510eb84bf48062", +"T3W1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7493148118f836d35cc1cd891d4d992f972ff21b2869d9e23258eaccf45a0cf9", +"T3W1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "11abb770c5e084f441311185a002eca18638f71e086b7befb47ad9b88cf77265", "T3W1_fr_test_lock.py::test_hold_to_lock": "75af5589e8b6de704a28e58a26f68bdb7049ae268086e288fbd9ceb0e706ebee", "T3W1_fr_test_passphrase_bde.py::test_cycle_through_last_character": "7056be020d5d7a27edd9e42551f83c41cbb40830db8b850724d80e8b4f8ae51a", "T3W1_fr_test_passphrase_bde.py::test_passphrase_click_same_button_many_times": "52eacdee240ccda68e5251ed4ee35b0ebff7e741606197f4634daa1fbc35d841", @@ -27817,12 +27817,12 @@ "T3W1_fr_test_recovery.py::test_recovery_cancel_issue4613": "14f9f838da58480fe5b17f448b3a54d75f668145694f02bfbf5f570c3ef3b86e", "T3W1_fr_test_recovery.py::test_recovery_cancel_number_of_words": "e539e9b3412bbc1faad28f1e64461e268fd5e1560830e656b7ab1917e64f8b45", "T3W1_fr_test_recovery.py::test_recovery_slip39_basic": "2d96d06ea54abc074a85b43d474f1a548dbf5f649b9f43183e2bd5ba1d37d763", -"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_device": "a41543b227b1e1b323a12eb03df900c80a1b95c965a82dc34e542fdf9ecb608e", -"T3W1_fr_test_reset_bip39.py::test_reset_bip39": "613a122646f43dd24ae84933a9e28f52b6a7b2abd2dbba9457397a515d22e1eb", -"T3W1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d42cc97af9045a873bc8f8cc54db862184b8208e44447a211d693f669e5fbaa0", -"T3W1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4f81b8eb99c12c603d863904fc31fd366f9021aee6e448773f05ae700331d3fd", -"T3W1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "2e8817aa4ab0d945263cff240d8b03d87f5a8fd3d4d79f6acad6ab302f8c4864", -"T3W1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "23c761357b9c1467f51f8b304c60231a92f456852e547cbcee27b0d98c40684f", +"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_device": "f156fc8eb7a7aeeade9fcebf7d575dd40c26da52ab70dbbca93dedeeb6b36c7d", +"T3W1_fr_test_reset_bip39.py::test_reset_bip39": "aa2a31dd78991011c074608cc32acb4a083a480c45b6bbcb8a53e7edb16488f7", +"T3W1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "65941dc4ad7863dac46dc4975301bbf010e406e7b16d9126b9efbe8b38c70496", +"T3W1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "fff2ec681e30c87ceb38e3851a41b80e428a544fc40c3e8289ec2566e1d726d6", +"T3W1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "cf77212c542082178c21fb38448753641b53726eec531523748e989d245983bf", +"T3W1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "52143eea94ce8cc3567c988d3089a4efab87ac160d4dbbecb5002c379db92f6f", "T3W1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "83194cf21f539ad02ec8227b797cf9a7aea7fff3f2fa374091f798ec9504e4e9", "T3W1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "3c9c77b50ec20c6b321e3ae82bcb9295640bcc2c187ee717b9c86853f2ae634d", "T3W1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "a8414ee96b11574d8d8812f93fd3dd6b7d2d86dab3e0ae97fabb280cf4d000ff", @@ -27831,9 +27831,9 @@ "T3W1_pt_test_autolock.py::test_dryrun_enter_word_slowly": "89dd8e6095acd395733417b032df72e98bdbc75afcf0334610f2be4f1b1d08bd", "T3W1_pt_test_autolock.py::test_dryrun_locks_at_number_of_words": "ed4d958e5e8545dd446f09f992f0be341884e57b7b157a65f0f5cd04e43909a4", "T3W1_pt_test_autolock.py::test_dryrun_locks_at_word_entry": "475df708589940cc2e536eb49a9ffdffff8f219cfbcf3db41627f94f84e632ba", -"T3W1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "45a0d5751692088af2ca521e214eb253e6192687fdd6d7106d1ac072c082ee61", -"T3W1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "04264316f0f0d5e8948958233c5e3898446afcddababe3f0ecc11d530adf3a9b", -"T3W1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "849efb9a6fc5d8f656f95ba9167911dbe3064381d75fef4dc8594f268b7b2bad", +"T3W1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "11879ccdafb0a493e0093361ca9546216ebf7b93ed4f70ac8fbb68e4b3cc52ee", +"T3W1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b2b1282eecdf9b73c1b18065fff6729b70605d5629fc8a516d33c86d22c06413", +"T3W1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b6f62040577dda7a022187618ad3c798b9327f3aa4b661d855b58de167a33c65", "T3W1_pt_test_lock.py::test_hold_to_lock": "d44cde1c695f96bc2cee7e0419313345837eb49dfea3809fb2423e0a28ad5bbe", "T3W1_pt_test_passphrase_bde.py::test_cycle_through_last_character": "a74a6a2afd1a43bf7d0733f08aa4d67ed3cc6f0c688d1412ad63b44a1057afaf", "T3W1_pt_test_passphrase_bde.py::test_passphrase_click_same_button_many_times": "9b7bb1f02f4e536d7e306033c869b128bf91030d37213ef10d20e4ac7dcab8c7", @@ -27869,12 +27869,12 @@ "T3W1_pt_test_recovery.py::test_recovery_cancel_issue4613": "a2dd37c0654830fe55948e8f4ade90237322fa139f1b510e0c96c3a7a6c3b2e2", "T3W1_pt_test_recovery.py::test_recovery_cancel_number_of_words": "84a4befa038dc4d3451af7bc6e894086f5ad3893e9e1cf4c9676c901bf103a2c", "T3W1_pt_test_recovery.py::test_recovery_slip39_basic": "23af96d1578b75863eeb2fd3d7e0b139f5bf118f90b25d34aef3dcc90169ff3b", -"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_device": "e76f23aff235b3f147fb88b1058a120fd3cfa4fc5e88bceaaa1c9e9088c23f10", -"T3W1_pt_test_reset_bip39.py::test_reset_bip39": "4e97352c41f73c8bfb47b118a0626ca49ace9d4469a90976dd122932a3167a57", -"T3W1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3d8ff981e8c9b56653794c062db2fcf81b9e2bf82f4e4621ce927ed382d1bf18", -"T3W1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8a829ba7ea42f8c9692a13c42b76294a7da4c5470fd3a8182d2fed3187e4b8fd", -"T3W1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d6037f5c41f0e45cbe6c3761e8ff32ba4b475a243bdf0b8a0abba211cd4f32f4", -"T3W1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e90a84c0999e40afbcf6366f014e0f0f8248f5aea833ea292551ac0a09a0e705" +"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_device": "1ca72dfdb62cb345c0ade6709d2a9f83d034d24f91a5d8fd48ab4035c07876be", +"T3W1_pt_test_reset_bip39.py::test_reset_bip39": "57b2ea5ffd339077eb19be64e71e5f96fe16b4ca4d634c83651fb61d61e57f4a", +"T3W1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5dc4cd4f7d99f583df34107edf20c4df15d77b10c4f02d09de0e303770820ae5", +"T3W1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4935f8acf8858685bdd5ac614cbb0c809b9b9107206f56445d7533f0c35a9b40", +"T3W1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6667a2a1c7e2f59c5d76f8a72db465591b5d6ca427424a982a3e70d6993c2757", +"T3W1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "61901717464e56a6684b2f2428e5e4dc29a6600e789ad64e886eee70a021b108" }, "device_tests": { "T3W1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "a47294c28316c9342d3d553d437cac8a781ab2828e2ddd6e6d29020ff6ca21d5", @@ -28943,28 +28943,28 @@ "T3W1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "053df2541558e26c754c391331483b571f18b45b37e78895c3e0cb6db4382eaf", "T3W1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "249f55db69bdb54743b0210d24a6b53fe459ceff0995b5ea45d3fa58f1116e66", "T3W1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a0123b8a7792634988b69dee0b7d0e1de64936096c86bf27e6285e7b2daabd6c", -"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "c3e8646834945f6c47a32548ef2049e609c10fe14c1978a4a4729f38624e1fe5", -"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "d77b7de2df6218279dab43fc52bd8010aa91fea96284b33943f6d8b098de6551", -"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9302a9140490d771cc991d86e9c4237da85f575f1dee7366a0935cde64b93aab", -"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "79ee494cab5e1f14e2e2be514884e1d5b350290b92b1f142781fbcab1b2d2f76", -"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "8ba056f794022141853518d5e75073587722eb1ac5dfb2e0676fb5b1b55d133e", -"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "3fba8dbdbed72982b327edfded0b82a395cad6e1105b7d4bf6e9c4ddf24db243", +"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a7286aa4b32ba1ff6df8930abc68d628dba537bd97df793071bfa31bcc0c905c", +"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6ddcfc85507d1fd4206d1b3e4956a884c405e390e4154473e1387d268a78014b", +"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "15a88211add4e3612ac3bced479b8f5773353f2520f9ae0fb9fbc90bbb74b926", +"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "c3b20b6ed212d14927723dbec06820bf18c9e214f5db75d938bcbe6279990750", +"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "97b7a4b3b3d8cc07358005809c3657abea9532e97b3ad820724b2b2581063b14", +"T3W1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fd59c1a12132c495c214df5f5ba6166a71ce85fbc82f458294769b0a20a0e2ed", "T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a91b2ef93e22407126f6b154760efe9865c0eb94ca3ed8cd11c60815f8d845e4", "T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "0f1be8b49aa09d308846b49dc3d551222340afd5ab35a672d408d235d5011014", "T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "140707c6fec24014cf2c9b4c65ee97ad2860956491b50200802224ab8ac37d00", "T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "0f1be8b49aa09d308846b49dc3d551222340afd5ab35a672d408d235d5011014", -"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "16087c96670f749f409281cedd256b503f1722dfceef0fb8b4b2943b6d389717", -"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "623d9f6411bfd8f800dd55eb8ac5653f3077dcfa90e4a5c828f3d0e832abf314", -"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "b2129a0e7e639e8e69413433e30e641a31c28b37ec4e0480f75b15918ba37235", -"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "a7c749db24d313b6e8019e28698ad6dd837fa71ba3a0a48b71f7a983e9db39a5", -"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "907a0729d04473fc572c788278eb08ffd7828ee88a62da398b8cf8f59884b6d5", -"T3W1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b66c76520cc4603f6307059c26757b82f8afae18bcefbc8760ad3b494015c2bd", -"T3W1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d7f933c429883046e0429b0c4bf872b6483433e456fcdc56ea47116063d5c47a", -"T3W1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3097e3c6adef2336fd938d84eea42b62afb080836ee8f54d21de731e64319a4d", -"T3W1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "58cb1064e4e25425c601c38247e754bcc7166d40a8e8f91614d258753f2181d9", -"T3W1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "620da87668c0920b4b70a1693c063428e2031e84eb4e2e7449c90e740f9b7704", -"T3W1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "75b1c4eb434e3aa6e7c430b55c894fcdf2b9417250e7eaf3a2eb4997cb8ccda9", -"T3W1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "45547ea60a851f9c63fada61cbf0c919addbe8e480967e1ed002b15d80e16f67", +"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1ef13c5542953fa1e44d1a48909728e6b0f830d693a33d1ef9403c4c6f7ca4fe", +"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "a3e43d8f9ad6ffc39ddfc230a25b85d2a7ac98021dcf6c9a826160cf2f5e9bd1", +"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0a3e1e6228b16819004230343b7480272f58e7fcef36dca1485434b0c98bb305", +"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "8ce37033332250b32a3c4cf3a01f529cacca75582a9847ad1993d527c08c49e8", +"T3W1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1dbd96fc7ff562232dffe92ce27aa62992baf186fcca5f7305b9ca06d5c04c3b", +"T3W1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "78e85839b28de25a8e9db9779c3ff5ae9c839851ec9296a7be5521ad086f8665", +"T3W1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b73297224c507ae1e2de79488328504fff8fc0651f055d93486274ea6304f518", +"T3W1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "60b4ec460fe0a93cc4b51f3cf80fc262e5f342b49b921202e5c5991f684dd236", +"T3W1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1c662e16104ce7901f09ae3095beee480b15484f8fca93c0f105fe8305788afd", +"T3W1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4168495e5469d7d908d34f91c6e3b27c153f8c6f8b5f3161eca68c52260486e1", +"T3W1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9f2dec26b8c270b0513b73fdface1d9702dfdc678e34addf4c79657fd315abf9", +"T3W1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "cd5a0438118297d328048802de5e8e47e33e52146d8527d47a564c80a17eb033", "T3W1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "128131d91db0348bd0601b4febf4132c36f9d1e7a958733b54c25c8447456586", "T3W1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "03081ba4dfdfdb3ddcebc3941500dd66f35fd01641e8287d1cc4203a8b4d1e02", "T3W1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46fb78e19f23830dafe1e8b8be1c26b3069d0d22a6eb15e9de45525618b68a26", @@ -29186,16 +29186,16 @@ "T3W1_cs_test_msg_applysettings.py::test_experimental_features": "21054b9ca1ef2254fb19946689e5226e20acceddf178d40d4214b7d410b89d0c", "T3W1_cs_test_msg_applysettings.py::test_label_too_long": "a91b2ef93e22407126f6b154760efe9865c0eb94ca3ed8cd11c60815f8d845e4", "T3W1_cs_test_msg_applysettings.py::test_safety_checks": "55c527b2242196b1264f96d459e6cd1db60f1d81e953dfefb7ca7b850866beb6", -"T3W1_cs_test_msg_backup_device.py::test_backup_bip39": "9d06012ddc8a7753cd680bb0bf9dc86901effcacced5bac827a328f4bba19432", -"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ea722eb19312f05ad858abc295a7b1c708b368b84b3005c12d07ab94a795d6e0", -"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "647d917c07bda11763f95715c5c3f89956cf4eff58f98cf8780844a97823c690", -"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "bb1fa982651847d32a959a27251aef661e1d8975acb0bf05bcac27850e43240f", -"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "3f3422c62e8b5bbe891573457e63171f91d617d1c4c708a4adace64f885bfbab", -"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "1fc8845670a5f96638d41f83262de63988b16c3cbd55e2019cb0c1c597e401c9", -"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "5fb6441a1c235e0e4ed7031f5c4c46d570cad3b02a81b7eef901385e32596dbd", -"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a37d6c5549e81124761cac189d7166ee1d03b05c94d76bd16b42a9b1aa3c9784", -"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_single": "f742bb2ada3cb2d779932eec15f8d5a88295fcc8a898f9f07be948ecf2d5e20d", -"T3W1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3a177293229657ce684d9a53a2b0a3375f9e1991cdeb3e269859447249760b81", +"T3W1_cs_test_msg_backup_device.py::test_backup_bip39": "d8150a4101fd800a896e769dd9bee6be072e061883245cf4d44a27697e5c68f2", +"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "c5c3bee06077d13d964987b236be04c98f30fef4341eaa393c3490f5aff833e5", +"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6f6b370f1c7ffc902b29b2767bb4fa1c224267ef090bff4711d48bdf51eb488f", +"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "dfd52601b51aca0fdbebbef9bb0f9b374f8eb3bade710d211815367b7dece099", +"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "db295f74269215e3aa1c81da4e1d62e9ebb3c1410ddccef1fe6737ef8a2dda38", +"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "747149674bdbc4c0857d09023f0a7ff2eb3e81cda5208fbd8a20caaded720351", +"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "381959e153fcffe880d0b7fc91bb5a4a423a30181950a3b9a8f8296ee55d35d4", +"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a720f151fe028c4fe6adfd36e998baa66060362940e063b84d8a3892400c3bee", +"T3W1_cs_test_msg_backup_device.py::test_backup_slip39_single": "eb51fca78dbc076d5c3f68ce3f97e9d9e7406fd0446c780b15947af290eab44d", +"T3W1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "f3eb2a03a33124ecc2f7967bba89b464154132521153d6fdc799a3359a7181da", "T3W1_cs_test_msg_backup_device.py::test_no_backup_fails": "c4a5b395a704f5975717e04becd0fb30769175b07bbfac06e892d8e7e78755c2", "T3W1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "e940c79fcaf313331ab69bff217be6ff623e7045f366edb948e878608f7f5126", "T3W1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "70a3b8f172c16c1be7c9163a8b5879a628a53e5820c8c8f144a667fbab22e630", @@ -29240,10 +29240,10 @@ "T3W1_cs_test_protection_levels.py::test_unlocked": "917cdee89b925b2ddca5dad0c6b89f5339a4a04d369d56200746de56f2272ce8", "T3W1_cs_test_protection_levels.py::test_verify_message_t2": "55acb687e6ae811ec6d21ef1dcce9c093c0795cb3fbbf5a4f4274e35af68daa6", "T3W1_cs_test_protection_levels.py::test_wipe_device": "5fd062b40d63d553302245f84e70ba0165edf12821badb91d10025ff099d64e4", -"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_host": "e1305dc6ed6960ed9b1dfd5f0713992f58ee448a73a207743b71fd1478911bc8", -"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "ce14745d30b3a57ae3770bc6d1ee287d096adc17aa4bacaa4649fca4a691540d", -"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "ce14745d30b3a57ae3770bc6d1ee287d096adc17aa4bacaa4649fca4a691540d", -"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "d8ca907d1e1853c2b54ff71ff4a55e8661b862ea8587a3de544a508343e18726", +"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_host": "ded37e505a5f6344edc65f70e89b9e8144681804929e5cb14d3c377db3d4b1db", +"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "dd973861384fab47fc15872bae752584c8cfac0666908641f5b7bd029c75e828", +"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "dd973861384fab47fc15872bae752584c8cfac0666908641f5b7bd029c75e828", +"T3W1_cs_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "a88e51e6c9dac7524f342c1987da188f2a0aa15c518d1469b402b196b6f4e403", "T3W1_cs_test_session.py::test_cannot_resume_ended_session": "a91b2ef93e22407126f6b154760efe9865c0eb94ca3ed8cd11c60815f8d845e4", "T3W1_cs_test_session.py::test_clear_session": "26e49edec1154677c091d57784ad4757e0edb32e4a17babce496502e0234f800", "T3W1_cs_test_session.py::test_derive_cardano_empty_session": "a91b2ef93e22407126f6b154760efe9865c0eb94ca3ed8cd11c60815f8d845e4", @@ -30359,28 +30359,28 @@ "T3W1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b2268ac1cf8d9e9109d7272f570e7d0eac6f30da0c2bff31d5f5a065b5a508cc", "T3W1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "87c1539b71113d03f51de13bbd28819734933efca0c580c8f6ff514297ae2be5", "T3W1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "687651be310944c6def28f87f616f22b49847651495b71942c5eeaaa432ecbc2", -"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "17c979d580c905be939a1ba474be2f54f9ec4c164bd62a2fe70bbe980a811173", -"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "a4e5e20089d37e58e0cf18cf795baa065cde13c8c42fea8fe594828912ec4784", -"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "517945600867b4793d1fb6848fccda863a88cbd18c5326d2743589b4ac7f0d71", -"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "efb5f75ec98493d9d49ab68299085357cf81c1f55c0112933d9a8dda0ffb03e6", -"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b8294e62bf9041bec298627430336a897fee1098a03b7d7c9572e7c59d733786", -"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "c6abb1b0effa44fdb80016b820f424fea0559a4eadf150aab9edcd59d5fee1a6", +"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "b6e2d8e305fc75df98c5f2a1531672fa1a8cb2b9b5f72374d6b1e97783ee5153", +"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "87b003d5921120552c0b99bea52157c85ce0aa4d495cefdedb7a08958dc1cec3", +"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "3c8096ab6a23ca594974d6c2100836c5cf3d1f87f0190efbf14a8d9aa041ab86", +"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "45b9444c4c6c9d1f2bcf91c6077cdeb2b367d6b499879f2619878746b034d290", +"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "767f8a7140bc0ad91918854e32debec550322f7fd6db1d66faa8b606e279252a", +"T3W1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "850a9d7b2b1f1e595b03586148761a713a03b80da7417f31666452e8d2598f23", "T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c402aebce59d93f939380d41fc13fa05f99020f2f5ce4acbeb3ae8f58beabdc0", "T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "8f64cf672c1edc6b82f0f5e850a45bd0c3c32b1ef5307c13c8c9c6016536dcb7", "T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "981bce11231a9c8e9c41d24283996bdcfa90922e40d11f7c1a5b47be095ff4d3", "T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "8f64cf672c1edc6b82f0f5e850a45bd0c3c32b1ef5307c13c8c9c6016536dcb7", -"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "965573193f6c5e8385a6cd5f4954f140fbaf52bc77c2547dc370d70ae5f7d493", -"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "6a721ec166b6f289f009844159740669f35357bcb7c513da7c500e70d4228b10", -"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "61dfdbdcd1ccfb71f131ac313836276ea8ff48dfb64a4da5c6c88314fdb550eb", -"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "6f1918e64aa42047549bd2f12a8ccf13dd087d3c692270d845eb80c5c3a4a334", -"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e4af87e6dcabf5b8418bad43822f0d0a3aaceb46bc2223b7184ac1017504bfe6", -"T3W1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c7c51674a237dfe0a72be2baae9d9c3962d76111fb4ae13950cedfba02694eb8", -"T3W1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b6aafbe1584e127fabc2fe849b41728521b8e3753ee067bad892ed934646d262", -"T3W1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0a3d13a5af289fd398c06225f9311d0dc284911392e400cc1c15b9d2ab2dd60f", -"T3W1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d89afab86ac5679b5bef75c72a78dfbb1fbf738491d0fc22b1c37821c78fcad5", -"T3W1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "bee4db1e0aceb57183d75144f94d0217d7e999e43e5b6c111b24fd03670e8266", -"T3W1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eb9acb840d381aad52d11a712c72ee247c799bc9e89af6b427d6d831680c71d4", -"T3W1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "be14823a6ce7a0f7957c66ea49ed30c295a1afbfb4f095b9683f518d6c75d520", +"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8a444d79a09a16aa9ffbdd62ad1cfeb1b1173f59a0b5ebdca3fa903c8947035c", +"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9d5d62e67d460e15ee7d9d9ed63bfe12f7ed2d07e32123f818123ade351dec82", +"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ade7648881c9850a9bbeb7cf941162013a4d09dbc240309cf84d57a3d70796d0", +"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "b7b5c1839069423e576ab6977e8b646be593610dea1d07683a98ecd873cdd75d", +"T3W1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "515f31ee2bbac79ebf89df65a26538c3d95e971f19a6e1ff78957b930d695444", +"T3W1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2a00dad7b45179a430d2eb31b3350d6706caab17d2de240a342027a232e7adaf", +"T3W1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "3c85544a3a74bf989e991c65ccf5ce7f62dd81ad28fe07eb46e02692c08af510", +"T3W1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f083373709992999021f0fc886943b68323f478c7aa4adb0d905ff0f39590971", +"T3W1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "043165e3b2f9f5d3bee50868969b7b18caad3d09a17bccdf9c7a5caaa0fc3338", +"T3W1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5b4d4b08b4e35807fe810207aca5fbf1875a22ec58dbd3355d045d584822a94d", +"T3W1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4a21b5c5c593b369a57c19ba14639cadd8320dfe1592fc1e1bdea97191a27fca", +"T3W1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "027059f272d9b98ae55a2b3ae40e3f4a0184b11a9557375eb6bd37ef02364e07", "T3W1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "60188b32c4b4909d561dcdda18d308f578b380d0ee64de84bf24f4e51cd2b90e", "T3W1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ed475df334a295d9254d30d0d92259e81cf0c52b1f539e80e329c6cbcbb71b22", "T3W1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "598136704cfffc4dac51fef6e41bad604c07a6f45421392573dce552a5dad92c", @@ -30602,16 +30602,16 @@ "T3W1_de_test_msg_applysettings.py::test_experimental_features": "d2080ce74afa3133318c74851a241440ee76217da0a283651aab934961a63f36", "T3W1_de_test_msg_applysettings.py::test_label_too_long": "c402aebce59d93f939380d41fc13fa05f99020f2f5ce4acbeb3ae8f58beabdc0", "T3W1_de_test_msg_applysettings.py::test_safety_checks": "e17aae57bf45059d0f65c96de640988ef7e88f2b1afc0a8ee33e9a3789969e03", -"T3W1_de_test_msg_backup_device.py::test_backup_bip39": "e3e7f5656bbd135b9cd2e110192da59e5e52f4e17b18af8efcf98d6ab81d0a1b", -"T3W1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e71cb5b7132bbfe1d5334aab78c1af6660e2307fd360c70342d400b5572d16ff", -"T3W1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "57510a2d2e488e5408426c287220f136e6247be327b4d53a0a71c8224a0648f5", -"T3W1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "532745c866a71c647a41ede3b7f1757de9944722d25602d79eafd7ed2c320d4e", -"T3W1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d16b76b47b8478240d360198f706a339ca4d0a3a0764967e66088d1851d55f81", -"T3W1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6201029245d5e960e12a67ab55b2148da6217064390d1639cd6cf21d7000b555", -"T3W1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "d0f457b802eeec0d2edb94013b7ecf7f53a03b518a4d1ab610b8df441616412d", -"T3W1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fbd5f2404e0e3b2170823cf03b638a55d00fc7f173eb5560f4059a32614036f6", -"T3W1_de_test_msg_backup_device.py::test_backup_slip39_single": "172780772e86d3d0ef95fbf699634ef8ed491157e592aade5ecbbc0f5f3f5e30", -"T3W1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "811e10247c7c726db61caa761545da2f42f7a0c549339eff5187148241468545", +"T3W1_de_test_msg_backup_device.py::test_backup_bip39": "397abd2dbe1cebba98c1bffc9352ba085bbf2d6d490dc6d7e393b9a91ed73217", +"T3W1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "937cbeedd5ed8bf0f68840998330305680580d0a59932ad7864380f05a6932a6", +"T3W1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "d822c749b2f7ba31bddce3d845bc1e557248941372edb2547ae24faab50bc6a5", +"T3W1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "3b823d26c5456e20251763d58e4d4997d16ce839dfaf0165ef0f389cf9349f0e", +"T3W1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "df535c0b3e6da5078a0d30ba3457fb325020767e6453a29fe9729062de5964b5", +"T3W1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a585e838bf4ed45e75e5eb88a9f9cb0bfb01faefa533e9ee123a8d178a6c8c00", +"T3W1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "d09d8f322e4301a7a43574d7cfb614883f6832a15e21cd969233e48dab6874d3", +"T3W1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "90aeb208ee708c62b3c0533495071beebe27fc1535fe2221f59298d786459fdb", +"T3W1_de_test_msg_backup_device.py::test_backup_slip39_single": "4912c37272a836eb6033ac46b2f0c8ff3173a352a6e0999a84981668f97d17fb", +"T3W1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "2d1442547aaf50051ca8be5c96a9228bc029629628984f58f1e2f4eb110f85c1", "T3W1_de_test_msg_backup_device.py::test_no_backup_fails": "2b68a2db193a449cd36f2e8f38973a7fd78b2e377fbb484e70cf5f73ac91468b", "T3W1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "36a8a5b1ce1f0fe32a93c9fe4bcdce38d1a4051da77dc17d53ee325c4e617a71", "T3W1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "274ccc7c0450ea959af0db806540520b28c2eb5528db1a258cfa8a7324f52886", @@ -30656,10 +30656,10 @@ "T3W1_de_test_protection_levels.py::test_unlocked": "72bb2d90e446dfd4a4daac695c5c3681c134deb2071c708bc6b1ed2508fe4e92", "T3W1_de_test_protection_levels.py::test_verify_message_t2": "1032c8b05a6c5d35ea5303648b1119b60982498db2e8172ea86599a9412aa43d", "T3W1_de_test_protection_levels.py::test_wipe_device": "353e99af6bf7b37e4fc3bcdac6b91e3a349dbf450af2c83a5d08a8980d946ad4", -"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_host": "688b15ab26a04fbb188757b34c0bdb9e76240dd17bcb950affadb45af13b95d4", -"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "f20659300b6436f912e7d2071010550c42b49c1475da0bfad9af83f03149cbc8", -"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "f20659300b6436f912e7d2071010550c42b49c1475da0bfad9af83f03149cbc8", -"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "82ad4123f0bfc635c49461452c5cbbcd254204ed016877cdf523f7754d6b5349", +"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_host": "8bcfe5c45bc6556de4c1e3ca106243ae1a58d7f9e8f0c77a6f3f8d54459ceaf6", +"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "87b611e0f8e96fdd840f19fd26d590e2eca796fa4909e86037073df2c1beca40", +"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "87b611e0f8e96fdd840f19fd26d590e2eca796fa4909e86037073df2c1beca40", +"T3W1_de_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "a6010406dc3c8ee1dc690b7b0319e0878bb4d6bad6feac4cdef01cd44d368b26", "T3W1_de_test_session.py::test_cannot_resume_ended_session": "c402aebce59d93f939380d41fc13fa05f99020f2f5ce4acbeb3ae8f58beabdc0", "T3W1_de_test_session.py::test_clear_session": "f866125e50794a509ee2eeada38e5e0056fddbd3770ff9f3643ff7a2ba4a1b3b", "T3W1_de_test_session.py::test_derive_cardano_empty_session": "c402aebce59d93f939380d41fc13fa05f99020f2f5ce4acbeb3ae8f58beabdc0", @@ -31747,16 +31747,16 @@ "T3W1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "db6e9328a84ba55bf764ddbd80ec4f7db7e1be75b002fff2622beb2d14b7c515", "T3W1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "92e9f2891e0219c782c73646ff4167df18978a994eb949e84c751d5a52311ef1", "T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3d0821255f85264dfdb3670c70a6d8a6ae906d9ef2ced9155d676d337767a5a3", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e0c981b39af3210f604a276c22e4add495622bc48fbe3681c5096cb00f875bce", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b7d0b1c7e1b355787e5be93fb408a3e64ea3253997bfbce8f7170d25875c335a", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8580d82b562b66b2c5f3e070a5b6592f52f806230c4390546157c722e0d3d91f", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "571105f469b752158c5659802f1f4ad13169e2c1dc6ddf5204ae751a46f6f594", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "4aeba47a7033d3d2f38a8f1a4b98baf5cdc9a65d2c9c144e16abf5953e6644c1", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "58cb4e3bdba60af0cf40eac8a2a2c8092b9bcb556a01b8f39764c6d1d444adee", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "81764af22d98dbfbdaa2607a09297a5f0ab15d4aac74a89edea40018d8a6f195", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "11c77e5cd6dc578a73f3fc54c4bd6d2dc69e0d2707bb407e82c4e594b84317d1", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "b59c50c1844110830efd46406eb253b0c12394af7832f680ecd5b5061301dc53", -"T3W1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "2a74555c4a9061dbc79cc73cfac0cc1beb6addd62e5430b659ba8e75a98f3872", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "4351f10d665c81bdc9c501f2b7e5ee5ae210972590bb685da2b068a4249a597f", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "2c10cb6186196836e1c32289746ba636ad53e24c51334e3138723cf7bc417cfe", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "860843043a540dfa9531c99c0c80146a65a06c1d6355c542d8d8b19c82cfda40", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "a9a86075031f3c9426ef61874e6699125e1dae2399a11795842959680e3de766", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "800293641bfaf73760b6c224b8899e70b23a19ce353369a5dc6e9ea23f94de46", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e7418501894d1ec1086ad4b0822b11ff505f42668b7bf91aa074d73da5e5fd9d", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "7f76e0ab808437d5aba3e3588ff4c5328125d85dc263d1e17328d1a6c60f8afe", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "9660b32740e49db5149495a70052a7be1325b156a74f81b424f2aca0e76de1e2", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "abed2cddbdee564d35765b670a55b965d4bc67c1646449c1bf77d60ff40d60f8", +"T3W1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "12e77cab5d71d28d8dc7bab3b4ec1e51bbcc70bab901da41317788c9f5778975", "T3W1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "0d5583a25d1b0de062d1b2deef7d14567c401b06a412e557f1c5044676f0a6f0", "T3W1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3d0821255f85264dfdb3670c70a6d8a6ae906d9ef2ced9155d676d337767a5a3", "T3W1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "a024ae2f1c275249f11e9a22a75b8812affb364d67df33819be6f9f567b3d2b6", @@ -31775,28 +31775,28 @@ "T3W1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3428c344c9e4a2112eb91bf53caec8a4543309f797d6bb7579d598135778af8d", "T3W1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "3d16d97b2cc79a26f94470de61f3049f5358d9a8c268bca111f04462212fa31b", "T3W1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "70d9badd1a6b3ad72cfe3ea9d22149741d1f9d3d1c457d1150d1e5c286eee2ff", -"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "40e0838ac31377a01092aba255b5560d034b1614191967ef9081bd9fc928f548", -"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "26444920eb4392c436933957776b60dcd4875060950e7c27688d43663d754952", -"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "cbc39a24f1a15a92d401032f3971dcbd652e4e46407e48729361464babab55c8", -"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "3161fa3f6a605e73ea78dcc8e57c823a31ce1f3e37c5c22d00d4dba175fe960d", -"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "20507680e9df9ef9777566ebf0525d1bb7a3f8adcfcab77aa1ad9e04856ffc86", -"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "e841d47f1f6b8585ca6c2ea298667115b4ec79f852e9df09b7782ad41e7a2c34", +"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "da3884ebd6e643048cc4d9c57a40dd45334c80013ee88db26350aae1b51a42f0", +"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7bb823807eb7868c9ccdae467a0129ecef338edeeeb8eeaf67f4066d88530418", +"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "43845403dc08a4379c9f7b082720a272b03c3d61161c6611e119eccd60b8f9f0", +"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6313bd479f5fb76cf123ead57d855ef916a7a4c3a0ecdbcadbfbc7127a7f9503", +"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c203b4908a8e599b07f8ec3295b43eb87d4505ace65582eb6d81fe631d68ab18", +"T3W1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b44973c3b8bd43e06ccff4877d2873b639ecabaf696f324eac16f4befaeddb49", "T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a5bf877c22babe3784771f360eeb5b2b8c448b17e12d0a915479f968247010ed", "T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "549cf4496b320be9d1d2d048d1b85d91555ce441886b42b95394e98c65b19d13", "T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6aef0e671962593340a2e5e05495193ab2c90ccabe56cd5f7643bdc791a3a839", "T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "549cf4496b320be9d1d2d048d1b85d91555ce441886b42b95394e98c65b19d13", -"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "981e1c956f18d665dd8c88cfbf073b980685060b15c75c6f2ebb2383770a6c5d", -"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "5479c6c0ab7f3d0c9e6c826cb1602ef2e0057119c305f4dda1887c5802299c2e", -"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e82965c40a29f87ac3320c4c9e21a55e4110dff894f44d4bb16383f953402a61", -"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "f8f761ae777b30cd08aa5edb570ea1ad5a26730110d42ec755dcfcf001e0bc84", -"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ddd0df313a8322a3f30124c9c8d78f077e81a26fd1fad2910c9e10f148a62897", -"T3W1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c410cdf3b362059ccbff7bb31f37951e4adf2ed08921a2c3e6febdf40340851a", -"T3W1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "939e41c50a757152f24ab2ec10ff6481007ae6c77debeb4500bfb5e2b8f6ecd8", -"T3W1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f8ce5156b9400d06a15242033f3db05ec80709bb783e60ae13dd13cfdfcd376f", -"T3W1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fba410253b23502b60747f1a1a9e9c0d78f7378b7fc4f15d606b4d24f32f780e", -"T3W1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0441ea792a13b6e8a29c05e3950a115461494fd892e102d4c1878cbf7af2acfe", -"T3W1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "95c1c1679b735ed74045595f2fc1a62d57090ab17eef419f45d6a4ce1a813417", -"T3W1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "e2de88b01ef596a6aa9865bc1e98f1e149da4b1626437f8325b8a6c9966cf68e", +"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "28210ba41db2b115bb3b1b0fcaa7e7e46cb3c92a3728936d71a06dc459046405", +"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "71314e194c0d6e8dbf4d57bf4732d9077cda12c4d5b5e249728b827d01fca8b1", +"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "cc6c34f3edbebb9f1806ee2009b79f07c4efe0590bd1135fe930ebda32599854", +"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "9ff700bd7576a80062ff12293fdb4cb34ce627b0ac341e56bd3d17d2c4505639", +"T3W1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8458c64a599ed45649d644ed1daa19429b58a8f8c4c6a9a240d6d17e1a294511", +"T3W1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "9e0e2b4691b8ee1cb546bae2f5975dff52a8cab01eca280de54b5e4447f6b35f", +"T3W1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7f1409fa7ca3a34f125b2fbe2ef2ce71ff31a8871d26a61616e6d8700ce8bec1", +"T3W1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d714621fd288f42d19abc897fca0e6f2189648ac960456202563bb4d81a2fbe9", +"T3W1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "35f2e5b99c01a08cb492807f6a3990e3e7fdb0448095a006ea0e6acad976c57d", +"T3W1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "70e34bbcb06c197f1661e5235cf1cc2f775b36c5e9e67707f29600343f231859", +"T3W1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "5e2a59a4c33a70db5e19b7fab41c0c1f6da2680a72f886b1576a02d59ec780c5", +"T3W1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "0c0acb1d087037dcb6d6bd43cec1b17001ea33a129680e78a90e11d4ba120990", "T3W1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "0daeefcaf04578b8d262bb473ac0f30ad20731510acea365d31048c157033001", "T3W1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1969fbba856658422634d7a9ca30763cc8c12ebd434864c6bcea85103069d393", "T3W1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a24abd6831a5b5ee01266a03e4d0df296f1f0910afe01d98d7329f31410338ad", @@ -32018,16 +32018,16 @@ "T3W1_en_test_msg_applysettings.py::test_experimental_features": "fa828cc31dc5b3129ff988a4c940540babba21b8914546583ae60a1a45c2e3d9", "T3W1_en_test_msg_applysettings.py::test_label_too_long": "a5bf877c22babe3784771f360eeb5b2b8c448b17e12d0a915479f968247010ed", "T3W1_en_test_msg_applysettings.py::test_safety_checks": "c84ca0796e07190d593fb2b7232a4553a34b3b154512ee682e48a3a938e9d143", -"T3W1_en_test_msg_backup_device.py::test_backup_bip39": "00cd772d1ce524af149b2ceb458f439d3d92237c0e078785e0b2254117ae5b49", -"T3W1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "d85befcfff47bc897be612de791362c9758a2b9b9786b72961e43e1069692c04", -"T3W1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "72ecee309c3f48587eb5e6609798678fb72cb80fe512b0c3535b6fdb36c69174", -"T3W1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ff62e6e159ba7ab5bb0250f7b9cded9c58f9bfd438cc14bf230446c5332f6a5d", -"T3W1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "29c377b53ca8367e10d8b3e40ff12cf9eb81a9ce7c25a17850f4d0365dfdf951", -"T3W1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "cfb5af3514c6290d299cb5f0e2994ff60aa8f1b1011943061e4c6d2afe21afee", -"T3W1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1e14f27c0fef49bd86f4db21d6c0fc1b7f6467a753b010bc072efb195a20fb60", -"T3W1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "70c356e7418114e9c9a472c4ade9f1c2578adb1b2b5df1065725c0dbc88d9fcf", -"T3W1_en_test_msg_backup_device.py::test_backup_slip39_single": "7cd7fa10a8635022bfb4117d634a7620e88d25943f2f726e4131e517f1606730", -"T3W1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "965793ab34d9094c2381148c2832f4982057b32edf08ed74d49f6c6ebb9d3fc8", +"T3W1_en_test_msg_backup_device.py::test_backup_bip39": "704ebcaa91b9fc15ad885f1aa42ed259fa2609942d0285ee48a3645041aa416e", +"T3W1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "54c6e3446343141a5485bc2fca3765d7a4717f2e2babc1057fc4c004846376c6", +"T3W1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0c8098ec93867f8c84baeae941cd238f2fe59a41cb65b2f122278709cebbd7fb", +"T3W1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "79b62b52b98fb0e68f8d2219cbef1892432daab71b7f5a4f0ecbe9675ebda0bd", +"T3W1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "81743cf6c2bb25ba82239298c084efda5696c2c150015754d3585fc479bdda16", +"T3W1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e689cc697cd7f906933de31e75f533ce267371c6592ef1a21fbc55d25e7d4e6e", +"T3W1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "f12a7b17a5f1755da55bbf6adb24a73b9efba696355302090ee84bed48d0eb3a", +"T3W1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "4b7cea968e60f9ed91979c93e59db01d2e60d58ff85e386a1f0d42bf25580fd8", +"T3W1_en_test_msg_backup_device.py::test_backup_slip39_single": "26b7ce3e0bb0f352f99369726fdd8c67631dc90a2da1d454a78a7950e3f4f6b9", +"T3W1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1d4a4e04658ea7456ca4dbb074aac4bef7b561b479b5d729dcb9f288b67328a4", "T3W1_en_test_msg_backup_device.py::test_no_backup_fails": "532530f26e9be560cb12ab1bd4e2f2df74659ccb7f233459990225c757edbfc5", "T3W1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "e83e8b237e129bc392d32f4cf6e4d2df0a860ecd1ee44c4d661adc86966a5d6c", "T3W1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9a799f5a1f24b17165ff5fe83272b96eec80cccc14d9cbd25481d265c28a2025", @@ -32072,10 +32072,10 @@ "T3W1_en_test_protection_levels.py::test_unlocked": "b32d6747946a8c34a450efad896f1a782b1156e8034b6b1f2bd8407e9afd265b", "T3W1_en_test_protection_levels.py::test_verify_message_t2": "90ba3f475bc1a19333d10d93ebf71ee118c88be16c6551a479edc2d31e03389a", "T3W1_en_test_protection_levels.py::test_wipe_device": "651354cda05fbf9967090e489998d9fb730c2bcaf15ba47eadbaa7d486b9e178", -"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_host": "07e217e296d5aa4200448562c577a17e9486d114d358fe780ed83f0682c25d79", -"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "70a4dfd041837437739e43e56386dc75a49d2615f6cd46b549a845e484408971", -"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "70a4dfd041837437739e43e56386dc75a49d2615f6cd46b549a845e484408971", -"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "4c1256238c955f78be55c43ee9ad716719fe38d4b2829ce63dc20c0d5f64d590", +"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_host": "44d54c55b89afbeb6c67404c2d6f664c4e851c5e8336fcf743b539c7f1278630", +"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "41c9f69d25b72e6eb8a82bff72bc6687bb40ff9672949e590396974bc69be2a2", +"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "41c9f69d25b72e6eb8a82bff72bc6687bb40ff9672949e590396974bc69be2a2", +"T3W1_en_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "4eec5f8c035c1819d4f4ebfda04e5123389771ff65253a000c8a884003153a93", "T3W1_en_test_session.py::test_cannot_resume_ended_session": "a5bf877c22babe3784771f360eeb5b2b8c448b17e12d0a915479f968247010ed", "T3W1_en_test_session.py::test_clear_session": "5d23557bce38bcad03f1ad67627e2e9dd0d255c3866774025ccf187248a093e1", "T3W1_en_test_session.py::test_derive_cardano_empty_session": "a5bf877c22babe3784771f360eeb5b2b8c448b17e12d0a915479f968247010ed", @@ -33191,28 +33191,28 @@ "T3W1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "c8f8b82ebe8b4063e1a02196b93441ba1a35eade0c23979d8ee79ad340af06be", "T3W1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6fdfd13d741f6c69ae519e60cc9832f92b8b89fa7cf592bad86974dbf65ae98e", "T3W1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "582b60ad554e7d58baafc7ea07dccce26b8735746d6b4331c6b7e2ed2f1971f2", -"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "5a75ad71b1536e9677ba3197af1190966321bb0951b8d029161a3736b2939dfc", -"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ebf8b5c6e9f7a2ec517ec6535cfdf81ae1b8d8d948e2b6e9bdebe35ba4ef20e9", -"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a7689ba11d6daab059f2ba428fde5b7d9071c0e617d642631fbd7d96fc67a45f", -"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "1b7608a2adacd8e80dca2cbeca69dd5e2fe805043a1d10a31b6af4e21da3d26b", -"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "37a91176ed72b99eda32d64deed2f7747446f88345216cd494640239bc98323a", -"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "505506cb0556478c198f71c473f142a5f959b0792769885896f716cec8ef0e55", +"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "81b31cca11ac5368f18208e50febfa44c56215731466bd0de4880938fd6b0003", +"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f11e5b3ffed3eefbf8da4b377e5164bf6da70e8d79d302a175483ed1326b7e90", +"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "d008268b43d365499e3cbeccfb4fdff9f20ec07867ce4ef83f84872a85d72d69", +"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5630b0fcaa7489e22da553fbc78ec7c41d8fd83675bd6fc485fee0f2dd7c71d2", +"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6ddf94aca004f9ca1ab4aa2a238541b556ff5e08acf0d37f860f2aced885fa72", +"T3W1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "c9c2e5c5b6cee53cfcb8f913b91779fd7d16ddb70f87c3868fd1878a584e7351", "T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "2889aea00f3e57b1977186660d1e15b1226507108c6a1a4cb625d6151f93002f", "T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "78b743d4e6e8ff2b9f4f29126aaa835cadb775dbdc93072259ef95b0a743a5c1", "T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "574c6c1277f4274a4606aab934d522c38e1d501eadbfda845742b5c103b4700f", "T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "78b743d4e6e8ff2b9f4f29126aaa835cadb775dbdc93072259ef95b0a743a5c1", -"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f0a71726762107cdc080e16172f7630123abc0d53383cdcf599cbcf50b8288ae", -"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d4d9dbb3160d2491d7037eff23877a6083e718dfe84a921c8e77fb83ba391f16", -"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "3c50fa7f519c59818ccc5b5fff1e47cb3f9bce0e4488a1f11400a90f45c32a6d", -"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "ab42684bf0202649f1e3892d6db32768893c5192599029b5a095a1764e667463", -"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "20189b4a0c0efa5ba8b7ef92d3d22c27033fb1757b269f8f200b5d146f1a6f28", -"T3W1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "6e00040937bf57beff6d3d0c7330f3286e195e4dcdef7765eade0a1d0087ef96", -"T3W1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d59ab5465909440028c4882a4be8504b87c056c6f602a9ecbca18ae1ba6e3786", -"T3W1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9a68d224eea29dd420315d3c1b4a49f86fec669e58c6998c2cfdb70bd1142110", -"T3W1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "c3f01342f19803dceea248b03021bf6e0d3c99655b304f681e99a627f12dc283", -"T3W1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "af9182cac408a41c127820eccb9418d7441d725963969a221b9e59bca4740a94", -"T3W1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8dd60a94c857157f65632ba42966f5d0533322c0c1ace30a8a5ccba2778b758c", -"T3W1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "8d733cab4ba2401985da8cdcd2829d1dd85ceff9925752bea1f329f56f19b0ca", +"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6a405a4d48fd96b9afed98761003063fa0592c6ae5c25df913168adeff14efce", +"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c409355380b69e39a69b3f3497c1204b43a11c2db7ce7f740e1f4d1d22953dc6", +"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "bd0a4ba1c093a9df3f6929f11cf4b0396ef68e6873b9dcdceb9e4aa92fd30303", +"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "3e971ffcb4505c8ab7674c9e1056cd9df741510ea9ffb5f19ad3d2db6fea52c5", +"T3W1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fd82619040e6306d01da5f7174a8825d21afe873bdb1304bc6395cf88a87eb06", +"T3W1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "5cdd7065af3c03d8b89737093acb31dc5777df2de09dc6f7ad3e061d190b0da5", +"T3W1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f83db5158679bb72266c04716215daea148ab41998bd6e605a31f7aa6214b054", +"T3W1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7a558f794e69cf47715f229076d3368a78f4b5fa16106ab212dff93a705ba8d2", +"T3W1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fad7bdbcc224b0e22f702c09ef77de39f8d7c621f07e356afa71fa3e257dd781", +"T3W1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f878ae6a78bc27cf9d24a16568142e5b3119bc9eb60a89137e80339c85ca97b3", +"T3W1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4c1f89836aa9c397be14e6d8f77733fe118d5cd9b608836ef7e2853d5e9b08e9", +"T3W1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "7e517e480dbe97c0a8995d38685236ff82704f99982b10bb4976d30c4a1beb6f", "T3W1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "d690f959fb720b8c5c0cf94d178335978ddbeabd25376d0de32212ddbba4c886", "T3W1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1aa6f8d1c8ddd1a3d7ace59e38028bbc31e69af8e684e7d43d9248a8063b5964", "T3W1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "40c179ad29f3c49cb307fc01524c1825216d61d52a24bb98ff63e6b1b93944d7", @@ -33434,16 +33434,16 @@ "T3W1_es_test_msg_applysettings.py::test_experimental_features": "5fb4f4a051e1c6c93c889de812404041643f362957500ac6031f2aa7f445579e", "T3W1_es_test_msg_applysettings.py::test_label_too_long": "2889aea00f3e57b1977186660d1e15b1226507108c6a1a4cb625d6151f93002f", "T3W1_es_test_msg_applysettings.py::test_safety_checks": "5245f743baa508a25db3c8c56806b9a6ab174df54b6ba8460e72c5d41931294f", -"T3W1_es_test_msg_backup_device.py::test_backup_bip39": "e866c8bd7ecdaf565f90bf76ca4f7a144213a50c729da00d1c63c24905536d04", -"T3W1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ba33fc8d0f4f56ddebe5b7c46a595ec5001d2ab1aff7f87db25493740f4fad17", -"T3W1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "472bb3fc3c6c979c187a5f0a7df7e7ab6c7be6df4487a3b149b7f0d4827119e2", -"T3W1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "933adeec5cb5019b66eeff8f884119fbe7af1d64d34a0fee919593071babfd3d", -"T3W1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "3ae3e34217ad1a24be118741079fa2f221ed579b9003402b4254a5caab00011c", -"T3W1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d540e7fcf0701e7c2ba884a7092851b1bd73d4dcd862e20c4b97ed38c9cf6e7c", -"T3W1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "6c6f0c46714397bd21b197a0b410598897bebac4ce6a259455d9922d61cbe437", -"T3W1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "e0ad43fd63528c0cbdbca3651e11ee836516ada5415e865239f4d1615888bd68", -"T3W1_es_test_msg_backup_device.py::test_backup_slip39_single": "42c8def57629c069cee29525094a1148b4e34be05fa84f51d8bc698f38a33347", -"T3W1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b24a98769a2819da186f41766128da81b5487364880dfbf5b15f0a3cf70b40d0", +"T3W1_es_test_msg_backup_device.py::test_backup_bip39": "d5e182c80a90d885bd4fa08d5798d864bbd707c055ab8c518e101cde9c830d63", +"T3W1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "af64a4be43807b9a41ffd5c2c204776c60c5221a9df3728adf34aba96c07e248", +"T3W1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8fb32bb532111c84c873619d778100701b42679b368ed4a7de8757063b78fbb9", +"T3W1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "89a47d0c3869782fc77b5aa938e684c643b4b8057f6f55042c54d23a81c8674c", +"T3W1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6e8f9f3558ab0bf31d4a5fbade978e6b9e282be47e45b65953c2e41d03a54209", +"T3W1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "fb86bd6f1625d8041400ca86e9913ee6b28a2f18b8ba33732f7453ae4c565959", +"T3W1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "20a92709fdd670d607dca778c5a10331d9817d6ddc2fc521c595a031e80dc7ee", +"T3W1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d5f5c00517f412f1d3a544f9a64c44ad90700c73ee1f5516efd1c8973db97e41", +"T3W1_es_test_msg_backup_device.py::test_backup_slip39_single": "a5677958a74de1f7ee10b472a60c15fad75308fbb70f066125f4fe74313bcc0b", +"T3W1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "e153f2d52bd1a768ceadd9cc4e78f0a446160b5c01835c55eb4760ec6fc2466b", "T3W1_es_test_msg_backup_device.py::test_no_backup_fails": "0b3e5d835e06b2010f6898dd896800c22d4d90cd032b7570e665d0380b0daa7f", "T3W1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ce2d5a79344938155d995904adc2a1570cbef15675c69609324e867ce3664424", "T3W1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1d97d6f077aab732204860a75bfaf32c852cb27306595f92e15275a77f0e69e1", @@ -33488,10 +33488,10 @@ "T3W1_es_test_protection_levels.py::test_unlocked": "1594175494d68bf17f12cad7c12efdf0430bcb1b5a55101d3ce2e3b20763e172", "T3W1_es_test_protection_levels.py::test_verify_message_t2": "0e410b597291956618fb09c5725fffb159bedd608ba96fb82002975120465ed7", "T3W1_es_test_protection_levels.py::test_wipe_device": "a4274e0f7ce6ecfe41c3f15f3f5eb4ed2ce3075044b7284981a50974fa72c267", -"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_host": "e3e178e5a91512ec981b69316cc617076a4252a1973d22016f7ee19a2f311b86", -"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "4d17e1a4791277ba7eba493eae21583043fcca36f0f093e0283ead7fe793904e", -"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "4d17e1a4791277ba7eba493eae21583043fcca36f0f093e0283ead7fe793904e", -"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "3c3d3c454125803d8fc4c3e148664d13f74d1fcd5984043f934b829651231370", +"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_host": "b68abb6b4a9f2f774c70770ab83b9d2029162e0762b592329eae2ff548760408", +"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "b65a55ae523953be9fe1ddef5260240c2121ef4680400694bb98525d98c389b2", +"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "b65a55ae523953be9fe1ddef5260240c2121ef4680400694bb98525d98c389b2", +"T3W1_es_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "551b5ca0e40626f0629a434beeeb947092d93dd01b3f5da52d93433a5ae3b25c", "T3W1_es_test_session.py::test_cannot_resume_ended_session": "2889aea00f3e57b1977186660d1e15b1226507108c6a1a4cb625d6151f93002f", "T3W1_es_test_session.py::test_clear_session": "b91267d19c169b39898912b0b2cf449c6f66a7f01436707b2c2357d7cd6a576e", "T3W1_es_test_session.py::test_derive_cardano_empty_session": "2889aea00f3e57b1977186660d1e15b1226507108c6a1a4cb625d6151f93002f", @@ -34607,28 +34607,28 @@ "T3W1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5e4f0c78f56b46a2d114afacd95c6f644b4266f60a5ea8ebb3a09ff6d876510b", "T3W1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "34e13dca51f809f96683a6b17d659e8d7e5b717e0632fc2f97ee25b173f34ab7", "T3W1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8438a927dec808a1961c3e5920f9366a4900b8ab7d98ac64ce68aa0416459d89", -"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d4218bf940e4e0430a1bb96b710fed9bdef1b54309a9ad4a45934b1365b7bbe4", -"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "a1a7c39b4e9e75971690ed37ac80d5e7fa37ce5678ff676e3c61566632ebb35c", -"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f2d346edfc94c6b9772262686e3cfee0f4fa4d18b40edae48b18949daeefb398", -"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "176032dc2d5a8893da8099194b6056a6439ffc1337df69c2e0216bf56f8901dc", -"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "53d22b5ca886094e6d17b93209fc8572409d17fad6fd82ec8cb889fe66652567", -"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "261adf10940c238a8daee0f6bffd493a9c97dd86b2a0fbf9b2e6fa454ccad0dc", +"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d4c217b7b6e26a5a3fe78bdd0604c923ab9ec9e88297a5c13beae425943e9569", +"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "71febf57381426f3c5febe62975fb52127f8a46a91be0f3204c941d63800fa8d", +"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c498ffaa8a66cc2d1e93801165302269f4cd926b046b2952bd38bfb7ca673f6e", +"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "bad7f1eb3ba92ce01d658f1f9001a4bb9eee670e0ec9981c812c088e815fbc33", +"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "17c12e0addad209b856944d142524cc1b2fb09af4a52591971ccac1ddc3307a1", +"T3W1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "e7a2984dcf1057c2e4b1b73a40c30bfc3137eaa9936780922fdfddfb68e01cf8", "T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "7dec10fe48983f7c9a0ab7ae5e70a7c414a657fe8466e229d5de59277c1174ee", "T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "fce7c424421d3dcd0401414b518ae85731244ce26c65bea1a689ed1cd8ffa75a", "T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "2b4f2f9d053afd2d8fcca9084d6f69ca5c21fff6e0605dbbbe19f7797f1ff73f", "T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "fce7c424421d3dcd0401414b518ae85731244ce26c65bea1a689ed1cd8ffa75a", -"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "7e24e403ea4e30ec862c11c518319d1ab70a4fc5400401a5cc57463c3752f820", -"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0301f3a541f18789e6ef2ed3417b23815d1292b0991128ae41ce812a2a2cab32", -"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f8bc59954e31db147809d5a2dc690d0143942bdbaebe84a5717deb9a625077d9", -"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "2e704bbcec01c2be36d2c7f39791515eedb5ba4345f3ff3a8dadfd0822a4584e", -"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "0771ce60173861b549412ead242ab5bae43d69be77b85648ca8fe5c02a2dd669", -"T3W1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "72f994bede7df1517c852fc4292fc5067e9873590836881737c3a9015998b77d", -"T3W1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f6e88953ccfc17f3fcd0a245968874cbc7f9e633a6a5f3969dbde73d766aaf1b", -"T3W1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0403c6d2747fed3c9ca5a0ebba89bb3e105fc4cfbf6b8d381c49b18cdf8ab67f", -"T3W1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "075dd777223a43feec4a4c363f1411295b8890e6d35f73f06b690c42c01d74fa", -"T3W1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4eb6d09e02b632a478b2887cec7d3d9adbc3d68e6b11d67664da05a3f6aa5c28", -"T3W1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1e956c458a9a5519a6dd92a6214223ce3995f7c90bc138a995e59db6f7498612", -"T3W1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "a4a8c214aeba219b3ebdfe590538e8acc358f3a3f11220912d6d4af8763a6bff", +"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "7756be55cf78ecc30cfe43cf50de7d70661c319e09b3dd5e4e719d7eaffc34eb", +"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "20103bd72406dafb06e1f5b2cba1e0dc1eb5daa6e33a962d839284da75f1b33f", +"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "74cef647e1af9a45825319220d4d999c11e93d8509f1e609073eef4b401936f4", +"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "8e96cd012c8e85d270a89dacfeabf91467b17b9ba64303a09f42a14f8be72c68", +"T3W1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "577eea585a402f6671c77195561daea52994d5c66521783515d93b3743331a15", +"T3W1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3cb12a4c2e64eefe2356415705091a3f04786fb2bc8e1a3443bbc1aeccbc6570", +"T3W1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e30f0724ae9fd44894481ff6e68c3b9ba0acb9cdfeea38d6c072fc8e5558020c", +"T3W1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7ba2cbdc3b7cde76db070b3aba39d59c031c32e19ff2f6f3710fe9b13ad60255", +"T3W1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "702827c4b640b7d145853d29a48ddea0b9e49b714e0a6f0c2cd5f1268507b347", +"T3W1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6dc2dccc05538c14ee5b3ec83240061bcc465da8e3670ce7e4c02ca9d1a66fc9", +"T3W1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4fd8b02d737479a2d297ef4b1d8b359cbc65489466424c048514491ee3d0dd8a", +"T3W1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "051087b629a4a4d88c0105709104f61e4144ccb9a28a37f7b55397d19397d027", "T3W1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "7fa2dc5b734a385ec73bdf983307b7b058a5168b29a84ba5eb47213a9b20b4e6", "T3W1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "37da6c8ddc0fc6bce2a2502e4b462d4fbb9891065dae72a2d50e47cad913939f", "T3W1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a65dee0cf2b71479589c6db99e63f2154eb32527efb17ef910297fa29cc53907", @@ -34850,16 +34850,16 @@ "T3W1_fr_test_msg_applysettings.py::test_experimental_features": "2b7c8b18fdb7408d165cb8b16850a41379e47ab61844df57982710b4239cbce9", "T3W1_fr_test_msg_applysettings.py::test_label_too_long": "7dec10fe48983f7c9a0ab7ae5e70a7c414a657fe8466e229d5de59277c1174ee", "T3W1_fr_test_msg_applysettings.py::test_safety_checks": "49eb81dc8c398a3f3ead543e9ef606bd65c9200ddfb05d5e2aae2336ae3aa852", -"T3W1_fr_test_msg_backup_device.py::test_backup_bip39": "ca3044d3ff292afb0d113e7be5e51e85fce7b1d3a92ed3d9c524ceab22dc2a93", -"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "691690d3a7048e93879e1006448c74ae8fe605ebe9664ce50384766fff3f733d", -"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "72b428bd1e77b1a46af8190fdd0c1cc6246e44cd378e6ea059ea29d72e3a2d12", -"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "8ec8d3546fb777313d893af2467af2ee90bcf95462878e470872f89a0bc43f83", -"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f79f01bbecac15f4cee82a5de2f89f23fbd43fd8f85b53ef4c42748d07f91306", -"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "5fff1e46ec3bdf7c990c2e2637713bff5b531599418cf84f8be969801db6410f", -"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "f9b664ca439969695428c487ac0e743ca525c46cfb16f6fd447416721ea481f5", -"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "5a1f28b9cc03db07c2b4eb167250723e9efd33722d261f333002fb5b5af7ed3d", -"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_single": "4e410c17e5c0f26c8da2a2227cfc303f45e608e4a1a63e38b8db158052ac2b3a", -"T3W1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "3c0225112f65b337d665b3394003b839665ad3d8e71c45fd701d070a6fec3df0", +"T3W1_fr_test_msg_backup_device.py::test_backup_bip39": "a426d6c7c28056b8eadc692fe62b15ec4cd59c29a30ad805316f29fa29b65f7b", +"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4bae3c40feea159bf10c86af9dfceb09d4295cd9fe5d01bcdbb071098423ac70", +"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "fa7c5080b1adea184306278681ef9bc938c5d2a458a0718601fd323075a6b94a", +"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "79ff20b9addfa76001265571e2fb57021c5ab264aeb80e98b5941822b700ca00", +"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "ed5c8159665be3227e6b3857e3c104cbd5c3b85eb597a3d556f74980d64623e0", +"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a0ea86b6bf2e71e16d9833dfb61040c659f0fd96308596d44c6e5c83150e1b2b", +"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "96457d401626d144ef6a314c8808e68706a396d9bfca1db5ccc15622517020aa", +"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "978a852f46e9f4880e4c363e898cf8e8dc2e46cabdb42d8b2236b5d2883834ee", +"T3W1_fr_test_msg_backup_device.py::test_backup_slip39_single": "1e32d7802fef1c3312142c7290e7a1985ab760555a23950e4e1a8c6dcf0720fe", +"T3W1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "77fb9d0a474c1aa0ca31ececa3d80cd176425ddff80ea2e8cd5c8ed7e45420bf", "T3W1_fr_test_msg_backup_device.py::test_no_backup_fails": "068ba274ffe55dd55ec594c8d0c35127ff9c695a1fa6e3caf35184987a04416d", "T3W1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "7b1aaaec65c40c3e76061b351df39cca51a43a17dada1993e8830f85f3ddcbbb", "T3W1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "f61773103137d4e19dac26d5c20bd6d222c846ca7d180167f2f4c908cb11193a", @@ -34904,10 +34904,10 @@ "T3W1_fr_test_protection_levels.py::test_unlocked": "803f3ff0c2d6458f12e501ed04dbd4ca9da0b83d9fc60ecd45079b6ca8a43d1b", "T3W1_fr_test_protection_levels.py::test_verify_message_t2": "3b830e5dd5d2e9632772fa661c8442ee58116ae1c7315e6c60b6cfe24114a51b", "T3W1_fr_test_protection_levels.py::test_wipe_device": "dc84e78d4fe4074f6595d2e0d756fbb107430f80f396602824551aafc62c916d", -"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_host": "a299bf3b8eabdbcc1d71991c66a8477a54d430917c93c6e19ae647f1a183a158", -"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "f4df274fdb057cb9d759678a04294325a90da229b161d299bff9be4d66daadb3", -"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "f4df274fdb057cb9d759678a04294325a90da229b161d299bff9be4d66daadb3", -"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "5176c521c48f550886354276648c8633e006b84301ea874a7c58577ddf70a191", +"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_host": "7a9da349d6fdbf84be824cb4fb47a8389ad016a72eb76f2a7576a835d45ae230", +"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "cd1c3c43a96c35d05443c2d340cf42d7ff529f696814e162b0f93e05505e18c6", +"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "cd1c3c43a96c35d05443c2d340cf42d7ff529f696814e162b0f93e05505e18c6", +"T3W1_fr_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "35f3b17e16ffae416ca39a8b1a86c53552acf5800a48231fb996de3067fb0d3d", "T3W1_fr_test_session.py::test_cannot_resume_ended_session": "7dec10fe48983f7c9a0ab7ae5e70a7c414a657fe8466e229d5de59277c1174ee", "T3W1_fr_test_session.py::test_clear_session": "8f5e028dee58b1743551cde59d77d6b917535f4a0f2701569885367665b03cef", "T3W1_fr_test_session.py::test_derive_cardano_empty_session": "7dec10fe48983f7c9a0ab7ae5e70a7c414a657fe8466e229d5de59277c1174ee", @@ -36023,28 +36023,28 @@ "T3W1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "bd6af2b651bb8503d23fd8e81a06919b59983d5d5f3145b78cc3d42e86a471f2", "T3W1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "07ee56a8b8f1118a2d955617a65c252ceae88bc2dc8609901011f7bf1f154fcd", "T3W1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "ba532e54f6c713790f6969be3dfb3e9edafcbbe866825877289d033c9e68db2e", -"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "14812df001ffac3df84ff9d9e7cf25a663e34159494e63d5daabedd1871011cc", -"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "64fa6ca720a8362c58b0028f819453d9aa5ca5f0eeb7fe0fcb71a94e80800af9", -"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "db93df76e91ceaab3f0f17ab9b6998d3dcbbdef2eb121d4c954b857aa3547a20", -"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e44ab5d31626481808b24b4339e338fdd9f6d9c25a24c30e30049ad4b6116fe0", -"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a2cffbfe1106a9d62d28eb03da64289dfb410ed0b856c188c839afa77ab4081e", -"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "eccb6310b41093913631492e832ddec7c7ebc726941bcfbe7c198c14b373c32b", +"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "0b39a02394254affd0834ccc6e652abe38afc5e83c94a11550115d0defd83e22", +"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7053da6ce08aa0fb6c8dc0d98f43da0906c80c6911e1dca22c257963af739d85", +"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9eed87a6c41c1062e580ce704e0cd27bcbf87da402982224dae94be493c587f1", +"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "1e928e4859769b7c83b27f410404f203c21f9e6cc215a28e1fa7573ad939530d", +"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "bf7391718108e6254d749482cbed75ea4d40e0b40a7383429f5f9b7d8a1a3bb2", +"T3W1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8fc789d0fe9149a1ee9a0d29cca481f84f9550d692506fabadfe87756ae8e8ef", "T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "08ddbb6ef426932f807732f3aa7f7d5bac4f18858d97d60d98cdaedd9d365d1e", "T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_entropy_check": "2ea3386ea409c180542fed10edc3b5edc9ed0df6f2ab7d2d42c5302eccec0551", "T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "540eb6b416ddaaf85705ad501fba115a50d62977adb2de32c52f8d96181b70c2", "T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_no_entropy_check": "2ea3386ea409c180542fed10edc3b5edc9ed0df6f2ab7d2d42c5302eccec0551", -"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b72f360678b4b7f17ffe5bacd9b98c73d5ce6db2aad62b14268c28b75c004559", -"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "f1e83992a1ec90831b503f42244e8dd72b244e04cb5ab311cfe16a662a47d787", -"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9aa7492d2d4e546cb9f4d6e93a74d5da32357fd0fa20dd6f2d4dd01eafca2ce4", -"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "dc00cacd2bd5fb3b4b5334f365958e58668b9f3b5ff9a279fc052f93040bae3d", -"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "53f88c7a23c4cc0917f014ede83ed47f97223eb9bef1de81e12ce852188bd795", -"T3W1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "fdcc6a2c8584700529ed68ed8d771fdcd702c08578225d3a3cdd2676799b8813", -"T3W1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "909ab55aabdc621fa4844006bb64514e8d38454f77e28c0cc174388496a27574", -"T3W1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "36397eae931fd78a7ecde970ecb235faf5251a37248316f26914593e0a50550b", -"T3W1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e8fdf56ff9ee6288c1f1eca7b5b6a2bec9ed7a90f4a993f4c9a49f577b9a4dbc", -"T3W1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8f1d55cb225cfe3a918ac81032d490c97455cf09ef0c178d928f0fa753d81e9a", -"T3W1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d45a6ef90448a4cb3ab6945d2828a053726cba13547c5c1b7a3e40daa69fa6ef", -"T3W1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "4b13b7a133695437d36f866961450adf4feeb06dbc0a350f33b1af240f8d2c4a", +"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "96925f3f4a6498c51e9f468f8d34447726566f34dd5ee82ca2b9a0fb9ce70b68", +"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "03cf744493eefad2f612209169e1e3cd0f64b71d6b1e8bf6b00fbe343a4dc821", +"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "387b05d8b8e28e46b1ac22b1ef10b50be9bcdba8363e23431189af097f21142b", +"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_entropy_check": "9407e81664472ba34d0d790adb550c175de90e86bdd29bea85cdfa5981cfecba", +"T3W1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "4ab8d6d6c2b24e2256e784d438b0c35e8c0240334421ff9d8419c45b4100f3e9", +"T3W1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8dc2fdf48442c1513e789e742586ed131b1860c29c1351d572627bb497ef13dc", +"T3W1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "27684b7fa7b4f4bf7b41c2bba8fc22ad57cbbf896284f1db4c6e97ce3bc62ab9", +"T3W1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "85dd194e160c101e4b4b8543d58e35be1a9586417f53a17ddea9fa1251192f77", +"T3W1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "eeba8ea17a4c31fd9c5e56486ddc50c5a9cf0b9f1abb2577409d4dc50b6beae6", +"T3W1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "807114522e3209a53fe98b63b379eeb5c54b827b042f1b6666360bce989cbd81", +"T3W1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "24b4ed30233494a622730ba06699bf8a1ca755594eeda9ae9ca3e38d92e128c1", +"T3W1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_entropy_check": "17fb667b280e213106c2796559bba0868913137d3b8e2791b530419c548b3bc6", "T3W1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "2f1abe4a83f791b49ee6ad739319f3a1d5fe6c1bf399c19f3207d2c42bb0c8b9", "T3W1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "25edee856db5abe26ee5c7c9a0671dc19a178d85f494e1498529504eeeda6e5c", "T3W1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "ec08f2a25852a2749a65af2585afb8063a2ccbc06f466a6e2417f800af6bdb20", @@ -36266,16 +36266,16 @@ "T3W1_pt_test_msg_applysettings.py::test_experimental_features": "00fc63bcc52c346d4725e501105b6f375c4b0efc599b3715042a0eccca177fe2", "T3W1_pt_test_msg_applysettings.py::test_label_too_long": "08ddbb6ef426932f807732f3aa7f7d5bac4f18858d97d60d98cdaedd9d365d1e", "T3W1_pt_test_msg_applysettings.py::test_safety_checks": "7e1f765707ed1782b4bf9dff92071667ad079fbe9ef55fa1df1c157d917d23c6", -"T3W1_pt_test_msg_backup_device.py::test_backup_bip39": "78fe9376372b479500e62a3b8e40546e3c1a8f76dd6c01c565abae234569ddb9", -"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "657d9d2c32288a0ce53efa0144beccf601f51247f901754ff4944d74160226d0", -"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4981f1bf9209285bdbe638019becc9d61e78e8a42bc8b1b5201910457014a4b9", -"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "6ca8bc673f0ecdc16c864b582cd6b595c1ee953f874589bf680ef3f255285632", -"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "879f25e9bca05fa8a14ed89ba2e6bb550082f69af5c6ac078a446a88de300a1a", -"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "f3051d44d73fc1467ec993ff29d6f78a48d21968fa442609355d09fd495f0e47", -"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "3c8ae9d44a551888f0ead5dbcb4bf386f546157b94763dc150189898e96a3e61", -"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "3a9b2693f829a86aaf7d92f744f492f5d3da67ec91c349479ecf9f28544470eb", -"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_single": "49c4d208a146837ec48cd69caacb6f43013bbb1dfb28ee9e6d8f2abaffd41ea9", -"T3W1_pt_test_msg_backup_device.py::test_interrupt_backup_fails": "641fe891521c0d56687a701fe7f3636f3b5d51ae5421fb1a321f7812491bc9ad", +"T3W1_pt_test_msg_backup_device.py::test_backup_bip39": "6e4e5454d7c7fd28836a001acbc54f1f39ad619216b47049c5aa412a24163191", +"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "dd1894fb1afacb3f1daae0b2a8b5e1ebd04ac541b1ceda76f4b4a1e0171ec26f", +"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4678104c9e612e3eb80fbe9ed879637431e06739bff9fcf5aa04bca6b70d3a58", +"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "fa5d981cc2b43f18dee728bee50dce9f1aeb8a15c658dbe8aae27a38b7cf61b8", +"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "e829aa5a7fff536c5b33e56270618a4573f42ac58c2faa69119a50ec3b225ed5", +"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "25601127916c4a6e9160715ff9c410043708d61541598aece125c7810aad3544", +"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "930405263615f05396631e393f68f0055701b652cd1086ac82ea72a59a1a6116", +"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "52e9ddcccaa271954067b46523590fe5d2cf554e2ec41964947b4864223cb8af", +"T3W1_pt_test_msg_backup_device.py::test_backup_slip39_single": "3001f3739c82330a0d26c190ba6b70cb4fdd090931f7ae3deb1694f8c225b632", +"T3W1_pt_test_msg_backup_device.py::test_interrupt_backup_fails": "867596eec9ee4fabafcfdbfff93e168ed6bf1aff5191969a551bb2c07023c4ef", "T3W1_pt_test_msg_backup_device.py::test_no_backup_fails": "3d766568d1d9a0a741c930d1999fe99859a268c8f501ce4c6ff9f8a9191e5203", "T3W1_pt_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "7f04cc05788be3f0edba816f4514e9da4ed799825125d3cbb5bea5c2e8d606df", "T3W1_pt_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9b31d42b77080ed485e20f93f168fe13fe90896bceb5129cb6289ec48da11dfd", @@ -36320,10 +36320,10 @@ "T3W1_pt_test_protection_levels.py::test_unlocked": "fe02d1b1fd3547749cf9314f243d3435adb3fb64eb04493286dd5b5c737c4020", "T3W1_pt_test_protection_levels.py::test_verify_message_t2": "cfe09b0fe6889e177326f288d4622ad23ad9571fd28b5171b48063c7dfb1f98f", "T3W1_pt_test_protection_levels.py::test_wipe_device": "672c40358e613ed2b9ddf2f7a746efb8e488998e9990d63e96120089947ce673", -"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_host": "a98269b1d07190db03b37d57a93b3aab196d2f02310b0917d3af9e967a547720", -"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "d1a2fd6f28fe579fe3aac827c58753e28b97992b06268c9e01ec86e113614afa", -"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "d1a2fd6f28fe579fe3aac827c58753e28b97992b06268c9e01ec86e113614afa", -"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "ac502711702b5c1121a89c0753124c94e80d589435bd580504e7bc48d378e1ed", +"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_host": "dc4cf1ead2fdfb8ce49f0f02141d5ff7afddbb10c88bb0cd5f05fdadb47a1b13", +"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_host_cancel": "78b7d4f4bae0498e659988f6657fcc07af7952b684af308e3593c25de62b28b2", +"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_host_send_disallowed_message": "78b7d4f4bae0498e659988f6657fcc07af7952b684af308e3593c25de62b28b2", +"T3W1_pt_test_repeated_backup.py::test_repeated_backup_via_host_upgrade_single": "e1ae52eccc6939f630f0b35b16d52fa3330b63857d99afcb3192a3832b11b2a6", "T3W1_pt_test_session.py::test_cannot_resume_ended_session": "08ddbb6ef426932f807732f3aa7f7d5bac4f18858d97d60d98cdaedd9d365d1e", "T3W1_pt_test_session.py::test_clear_session": "0743561bdb18b3c70948409e2388f1f04f464275519e7846899939d6dc6412a7", "T3W1_pt_test_session.py::test_derive_cardano_empty_session": "08ddbb6ef426932f807732f3aa7f7d5bac4f18858d97d60d98cdaedd9d365d1e", @@ -36379,7 +36379,7 @@ "T3W1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "f09c41a8edc33e538c4410e9620373b980fb6c69fa96514057421323b07524ad", "T3W1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "40f6eca871358521ea0e79e7cf0c4cc3f18c8d0727b7effc8bed84cac737c420", "T3W1_en_test_shamir_persistence.py::test_abort": "e0738ceb754a95fa599f9c6dfc6e6e7a28a771847ad75ffed0bb062b63f4c1e0", -"T3W1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "a8bd948b6372df727a975077b4903bd5c50135ada569fbf933bc5c0df2370ded", +"T3W1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "6dafd367430d91ca9e27478d98ebe1b8f73fa9017ed82bb5cc5be33d026964ac", "T3W1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "3a45b482d648b487984d1ec1f0990a334bcbc02d0a9a253852fe0d51fad53eaf", "T3W1_en_test_shamir_persistence.py::test_recovery_single_reset": "a0e04fd880a9247d6375c4ecd90c224d0aac41a53d9a19cffd6e542c39e8de93", "T3W1_en_test_wipe_code.py::test_wipe_code_activate_core": "3c8d667e35ed308607ae46391995c676ba5f4b088d0ec0ac5f908ac9deffcadc"