From 1fb33c3d989c8f1ccf16907d6ddfc318ed1fb397 Mon Sep 17 00:00:00 2001 From: Nicolas Roggeman Date: Wed, 20 Sep 2023 11:46:03 +0200 Subject: [PATCH] Adapt NBGL to support LNS+ & LNX, and use NBGL for LNS+ & LNX --- .github/workflows/unit_tests.yml | 1 + Makefile.defines | 22 +- Makefile.glyphs | 15 +- Makefile.rules | 8 +- Makefile.rules_generic | 2 +- Makefile.standard_app | 2 +- include/cx_trampoline.h | 2 +- include/os_screen.h | 2 - lib_nbgl/doc/mainpage.dox | 2 + lib_nbgl/doc/mainpage_nanos.dox | 65 + lib_nbgl/doc/nbgl_flow.dox | 104 ++ lib_nbgl/doc/nbgl_layout.dox | 2 + lib_nbgl/doc/nbgl_layout_nanos.dox | 309 +++++ lib_nbgl/doc/nbgl_page.dox | 2 + lib_nbgl/doc/nbgl_step.dox | 130 ++ lib_nbgl/doc/nbgl_use_case.dox | 2 + lib_nbgl/doc/nbgl_use_case_nanos.dox | 497 ++++++++ lib_nbgl/doc/resources/layout_nanos_1.png | Bin 0 -> 22290 bytes .../doc/resources/layout_nanos_centered.png | Bin 0 -> 16294 bytes lib_nbgl/doc/resources/layout_nanos_flow1.png | Bin 0 -> 25719 bytes .../doc/resources/layout_nanos_keyboard1.png | Bin 0 -> 41558 bytes .../doc/resources/layout_nanos_keypad1.png | Bin 0 -> 39798 bytes .../doc/resources/layout_nanos_menu_list.png | Bin 0 -> 13485 bytes lib_nbgl/doc/resources/layout_nanos_nav1.png | Bin 0 -> 16516 bytes lib_nbgl/doc/resources/layout_nanos_nav2.png | Bin 0 -> 17378 bytes .../resources/layout_nanos_step_centered.png | Bin 0 -> 434 bytes .../resources/layout_nanos_step_menu_list.png | Bin 0 -> 588 bytes .../doc/resources/layout_nanos_step_text1.png | Bin 0 -> 33019 bytes .../doc/resources/layout_nanos_step_text2.png | Bin 0 -> 23402 bytes .../fonts/config-open_sans_extrabold_11.ini | 14 + lib_nbgl/fonts/config-open_sans_light_16.ini | 14 + .../fonts/config-open_sans_regular_11.ini | 14 + ...open_sans_extrabold_11px_1bpp_0x000020.gif | Bin 0 -> 810 bytes ...open_sans_extrabold_11px_1bpp_0x000021.gif | Bin 0 -> 821 bytes ...open_sans_extrabold_11px_1bpp_0x000022.gif | Bin 0 -> 822 bytes ...open_sans_extrabold_11px_1bpp_0x000023.gif | Bin 0 -> 834 bytes ...open_sans_extrabold_11px_1bpp_0x000024.gif | Bin 0 -> 833 bytes ...open_sans_extrabold_11px_1bpp_0x000025.gif | Bin 0 -> 843 bytes ...open_sans_extrabold_11px_1bpp_0x000026.gif | Bin 0 -> 839 bytes ...open_sans_extrabold_11px_1bpp_0x000027.gif | Bin 0 -> 816 bytes ...open_sans_extrabold_11px_1bpp_0x000028.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x000029.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x00002A.gif | Bin 0 -> 828 bytes ...open_sans_extrabold_11px_1bpp_0x00002B.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x00002C.gif | Bin 0 -> 816 bytes ...open_sans_extrabold_11px_1bpp_0x00002D.gif | Bin 0 -> 818 bytes ...open_sans_extrabold_11px_1bpp_0x00002E.gif | Bin 0 -> 815 bytes ...open_sans_extrabold_11px_1bpp_0x00002F.gif | Bin 0 -> 825 bytes ...open_sans_extrabold_11px_1bpp_0x000030.gif | Bin 0 -> 836 bytes ...open_sans_extrabold_11px_1bpp_0x000031.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x000032.gif | Bin 0 -> 830 bytes ...open_sans_extrabold_11px_1bpp_0x000033.gif | Bin 0 -> 830 bytes ...open_sans_extrabold_11px_1bpp_0x000034.gif | Bin 0 -> 833 bytes ...open_sans_extrabold_11px_1bpp_0x000035.gif | Bin 0 -> 829 bytes ...open_sans_extrabold_11px_1bpp_0x000036.gif | Bin 0 -> 834 bytes ...open_sans_extrabold_11px_1bpp_0x000037.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x000038.gif | Bin 0 -> 836 bytes ...open_sans_extrabold_11px_1bpp_0x000039.gif | Bin 0 -> 835 bytes ...open_sans_extrabold_11px_1bpp_0x00003A.gif | Bin 0 -> 818 bytes ...open_sans_extrabold_11px_1bpp_0x00003B.gif | Bin 0 -> 819 bytes ...open_sans_extrabold_11px_1bpp_0x00003C.gif | Bin 0 -> 824 bytes ...open_sans_extrabold_11px_1bpp_0x00003D.gif | Bin 0 -> 820 bytes ...open_sans_extrabold_11px_1bpp_0x00003E.gif | Bin 0 -> 825 bytes ...open_sans_extrabold_11px_1bpp_0x00003F.gif | Bin 0 -> 828 bytes ...open_sans_extrabold_11px_1bpp_0x000040.gif | Bin 0 -> 844 bytes ...open_sans_extrabold_11px_1bpp_0x000041.gif | Bin 0 -> 837 bytes ...open_sans_extrabold_11px_1bpp_0x000042.gif | Bin 0 -> 834 bytes ...open_sans_extrabold_11px_1bpp_0x000043.gif | Bin 0 -> 829 bytes ...open_sans_extrabold_11px_1bpp_0x000044.gif | Bin 0 -> 834 bytes ...open_sans_extrabold_11px_1bpp_0x000045.gif | Bin 0 -> 829 bytes ...open_sans_extrabold_11px_1bpp_0x000046.gif | Bin 0 -> 829 bytes ...open_sans_extrabold_11px_1bpp_0x000047.gif | Bin 0 -> 834 bytes ...open_sans_extrabold_11px_1bpp_0x000048.gif | Bin 0 -> 836 bytes ...open_sans_extrabold_11px_1bpp_0x000049.gif | Bin 0 -> 825 bytes ...open_sans_extrabold_11px_1bpp_0x00004A.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x00004B.gif | Bin 0 -> 836 bytes ...open_sans_extrabold_11px_1bpp_0x00004C.gif | Bin 0 -> 829 bytes ...open_sans_extrabold_11px_1bpp_0x00004D.gif | Bin 0 -> 847 bytes ...open_sans_extrabold_11px_1bpp_0x00004E.gif | Bin 0 -> 839 bytes ...open_sans_extrabold_11px_1bpp_0x00004F.gif | Bin 0 -> 837 bytes ...open_sans_extrabold_11px_1bpp_0x000050.gif | Bin 0 -> 831 bytes ...open_sans_extrabold_11px_1bpp_0x000051.gif | Bin 0 -> 838 bytes ...open_sans_extrabold_11px_1bpp_0x000052.gif | Bin 0 -> 837 bytes ...open_sans_extrabold_11px_1bpp_0x000053.gif | Bin 0 -> 829 bytes ...open_sans_extrabold_11px_1bpp_0x000054.gif | Bin 0 -> 828 bytes ...open_sans_extrabold_11px_1bpp_0x000055.gif | Bin 0 -> 835 bytes ...open_sans_extrabold_11px_1bpp_0x000056.gif | Bin 0 -> 831 bytes ...open_sans_extrabold_11px_1bpp_0x000057.gif | Bin 0 -> 848 bytes ...open_sans_extrabold_11px_1bpp_0x000058.gif | Bin 0 -> 837 bytes ...open_sans_extrabold_11px_1bpp_0x000059.gif | Bin 0 -> 831 bytes ...open_sans_extrabold_11px_1bpp_0x00005A.gif | Bin 0 -> 828 bytes ...open_sans_extrabold_11px_1bpp_0x00005B.gif | Bin 0 -> 829 bytes ...open_sans_extrabold_11px_1bpp_0x00005C.gif | Bin 0 -> 825 bytes ...open_sans_extrabold_11px_1bpp_0x00005D.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x00005E.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x00005F.gif | Bin 0 -> 817 bytes ...open_sans_extrabold_11px_1bpp_0x000060.gif | Bin 0 -> 819 bytes ...open_sans_extrabold_11px_1bpp_0x000061.gif | Bin 0 -> 830 bytes ...open_sans_extrabold_11px_1bpp_0x000062.gif | Bin 0 -> 834 bytes ...open_sans_extrabold_11px_1bpp_0x000063.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x000064.gif | Bin 0 -> 835 bytes ...open_sans_extrabold_11px_1bpp_0x000065.gif | Bin 0 -> 829 bytes ...open_sans_extrabold_11px_1bpp_0x000066.gif | Bin 0 -> 827 bytes ...open_sans_extrabold_11px_1bpp_0x000067.gif | Bin 0 -> 835 bytes ...open_sans_extrabold_11px_1bpp_0x000068.gif | Bin 0 -> 834 bytes ...open_sans_extrabold_11px_1bpp_0x000069.gif | Bin 0 -> 824 bytes ...open_sans_extrabold_11px_1bpp_0x00006A.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x00006B.gif | Bin 0 -> 835 bytes ...open_sans_extrabold_11px_1bpp_0x00006C.gif | Bin 0 -> 825 bytes ...open_sans_extrabold_11px_1bpp_0x00006D.gif | Bin 0 -> 838 bytes ...open_sans_extrabold_11px_1bpp_0x00006E.gif | Bin 0 -> 833 bytes ...open_sans_extrabold_11px_1bpp_0x00006F.gif | Bin 0 -> 830 bytes ...open_sans_extrabold_11px_1bpp_0x000070.gif | Bin 0 -> 835 bytes ...open_sans_extrabold_11px_1bpp_0x000071.gif | Bin 0 -> 836 bytes ...open_sans_extrabold_11px_1bpp_0x000072.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x000073.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x000074.gif | Bin 0 -> 826 bytes ...open_sans_extrabold_11px_1bpp_0x000075.gif | Bin 0 -> 833 bytes ...open_sans_extrabold_11px_1bpp_0x000076.gif | Bin 0 -> 831 bytes ...open_sans_extrabold_11px_1bpp_0x000077.gif | Bin 0 -> 839 bytes ...open_sans_extrabold_11px_1bpp_0x000078.gif | Bin 0 -> 831 bytes ...open_sans_extrabold_11px_1bpp_0x000079.gif | Bin 0 -> 834 bytes ...open_sans_extrabold_11px_1bpp_0x00007A.gif | Bin 0 -> 827 bytes ...open_sans_extrabold_11px_1bpp_0x00007B.gif | Bin 0 -> 828 bytes ...open_sans_extrabold_11px_1bpp_0x00007C.gif | Bin 0 -> 828 bytes ...open_sans_extrabold_11px_1bpp_0x00007D.gif | Bin 0 -> 828 bytes ...open_sans_extrabold_11px_1bpp_0x00007E.gif | Bin 0 -> 821 bytes ...open_sans_extrabold_11px_1bpp_0x00007F.gif | Bin 0 -> 830 bytes ...s_extrabold_11px_1bpp_unicode_0x0000A1.gif | Bin 0 -> 820 bytes ...s_extrabold_11px_1bpp_unicode_0x0000BF.gif | Bin 0 -> 827 bytes ...s_extrabold_11px_1bpp_unicode_0x0000E0.gif | Bin 0 -> 830 bytes ...s_extrabold_11px_1bpp_unicode_0x0000E2.gif | Bin 0 -> 830 bytes ...s_extrabold_11px_1bpp_unicode_0x0000E7.gif | Bin 0 -> 828 bytes ...s_extrabold_11px_1bpp_unicode_0x0000E8.gif | Bin 0 -> 831 bytes ...s_extrabold_11px_1bpp_unicode_0x0000E9.gif | Bin 0 -> 833 bytes ...s_extrabold_11px_1bpp_unicode_0x0000EA.gif | Bin 0 -> 831 bytes ...s_extrabold_11px_1bpp_unicode_0x0000EB.gif | Bin 0 -> 834 bytes ...s_extrabold_11px_1bpp_unicode_0x0000EE.gif | Bin 0 -> 856 bytes ...s_extrabold_11px_1bpp_unicode_0x0000EF.gif | Bin 0 -> 848 bytes ...s_extrabold_11px_1bpp_unicode_0x0000F4.gif | Bin 0 -> 831 bytes ...s_extrabold_11px_1bpp_unicode_0x0000FB.gif | Bin 0 -> 833 bytes ...ont_open_sans_light_16px_1bpp_0x000020.gif | Bin 0 -> 816 bytes ...ont_open_sans_light_16px_1bpp_0x000021.gif | Bin 0 -> 826 bytes ...ont_open_sans_light_16px_1bpp_0x000022.gif | Bin 0 -> 829 bytes ...ont_open_sans_light_16px_1bpp_0x000023.gif | Bin 0 -> 852 bytes ...ont_open_sans_light_16px_1bpp_0x000024.gif | Bin 0 -> 849 bytes ...ont_open_sans_light_16px_1bpp_0x000025.gif | Bin 0 -> 863 bytes ...ont_open_sans_light_16px_1bpp_0x000026.gif | Bin 0 -> 855 bytes ...ont_open_sans_light_16px_1bpp_0x000027.gif | Bin 0 -> 821 bytes ...ont_open_sans_light_16px_1bpp_0x000028.gif | Bin 0 -> 829 bytes ...ont_open_sans_light_16px_1bpp_0x000029.gif | Bin 0 -> 830 bytes ...ont_open_sans_light_16px_1bpp_0x00002A.gif | Bin 0 -> 839 bytes ...ont_open_sans_light_16px_1bpp_0x00002B.gif | Bin 0 -> 834 bytes ...ont_open_sans_light_16px_1bpp_0x00002C.gif | Bin 0 -> 821 bytes ...ont_open_sans_light_16px_1bpp_0x00002D.gif | Bin 0 -> 820 bytes ...ont_open_sans_light_16px_1bpp_0x00002E.gif | Bin 0 -> 820 bytes ...ont_open_sans_light_16px_1bpp_0x00002F.gif | Bin 0 -> 833 bytes ...ont_open_sans_light_16px_1bpp_0x000030.gif | Bin 0 -> 847 bytes ...ont_open_sans_light_16px_1bpp_0x000031.gif | Bin 0 -> 836 bytes ...ont_open_sans_light_16px_1bpp_0x000032.gif | Bin 0 -> 842 bytes ...ont_open_sans_light_16px_1bpp_0x000033.gif | Bin 0 -> 843 bytes ...ont_open_sans_light_16px_1bpp_0x000034.gif | Bin 0 -> 846 bytes ...ont_open_sans_light_16px_1bpp_0x000035.gif | Bin 0 -> 840 bytes ...ont_open_sans_light_16px_1bpp_0x000036.gif | Bin 0 -> 847 bytes ...ont_open_sans_light_16px_1bpp_0x000037.gif | Bin 0 -> 838 bytes ...ont_open_sans_light_16px_1bpp_0x000038.gif | Bin 0 -> 849 bytes ...ont_open_sans_light_16px_1bpp_0x000039.gif | Bin 0 -> 848 bytes ...ont_open_sans_light_16px_1bpp_0x00003A.gif | Bin 0 -> 824 bytes ...ont_open_sans_light_16px_1bpp_0x00003B.gif | Bin 0 -> 825 bytes ...ont_open_sans_light_16px_1bpp_0x00003C.gif | Bin 0 -> 835 bytes ...ont_open_sans_light_16px_1bpp_0x00003D.gif | Bin 0 -> 829 bytes ...ont_open_sans_light_16px_1bpp_0x00003E.gif | Bin 0 -> 834 bytes ...ont_open_sans_light_16px_1bpp_0x00003F.gif | Bin 0 -> 837 bytes ...ont_open_sans_light_16px_1bpp_0x000040.gif | Bin 0 -> 863 bytes ...ont_open_sans_light_16px_1bpp_0x000041.gif | Bin 0 -> 848 bytes ...ont_open_sans_light_16px_1bpp_0x000042.gif | Bin 0 -> 852 bytes ...ont_open_sans_light_16px_1bpp_0x000043.gif | Bin 0 -> 840 bytes ...ont_open_sans_light_16px_1bpp_0x000044.gif | Bin 0 -> 854 bytes ...ont_open_sans_light_16px_1bpp_0x000045.gif | Bin 0 -> 840 bytes ...ont_open_sans_light_16px_1bpp_0x000046.gif | Bin 0 -> 836 bytes ...ont_open_sans_light_16px_1bpp_0x000047.gif | Bin 0 -> 849 bytes ...ont_open_sans_light_16px_1bpp_0x000048.gif | Bin 0 -> 852 bytes ...ont_open_sans_light_16px_1bpp_0x000049.gif | Bin 0 -> 827 bytes ...ont_open_sans_light_16px_1bpp_0x00004A.gif | Bin 0 -> 831 bytes ...ont_open_sans_light_16px_1bpp_0x00004B.gif | Bin 0 -> 846 bytes ...ont_open_sans_light_16px_1bpp_0x00004C.gif | Bin 0 -> 835 bytes ...ont_open_sans_light_16px_1bpp_0x00004D.gif | Bin 0 -> 861 bytes ...ont_open_sans_light_16px_1bpp_0x00004E.gif | Bin 0 -> 856 bytes ...ont_open_sans_light_16px_1bpp_0x00004F.gif | Bin 0 -> 852 bytes ...ont_open_sans_light_16px_1bpp_0x000050.gif | Bin 0 -> 846 bytes ...ont_open_sans_light_16px_1bpp_0x000051.gif | Bin 0 -> 854 bytes ...ont_open_sans_light_16px_1bpp_0x000052.gif | Bin 0 -> 851 bytes ...ont_open_sans_light_16px_1bpp_0x000053.gif | Bin 0 -> 843 bytes ...ont_open_sans_light_16px_1bpp_0x000054.gif | Bin 0 -> 839 bytes ...ont_open_sans_light_16px_1bpp_0x000055.gif | Bin 0 -> 853 bytes ...ont_open_sans_light_16px_1bpp_0x000056.gif | Bin 0 -> 848 bytes ...ont_open_sans_light_16px_1bpp_0x000057.gif | Bin 0 -> 865 bytes ...ont_open_sans_light_16px_1bpp_0x000058.gif | Bin 0 -> 846 bytes ...ont_open_sans_light_16px_1bpp_0x000059.gif | Bin 0 -> 844 bytes ...ont_open_sans_light_16px_1bpp_0x00005A.gif | Bin 0 -> 840 bytes ...ont_open_sans_light_16px_1bpp_0x00005B.gif | Bin 0 -> 835 bytes ...ont_open_sans_light_16px_1bpp_0x00005C.gif | Bin 0 -> 831 bytes ...ont_open_sans_light_16px_1bpp_0x00005D.gif | Bin 0 -> 835 bytes ...ont_open_sans_light_16px_1bpp_0x00005E.gif | Bin 0 -> 839 bytes ...ont_open_sans_light_16px_1bpp_0x00005F.gif | Bin 0 -> 825 bytes ...ont_open_sans_light_16px_1bpp_0x000060.gif | Bin 0 -> 827 bytes ...ont_open_sans_light_16px_1bpp_0x000061.gif | Bin 0 -> 842 bytes ...ont_open_sans_light_16px_1bpp_0x000062.gif | Bin 0 -> 849 bytes ...ont_open_sans_light_16px_1bpp_0x000063.gif | Bin 0 -> 836 bytes ...ont_open_sans_light_16px_1bpp_0x000064.gif | Bin 0 -> 851 bytes ...ont_open_sans_light_16px_1bpp_0x000065.gif | Bin 0 -> 844 bytes ...ont_open_sans_light_16px_1bpp_0x000066.gif | Bin 0 -> 835 bytes ...ont_open_sans_light_16px_1bpp_0x000067.gif | Bin 0 -> 848 bytes ...ont_open_sans_light_16px_1bpp_0x000068.gif | Bin 0 -> 847 bytes ...ont_open_sans_light_16px_1bpp_0x000069.gif | Bin 0 -> 827 bytes ...ont_open_sans_light_16px_1bpp_0x00006A.gif | Bin 0 -> 833 bytes ...ont_open_sans_light_16px_1bpp_0x00006B.gif | Bin 0 -> 845 bytes ...ont_open_sans_light_16px_1bpp_0x00006C.gif | Bin 0 -> 829 bytes ...ont_open_sans_light_16px_1bpp_0x00006D.gif | Bin 0 -> 857 bytes ...ont_open_sans_light_16px_1bpp_0x00006E.gif | Bin 0 -> 845 bytes ...ont_open_sans_light_16px_1bpp_0x00006F.gif | Bin 0 -> 844 bytes ...ont_open_sans_light_16px_1bpp_0x000070.gif | Bin 0 -> 851 bytes ...ont_open_sans_light_16px_1bpp_0x000071.gif | Bin 0 -> 852 bytes ...ont_open_sans_light_16px_1bpp_0x000072.gif | Bin 0 -> 834 bytes ...ont_open_sans_light_16px_1bpp_0x000073.gif | Bin 0 -> 834 bytes ...ont_open_sans_light_16px_1bpp_0x000074.gif | Bin 0 -> 831 bytes ...ont_open_sans_light_16px_1bpp_0x000075.gif | Bin 0 -> 845 bytes ...ont_open_sans_light_16px_1bpp_0x000076.gif | Bin 0 -> 842 bytes ...ont_open_sans_light_16px_1bpp_0x000077.gif | Bin 0 -> 856 bytes ...ont_open_sans_light_16px_1bpp_0x000078.gif | Bin 0 -> 840 bytes ...ont_open_sans_light_16px_1bpp_0x000079.gif | Bin 0 -> 846 bytes ...ont_open_sans_light_16px_1bpp_0x00007A.gif | Bin 0 -> 833 bytes ...ont_open_sans_light_16px_1bpp_0x00007B.gif | Bin 0 -> 835 bytes ...ont_open_sans_light_16px_1bpp_0x00007C.gif | Bin 0 -> 834 bytes ...ont_open_sans_light_16px_1bpp_0x00007D.gif | Bin 0 -> 835 bytes ...ont_open_sans_light_16px_1bpp_0x00007E.gif | Bin 0 -> 828 bytes ...ont_open_sans_light_16px_1bpp_0x00007F.gif | Bin 0 -> 851 bytes ..._sans_light_16px_1bpp_unicode_0x0000A1.gif | Bin 0 -> 825 bytes ..._sans_light_16px_1bpp_unicode_0x0000C9.gif | Bin 0 -> 843 bytes ..._sans_light_16px_1bpp_unicode_0x0000E0.gif | Bin 0 -> 840 bytes ..._sans_light_16px_1bpp_unicode_0x0000E2.gif | Bin 0 -> 844 bytes ..._sans_light_16px_1bpp_unicode_0x0000E8.gif | Bin 0 -> 844 bytes ..._sans_light_16px_1bpp_unicode_0x0000E9.gif | Bin 0 -> 846 bytes ..._sans_light_16px_1bpp_unicode_0x0000EA.gif | Bin 0 -> 846 bytes ..._sans_light_16px_1bpp_unicode_0x0000EB.gif | Bin 0 -> 843 bytes ..._sans_light_16px_1bpp_unicode_0x0000EE.gif | Bin 0 -> 833 bytes ..._sans_light_16px_1bpp_unicode_0x0000EF.gif | Bin 0 -> 828 bytes ..._sans_light_16px_1bpp_unicode_0x0000F1.gif | Bin 0 -> 847 bytes ..._sans_light_16px_1bpp_unicode_0x0000F9.gif | Bin 0 -> 845 bytes ..._sans_light_16px_1bpp_unicode_0x0000FB.gif | Bin 0 -> 847 bytes ...t_open_sans_regular_11px_1bpp_0x000020.gif | Bin 0 -> 810 bytes ...t_open_sans_regular_11px_1bpp_0x000021.gif | Bin 0 -> 817 bytes ...t_open_sans_regular_11px_1bpp_0x000022.gif | Bin 0 -> 817 bytes ...t_open_sans_regular_11px_1bpp_0x000023.gif | Bin 0 -> 834 bytes ...t_open_sans_regular_11px_1bpp_0x000024.gif | Bin 0 -> 829 bytes ...t_open_sans_regular_11px_1bpp_0x000025.gif | Bin 0 -> 839 bytes ...t_open_sans_regular_11px_1bpp_0x000026.gif | Bin 0 -> 838 bytes ...t_open_sans_regular_11px_1bpp_0x000027.gif | Bin 0 -> 811 bytes ...t_open_sans_regular_11px_1bpp_0x000028.gif | Bin 0 -> 819 bytes ...t_open_sans_regular_11px_1bpp_0x000029.gif | Bin 0 -> 819 bytes ...t_open_sans_regular_11px_1bpp_0x00002A.gif | Bin 0 -> 825 bytes ...t_open_sans_regular_11px_1bpp_0x00002B.gif | Bin 0 -> 821 bytes ...t_open_sans_regular_11px_1bpp_0x00002C.gif | Bin 0 -> 815 bytes ...t_open_sans_regular_11px_1bpp_0x00002D.gif | Bin 0 -> 815 bytes ...t_open_sans_regular_11px_1bpp_0x00002E.gif | Bin 0 -> 812 bytes ...t_open_sans_regular_11px_1bpp_0x00002F.gif | Bin 0 -> 820 bytes ...t_open_sans_regular_11px_1bpp_0x000030.gif | Bin 0 -> 830 bytes ...t_open_sans_regular_11px_1bpp_0x000031.gif | Bin 0 -> 825 bytes ...t_open_sans_regular_11px_1bpp_0x000032.gif | Bin 0 -> 827 bytes ...t_open_sans_regular_11px_1bpp_0x000033.gif | Bin 0 -> 827 bytes ...t_open_sans_regular_11px_1bpp_0x000034.gif | Bin 0 -> 833 bytes ...t_open_sans_regular_11px_1bpp_0x000035.gif | Bin 0 -> 828 bytes ...t_open_sans_regular_11px_1bpp_0x000036.gif | Bin 0 -> 829 bytes ...t_open_sans_regular_11px_1bpp_0x000037.gif | Bin 0 -> 825 bytes ...t_open_sans_regular_11px_1bpp_0x000038.gif | Bin 0 -> 830 bytes ...t_open_sans_regular_11px_1bpp_0x000039.gif | Bin 0 -> 829 bytes ...t_open_sans_regular_11px_1bpp_0x00003A.gif | Bin 0 -> 813 bytes ...t_open_sans_regular_11px_1bpp_0x00003B.gif | Bin 0 -> 816 bytes ...t_open_sans_regular_11px_1bpp_0x00003C.gif | Bin 0 -> 824 bytes ...t_open_sans_regular_11px_1bpp_0x00003D.gif | Bin 0 -> 820 bytes ...t_open_sans_regular_11px_1bpp_0x00003E.gif | Bin 0 -> 825 bytes ...t_open_sans_regular_11px_1bpp_0x00003F.gif | Bin 0 -> 822 bytes ...t_open_sans_regular_11px_1bpp_0x000040.gif | Bin 0 -> 844 bytes ...t_open_sans_regular_11px_1bpp_0x000041.gif | Bin 0 -> 831 bytes ...t_open_sans_regular_11px_1bpp_0x000042.gif | Bin 0 -> 834 bytes ...t_open_sans_regular_11px_1bpp_0x000043.gif | Bin 0 -> 827 bytes ...t_open_sans_regular_11px_1bpp_0x000044.gif | Bin 0 -> 834 bytes ...t_open_sans_regular_11px_1bpp_0x000045.gif | Bin 0 -> 828 bytes ...t_open_sans_regular_11px_1bpp_0x000046.gif | Bin 0 -> 828 bytes ...t_open_sans_regular_11px_1bpp_0x000047.gif | Bin 0 -> 831 bytes ...t_open_sans_regular_11px_1bpp_0x000048.gif | Bin 0 -> 835 bytes ...t_open_sans_regular_11px_1bpp_0x000049.gif | Bin 0 -> 818 bytes ...t_open_sans_regular_11px_1bpp_0x00004A.gif | Bin 0 -> 820 bytes ...t_open_sans_regular_11px_1bpp_0x00004B.gif | Bin 0 -> 830 bytes ...t_open_sans_regular_11px_1bpp_0x00004C.gif | Bin 0 -> 826 bytes ...t_open_sans_regular_11px_1bpp_0x00004D.gif | Bin 0 -> 844 bytes ...t_open_sans_regular_11px_1bpp_0x00004E.gif | Bin 0 -> 835 bytes ...t_open_sans_regular_11px_1bpp_0x00004F.gif | Bin 0 -> 837 bytes ...t_open_sans_regular_11px_1bpp_0x000050.gif | Bin 0 -> 830 bytes ...t_open_sans_regular_11px_1bpp_0x000051.gif | Bin 0 -> 838 bytes ...t_open_sans_regular_11px_1bpp_0x000052.gif | Bin 0 -> 831 bytes ...t_open_sans_regular_11px_1bpp_0x000053.gif | Bin 0 -> 825 bytes ...t_open_sans_regular_11px_1bpp_0x000054.gif | Bin 0 -> 824 bytes ...t_open_sans_regular_11px_1bpp_0x000055.gif | Bin 0 -> 833 bytes ...t_open_sans_regular_11px_1bpp_0x000056.gif | Bin 0 -> 830 bytes ...t_open_sans_regular_11px_1bpp_0x000057.gif | Bin 0 -> 842 bytes ...t_open_sans_regular_11px_1bpp_0x000058.gif | Bin 0 -> 830 bytes ...t_open_sans_regular_11px_1bpp_0x000059.gif | Bin 0 -> 828 bytes ...t_open_sans_regular_11px_1bpp_0x00005A.gif | Bin 0 -> 826 bytes ...t_open_sans_regular_11px_1bpp_0x00005B.gif | Bin 0 -> 824 bytes ...t_open_sans_regular_11px_1bpp_0x00005C.gif | Bin 0 -> 821 bytes ...t_open_sans_regular_11px_1bpp_0x00005D.gif | Bin 0 -> 822 bytes ...t_open_sans_regular_11px_1bpp_0x00005E.gif | Bin 0 -> 827 bytes ...t_open_sans_regular_11px_1bpp_0x00005F.gif | Bin 0 -> 816 bytes ...t_open_sans_regular_11px_1bpp_0x000060.gif | Bin 0 -> 818 bytes ...t_open_sans_regular_11px_1bpp_0x000061.gif | Bin 0 -> 827 bytes ...t_open_sans_regular_11px_1bpp_0x000062.gif | Bin 0 -> 830 bytes ...t_open_sans_regular_11px_1bpp_0x000063.gif | Bin 0 -> 824 bytes ...t_open_sans_regular_11px_1bpp_0x000064.gif | Bin 0 -> 831 bytes ...t_open_sans_regular_11px_1bpp_0x000065.gif | Bin 0 -> 827 bytes ...t_open_sans_regular_11px_1bpp_0x000066.gif | Bin 0 -> 826 bytes ...t_open_sans_regular_11px_1bpp_0x000067.gif | Bin 0 -> 833 bytes ...t_open_sans_regular_11px_1bpp_0x000068.gif | Bin 0 -> 829 bytes ...t_open_sans_regular_11px_1bpp_0x000069.gif | Bin 0 -> 818 bytes ...t_open_sans_regular_11px_1bpp_0x00006A.gif | Bin 0 -> 821 bytes ...t_open_sans_regular_11px_1bpp_0x00006B.gif | Bin 0 -> 829 bytes ...t_open_sans_regular_11px_1bpp_0x00006C.gif | Bin 0 -> 818 bytes ...t_open_sans_regular_11px_1bpp_0x00006D.gif | Bin 0 -> 837 bytes ...t_open_sans_regular_11px_1bpp_0x00006E.gif | Bin 0 -> 829 bytes ...t_open_sans_regular_11px_1bpp_0x00006F.gif | Bin 0 -> 829 bytes ...t_open_sans_regular_11px_1bpp_0x000070.gif | Bin 0 -> 831 bytes ...t_open_sans_regular_11px_1bpp_0x000071.gif | Bin 0 -> 831 bytes ...t_open_sans_regular_11px_1bpp_0x000072.gif | Bin 0 -> 819 bytes ...t_open_sans_regular_11px_1bpp_0x000073.gif | Bin 0 -> 824 bytes ...t_open_sans_regular_11px_1bpp_0x000074.gif | Bin 0 -> 822 bytes ...t_open_sans_regular_11px_1bpp_0x000075.gif | Bin 0 -> 830 bytes ...t_open_sans_regular_11px_1bpp_0x000076.gif | Bin 0 -> 826 bytes ...t_open_sans_regular_11px_1bpp_0x000077.gif | Bin 0 -> 836 bytes ...t_open_sans_regular_11px_1bpp_0x000078.gif | Bin 0 -> 827 bytes ...t_open_sans_regular_11px_1bpp_0x000079.gif | Bin 0 -> 829 bytes ...t_open_sans_regular_11px_1bpp_0x00007A.gif | Bin 0 -> 825 bytes ...t_open_sans_regular_11px_1bpp_0x00007B.gif | Bin 0 -> 824 bytes ...t_open_sans_regular_11px_1bpp_0x00007C.gif | Bin 0 -> 821 bytes ...t_open_sans_regular_11px_1bpp_0x00007D.gif | Bin 0 -> 822 bytes ...t_open_sans_regular_11px_1bpp_0x00007E.gif | Bin 0 -> 818 bytes ...t_open_sans_regular_11px_1bpp_0x00007F.gif | Bin 0 -> 833 bytes ...ans_regular_11px_1bpp_unicode_0x0000BF.gif | Bin 0 -> 824 bytes ...ans_regular_11px_1bpp_unicode_0x0000E0.gif | Bin 0 -> 829 bytes ...ans_regular_11px_1bpp_unicode_0x0000E2.gif | Bin 0 -> 830 bytes ...ans_regular_11px_1bpp_unicode_0x0000E8.gif | Bin 0 -> 829 bytes ...ans_regular_11px_1bpp_unicode_0x0000E9.gif | Bin 0 -> 828 bytes ...ans_regular_11px_1bpp_unicode_0x0000EB.gif | Bin 0 -> 829 bytes lib_nbgl/fonts/open_sans_extrabold.ttf | Bin 0 -> 102076 bytes lib_nbgl/fonts/open_sans_light.ttf | Bin 0 -> 101696 bytes lib_nbgl/fonts/open_sans_regular.ttf | Bin 0 -> 96932 bytes lib_nbgl/include/nbgl_buttons.h | 47 + lib_nbgl/include/nbgl_debug.h | 4 +- lib_nbgl/include/nbgl_draw.h | 18 +- lib_nbgl/include/nbgl_flow.h | 86 ++ .../nbgl_font_hmalpha_mono_medium_32.inc | 1 + .../include/nbgl_font_inter_medium_32.inc | 1 + .../nbgl_font_inter_medium_32_1bpp.inc | 1 + .../include/nbgl_font_inter_regular_24.inc | 1 + .../nbgl_font_inter_regular_24_1bpp.inc | 1 + .../include/nbgl_font_inter_semibold_24.inc | 1 + .../nbgl_font_inter_semibold_24_1bpp.inc | 1 + .../nbgl_font_open_sans_extrabold_11.inc | 333 +++++ .../include/nbgl_font_open_sans_light_16.inc | 375 ++++++ .../nbgl_font_open_sans_regular_11.inc | 336 ++++++ lib_nbgl/include/nbgl_font_rom.inc | 6 + lib_nbgl/include/nbgl_font_rom_struct.inc | 12 + lib_nbgl/include/nbgl_fonts.h | 41 +- lib_nbgl/include/nbgl_layout.h | 178 ++- lib_nbgl/include/nbgl_obj.h | 98 +- lib_nbgl/include/nbgl_screen.h | 39 +- lib_nbgl/include/nbgl_side.h | 2 + lib_nbgl/include/nbgl_step.h | 115 ++ lib_nbgl/include/nbgl_types.h | 21 +- lib_nbgl/include/nbgl_use_case.h | 50 +- lib_nbgl/src/nbgl_buttons.c | 150 +++ lib_nbgl/src/nbgl_draw.c | 189 ++- lib_nbgl/src/nbgl_flow.c | 226 ++++ lib_nbgl/src/nbgl_fonts.c | 242 +++- lib_nbgl/src/nbgl_layout.c | 1066 +++++++++++++++-- lib_nbgl/src/nbgl_navigation.c | 4 + lib_nbgl/src/nbgl_obj.c | 248 +++- lib_nbgl/src/nbgl_obj_keyboard.c | 2 + lib_nbgl/src/nbgl_obj_keyboard_nanos.c | 386 ++++++ lib_nbgl/src/nbgl_obj_keypad.c | 2 + lib_nbgl/src/nbgl_obj_keypad_nanos.c | 281 +++++ lib_nbgl/src/nbgl_obj_pool.c | 42 +- lib_nbgl/src/nbgl_screen.c | 100 +- lib_nbgl/src/nbgl_serialize.c | 4 + lib_nbgl/src/nbgl_step.c | 562 +++++++++ lib_nbgl/src/nbgl_touch.c | 2 + lib_nbgl/src/nbgl_use_case.c | 8 +- lib_nbgl/src/nbgl_use_case_nanos.c | 456 +++++++ lib_nbgl/tools/icon2glyph.py | 50 +- lib_nbgl/tools/nbgl_rle.py | 14 +- lib_ux/include/ux.h | 1 + lib_ux_stax/ux.h | 7 + tools/ttf2inc.py | 14 +- unit-tests/lib_nbgl/CMakeLists.txt | 26 +- unit-tests/lib_nbgl/README.md | 20 +- ...os_pack_fr.bin => bolos_pack_fr_nanos.bin} | Bin 8384 -> 8128 bytes unit-tests/lib_nbgl/bolos_pack_fr_stax.bin | Bin 0 -> 19904 bytes unit-tests/lib_nbgl/glyphs.h | 35 + unit-tests/lib_nbgl/nbgl_stubs.c | 85 ++ unit-tests/lib_nbgl/test_nbgl_fonts.c | 176 +-- unit-tests/lib_nbgl/test_nbgl_obj.c | 402 +++++++ unit-tests/lib_nbgl/test_nbgl_obj_pool.c | 75 ++ unit-tests/lib_nbgl/test_nbgl_screen.c | 11 +- 412 files changed, 7450 insertions(+), 413 deletions(-) create mode 100644 lib_nbgl/doc/mainpage_nanos.dox create mode 100644 lib_nbgl/doc/nbgl_flow.dox create mode 100644 lib_nbgl/doc/nbgl_layout_nanos.dox create mode 100644 lib_nbgl/doc/nbgl_step.dox create mode 100644 lib_nbgl/doc/nbgl_use_case_nanos.dox create mode 100755 lib_nbgl/doc/resources/layout_nanos_1.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_centered.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_flow1.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_keyboard1.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_keypad1.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_menu_list.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_nav1.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_nav2.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_step_centered.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_step_menu_list.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_step_text1.png create mode 100755 lib_nbgl/doc/resources/layout_nanos_step_text2.png create mode 100644 lib_nbgl/fonts/config-open_sans_extrabold_11.ini create mode 100644 lib_nbgl/fonts/config-open_sans_light_16.ini create mode 100644 lib_nbgl/fonts/config-open_sans_regular_11.ini create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000020.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000021.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000022.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000023.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000024.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000025.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000026.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000027.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000028.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000029.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00002A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00002B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00002C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00002D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00002E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00002F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000030.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000031.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000032.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000033.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000034.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000035.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000036.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000037.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000038.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000039.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00003A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00003B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00003C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00003D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00003E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00003F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000040.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000041.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000042.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000043.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000044.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000045.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000046.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000047.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000048.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000049.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00004A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00004B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00004C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00004D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00004E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00004F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000050.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000051.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000052.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000053.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000054.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000055.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000056.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000057.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000058.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000059.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00005A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00005B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00005C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00005D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00005E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00005F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000060.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000061.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000062.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000063.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000064.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000065.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000066.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000067.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000068.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000069.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00006A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00006B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00006C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00006D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00006E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00006F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000070.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000071.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000072.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000073.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000074.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000075.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000076.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000077.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000078.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x000079.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00007A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00007B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00007C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00007D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00007E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp/nbgl_font_open_sans_extrabold_11px_1bpp_0x00007F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000A1.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000BF.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000E0.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000E2.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000E7.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000E8.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000E9.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000EA.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000EB.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000EE.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000EF.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000F4.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_extrabold_11px_1bpp_unicode/nbgl_font_open_sans_extrabold_11px_1bpp_unicode_0x0000FB.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000020.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000021.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000022.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000023.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000024.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000025.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000026.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000027.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000028.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000029.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00002A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00002B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00002C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00002D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00002E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00002F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000030.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000031.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000032.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000033.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000034.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000035.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000036.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000037.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000038.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000039.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00003A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00003B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00003C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00003D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00003E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00003F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000040.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000041.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000042.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000043.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000044.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000045.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000046.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000047.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000048.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000049.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00004A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00004B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00004C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00004D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00004E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00004F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000050.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000051.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000052.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000053.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000054.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000055.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000056.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000057.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000058.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000059.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00005A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00005B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00005C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00005D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00005E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00005F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000060.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000061.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000062.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000063.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000064.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000065.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000066.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000067.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000068.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000069.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00006A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00006B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00006C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00006D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00006E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00006F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000070.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000071.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000072.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000073.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000074.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000075.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000076.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000077.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000078.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x000079.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00007A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00007B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00007C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00007D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00007E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp/nbgl_font_open_sans_light_16px_1bpp_0x00007F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000A1.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000C9.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000E0.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000E2.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000E8.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000E9.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000EA.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000EB.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000EE.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000EF.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000F1.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000F9.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_light_16px_1bpp_unicode/nbgl_font_open_sans_light_16px_1bpp_unicode_0x0000FB.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000020.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000021.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000022.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000023.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000024.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000025.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000026.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000027.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000028.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000029.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00002A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00002B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00002C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00002D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00002E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00002F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000030.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000031.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000032.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000033.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000034.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000035.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000036.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000037.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000038.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000039.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00003A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00003B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00003C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00003D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00003E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00003F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000040.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000041.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000042.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000043.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000044.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000045.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000046.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000047.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000048.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000049.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00004A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00004B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00004C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00004D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00004E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00004F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000050.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000051.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000052.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000053.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000054.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000055.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000056.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000057.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000058.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000059.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00005A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00005B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00005C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00005D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00005E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00005F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000060.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000061.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000062.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000063.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000064.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000065.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000066.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000067.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000068.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000069.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00006A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00006B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00006C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00006D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00006E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00006F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000070.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000071.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000072.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000073.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000074.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000075.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000076.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000077.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000078.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x000079.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00007A.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00007B.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00007C.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00007D.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00007E.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp/nbgl_font_open_sans_regular_11px_1bpp_0x00007F.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp_unicode/nbgl_font_open_sans_regular_11px_1bpp_unicode_0x0000BF.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp_unicode/nbgl_font_open_sans_regular_11px_1bpp_unicode_0x0000E0.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp_unicode/nbgl_font_open_sans_regular_11px_1bpp_unicode_0x0000E2.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp_unicode/nbgl_font_open_sans_regular_11px_1bpp_unicode_0x0000E8.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp_unicode/nbgl_font_open_sans_regular_11px_1bpp_unicode_0x0000E9.gif create mode 100644 lib_nbgl/fonts/nbgl_font_open_sans_regular_11px_1bpp_unicode/nbgl_font_open_sans_regular_11px_1bpp_unicode_0x0000EB.gif create mode 100644 lib_nbgl/fonts/open_sans_extrabold.ttf create mode 100644 lib_nbgl/fonts/open_sans_light.ttf create mode 100644 lib_nbgl/fonts/open_sans_regular.ttf create mode 100644 lib_nbgl/include/nbgl_buttons.h create mode 100644 lib_nbgl/include/nbgl_flow.h create mode 100644 lib_nbgl/include/nbgl_font_open_sans_extrabold_11.inc create mode 100644 lib_nbgl/include/nbgl_font_open_sans_light_16.inc create mode 100644 lib_nbgl/include/nbgl_font_open_sans_regular_11.inc create mode 100644 lib_nbgl/include/nbgl_step.h create mode 100644 lib_nbgl/src/nbgl_buttons.c create mode 100644 lib_nbgl/src/nbgl_flow.c create mode 100644 lib_nbgl/src/nbgl_obj_keyboard_nanos.c create mode 100644 lib_nbgl/src/nbgl_obj_keypad_nanos.c create mode 100644 lib_nbgl/src/nbgl_step.c create mode 100644 lib_nbgl/src/nbgl_use_case_nanos.c rename unit-tests/lib_nbgl/{bolos_pack_fr.bin => bolos_pack_fr_nanos.bin} (74%) create mode 100644 unit-tests/lib_nbgl/bolos_pack_fr_stax.bin create mode 100644 unit-tests/lib_nbgl/glyphs.h create mode 100644 unit-tests/lib_nbgl/nbgl_stubs.c create mode 100644 unit-tests/lib_nbgl/test_nbgl_obj.c create mode 100644 unit-tests/lib_nbgl/test_nbgl_obj_pool.c diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 010528494..0edaded54 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -26,6 +26,7 @@ jobs: cmake -Bbuild -H. && make -C build && make -C build test cd ../lib_nbgl/ cmake -Bbuild -H. && make -C build && CTEST_OUTPUT_ON_FAILURE=1 make -C build test + STAX=1 cmake -Bbuild -H. && make -C build && CTEST_OUTPUT_ON_FAILURE=1 make -C build test - name: Generate code coverage run: | diff --git a/Makefile.defines b/Makefile.defines index 7675ae400..7d67650de 100644 --- a/Makefile.defines +++ b/Makefile.defines @@ -30,6 +30,11 @@ ifeq ($(filter $(TARGET),$(TARGETS)),) $(error TARGET not set to a valid value (possible values: $(TARGETS))) endif +# for Stax, NBGL must be used +ifeq ($(TARGET),stax) +USE_NBGL ?= 1 +endif + API_LEVEL := 0 TARGET_PATH := $(BOLOS_SDK)/target/$(TARGET) TARGET_ID := $(shell cat $(TARGET_PATH)/include/bolos_target.h | grep TARGET_ID | cut -f3 -d' ') @@ -55,8 +60,13 @@ endif # Command to print ICONNAME hexadecimal bitmap on stdout # according to the hardware target. -ifeq ($(TARGET_NAME),TARGET_STAX) +ifneq ($(TARGET),nanos) +#inverse B&W for non Stax +ifneq ($(TARGET_NAME),TARGET_STAX) +ICONHEX_CMD=python3 $(BOLOS_SDK)/lib_nbgl/tools/icon2glyph.py --reverse --hexbitmaponly $(ICONNAME) +else ICONHEX_CMD=python3 $(BOLOS_SDK)/lib_nbgl/tools/icon2glyph.py --hexbitmaponly $(ICONNAME) +endif else ICONHEX_CMD=python3 $(BOLOS_SDK)/icon3.py --hexbitmaponly $(ICONNAME) endif @@ -187,13 +197,21 @@ DEFINES += NBGL_PAGE DEFINES += NBGL_USE_CASE #DEFINES += HAVE_DISPLAY_FAST_MODE else -DEFINES += HAVE_BAGL DEFINES += BAGL_WIDTH=128 +ifdef USE_NBGL +DEFINES += HAVE_NBGL +DEFINES += NBGL_STEP +DEFINES += NBGL_USE_CASE +else +DEFINES += HAVE_BAGL +endif ifeq ($(TARGET_NAME),TARGET_NANOS) DEFINES += BAGL_HEIGHT=32 endif ifeq ($(TARGET_NAME),$(filter $(TARGET_NAME),TARGET_NANOX TARGET_NANOS2)) +ifndef USE_NBGL DEFINES += HAVE_UX_FLOW +endif DEFINES += BAGL_HEIGHT=64 DEFINES += HAVE_BAGL_ELLIPSIS DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX diff --git a/Makefile.glyphs b/Makefile.glyphs index cf19b7dcf..bb14c13f9 100644 --- a/Makefile.glyphs +++ b/Makefile.glyphs @@ -31,8 +31,8 @@ endif GLYPH_DESTC := $(GLYPH_SRC_DIR)/glyphs.c GLYPH_DESTH := $(GLYPH_SRC_DIR)/glyphs.h -ifeq ($(TARGET_NAME),TARGET_STAX) -# Stax glyphs files and generation script +ifdef USE_NBGL +# Not NanoS glyphs files and generation script GLYPH_FILES += $(addprefix $(BOLOS_SDK)/lib_nbgl/glyphs/,$(sort $(notdir $(shell find $(BOLOS_SDK)/lib_nbgl/glyphs/)))) GLYPH_FILES += $(addprefix glyphs/,$(sort $(notdir $(shell find glyphs/)))) ifneq (,$(wildcard $(ICONNAME))) @@ -40,11 +40,18 @@ ifneq (,$(wildcard $(ICONNAME))) GLYPH_FILES += $(ICONNAME) endif ICON_SCRIPT = $(BOLOS_SDK)/lib_nbgl/tools/icon2glyph.py -GENERATE_GLYPHS_CMD = python3 $(ICON_SCRIPT) --glyphcfile $(GLYPH_FILES) +#inverse B&W for non Stax +ifneq ($(TARGET_NAME),TARGET_STAX) +GLYPH_OPT := --reverse +else +GLYPH_OPT := +endif +GENERATE_GLYPHS_CMD = python3 $(ICON_SCRIPT) $(GLYPH_OPT) --glyphcfile $(GLYPH_FILES) else # Nano glyphs files and generation script GLYPH_FILES += $(addprefix glyphs/,$(sort $(notdir $(shell find glyphs/)))) GLYPH_FILES += $(addprefix $(BOLOS_SDK)/lib_ux/glyphs/,$(sort $(notdir $(shell find $(BOLOS_SDK)/lib_ux/glyphs/)))) +GLYPH_OPT := ICON_SCRIPT = $(BOLOS_SDK)/icon3.py GENERATE_GLYPHS_CMD = python3 $(ICON_SCRIPT) --factorize --glyphcfile $(GLYPH_FILES) endif @@ -54,7 +61,7 @@ $(GLYPH_DESTH): $(GLYPH_FILES) $(ICON_SCRIPT) $(L)-mkdir -p $(GLYPH_SRC_DIR) $(L)rm -f $(GLYPH_DESTC) $(GLYPH_DESTH) @# Use temporary files to prevent issues when build is interrupted - $(L)python3 $(ICON_SCRIPT) --glyphcheader $(GLYPH_FILES) > $(GLYPH_DESTH)_tmp + $(L)python3 $(ICON_SCRIPT) $(GLYPH_OPT) --glyphcheader $(GLYPH_FILES) > $(GLYPH_DESTH)_tmp $(L)$(GENERATE_GLYPHS_CMD) > $(GLYPH_DESTC)_tmp $(L)mv $(GLYPH_DESTC)_tmp $(GLYPH_DESTC) $(L)mv $(GLYPH_DESTH)_tmp $(GLYPH_DESTH) diff --git a/Makefile.rules b/Makefile.rules index 5d06dc155..c1d12df9b 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -16,15 +16,13 @@ #******************************************************************************* # temporary redef, to ensure wider compliance of the SDK with pre-1.6 apps -ifeq ($(TARGET_NAME),$(filter $(TARGET_NAME),TARGET_NANOS TARGET_NANOX TARGET_NANOS2)) ifeq ($(NO_UI), 0) +ifndef USE_NBGL SDK_SOURCE_PATH += lib_bagl lib_ux -endif -else ifeq ($(TARGET_NAME),TARGET_STAX) -ifeq ($(NO_UI), 0) +else SDK_SOURCE_PATH += lib_nbgl lib_ux_stax endif -endif +endif # NO_UI # adding the correct target header to sources SDK_SOURCE_PATH += target/$(TARGET)/include diff --git a/Makefile.rules_generic b/Makefile.rules_generic index d5300fc6f..16674ad56 100644 --- a/Makefile.rules_generic +++ b/Makefile.rules_generic @@ -32,7 +32,7 @@ ifeq ($(shell $(CC) -v 2>&1 | grep clang),) $(error Compiler is not CLANG) endif -ifeq ($(TARGET_NAME),$(filter $(TARGET_NAME),TARGET_NANOX TARGET_NANOS2 TARGET_STAX)) +ifneq ($(TARGET_NAME),TARGET_NANOS) ifeq ($(shell $(LD) -v 2>&1 | grep clang),) LD := $(CC) ifneq ($(shell [ `$(CC) -v 2>&1 | grep -o "version .*" | cut -f2 -d' ' | cut -f1 -d'.'` -ge 7 ] && echo ok),ok) diff --git a/Makefile.standard_app b/Makefile.standard_app index 3e5ada452..f40cd41f2 100644 --- a/Makefile.standard_app +++ b/Makefile.standard_app @@ -114,7 +114,7 @@ ifneq ($(DISABLE_STANDARD_WEBUSB), 1) endif ifneq ($(DISABLE_STANDARD_BAGL_UX_FLOW), 1) -ifneq ($(TARGET_NAME), TARGET_STAX) +ifndef USE_NBGL DEFINES += HAVE_UX_FLOW endif endif diff --git a/include/cx_trampoline.h b/include/cx_trampoline.h index 998d47b53..715886184 100644 --- a/include/cx_trampoline.h +++ b/include/cx_trampoline.h @@ -7,7 +7,7 @@ #elif defined(TARGET_NANOX) #define CX_TRAMPOLINE_ADDR 0x00210001 #elif defined(TARGET_NANOS2) -#define CX_TRAMPOLINE_ADDR 0x00808001 +#define CX_TRAMPOLINE_ADDR 0x00810001 #elif defined(TARGET_STAX) #define CX_TRAMPOLINE_ADDR 0x00818001 #endif diff --git a/include/os_screen.h b/include/os_screen.h index ce0be05ff..109355b3f 100644 --- a/include/os_screen.h +++ b/include/os_screen.h @@ -3,7 +3,6 @@ #include "bolos_target.h" #include "decorators.h" -#ifdef HAVE_BAGL #ifdef HAVE_SE_SCREEN // SYSCALL void screen_write_frame(unsigned char* framebuffer PLENGTH(BAGL_WIDTH*BAGL_HEIGHT/8)); /** @@ -53,4 +52,3 @@ SYSCALL void bagl_hal_draw_rect(unsigned int color, unsigned int width, unsigned int height); #endif // HAVE_SE_SCREEN -#endif // HAVE_BAGL diff --git a/lib_nbgl/doc/mainpage.dox b/lib_nbgl/doc/mainpage.dox index 3131b28d6..f9c4f4793 100644 --- a/lib_nbgl/doc/mainpage.dox +++ b/lib_nbgl/doc/mainpage.dox @@ -1,3 +1,4 @@ +#ifdef HAVE_SE_TOUCH /** @page nbgl_mainpage New BOLOS Graphic API @section mainpage_intro Introduction @@ -57,3 +58,4 @@ Applications are free to define \b NBGL_KEYBOARD, \b NBGL_KEYPAD or \b NBGL_QRCO "rare" objects. */ +#endif // HAVE_SE_TOUCH diff --git a/lib_nbgl/doc/mainpage_nanos.dox b/lib_nbgl/doc/mainpage_nanos.dox new file mode 100644 index 000000000..f2dfa14db --- /dev/null +++ b/lib_nbgl/doc/mainpage_nanos.dox @@ -0,0 +1,65 @@ +#ifndef HAVE_SE_TOUCH +/** @page nbgl_mainpage New BOLOS Graphic API + +@section mainpage_intro Introduction + +This documentation describes the different interfaces of NBGL, the library that +is targeted to be integrated in Stax product. + +NBGL Engine is responsible for constructing screens and handling Touchscreen input. + +@section mainpage_overall_archi Overall architecture + +NBGL Engine is a library to be integrated in SDK. +It is intended to replace existing BAGL/FLOW Graphical Engine (used on Nanos/Blue products) + +\image{inline} html NBGLArchi.png "caption" height=600 + +@section nbgl_drawing_api Screen drawing APIs + +@subsection nbgl_app_use_case_api_1 Application Use-cases API +This is the most preferred API level to write an embedded Application. + +The @subpage nbgl_app_use_case_nanos page contains all information necessary to understand +and use \b NBGL Application Use cases API + +@subsection nbgl_flow_level_api_1 Flow API +The @subpage nbgl_flow page contains all information necessary to understand +and use \b NBGL Flow API, managing a scenario flow, made of one or several steps + +@subsection nbgl_step_level_api_1 Step API +The @subpage nbgl_step page contains all information necessary to understand +and use \b NBGL Step API, managing the page(s) of a scenario step + +@subsection nbgl_mid_level_api_1 Complex objects (layout) API +The @subpage nbgl_layout page contains all information necessary to understand +and use \b NBGL Mid-Level API, using complex objects + +@subsection nbgl_low_level_api_1 Low-Level API +The @subpage nbgl_obj page contains all information necessary to understand +and use \b NBGL Low-Level API + +@section nbgl_screen_objs Screen and objects management +The @subpage nbgl_screens_and_objs page contains all information necessary to understand +how \b NBGL manages the screens stack and the dynamically allocated objects + +@section nbgl_touch_api Touchscreen events management +The @subpage nbgl_touchscreen page contains all information necessary to understand +how \b NBGL manages the touchscreen events and how to receive and process these events. + +@section nbgl_building Compilation options +In order to reduce the footprint (RAM+Flash), some features are only activated if some building options are defined. + +Define | Meaning | Default state +------------- | ------------- | ------------- +\b NBGL_PAGE | Activate High-Level API | Active in SDK, not in OS +\b NBGL_USE_CASE | Activate Use Case API | Active in SDK, not in OS +\b NBGL_KEYBOARD | Activate Keyboard object | Active in OS, not in SDK +\b NBGL_KEYPAD | Activate Keypad object | Active in OS, not in SDK +\b NBGL_QRCODE | Activate QRCode object | Active in OS, not in SDK + +Applications are free to define \b NBGL_KEYBOARD, \b NBGL_KEYPAD or \b NBGL_QRCODE in their own Makefile if they need to use these +"rare" objects. + +*/ +#endif // HAVE_SE_TOUCH diff --git a/lib_nbgl/doc/nbgl_flow.dox b/lib_nbgl/doc/nbgl_flow.dox new file mode 100644 index 000000000..560f1db23 --- /dev/null +++ b/lib_nbgl/doc/nbgl_flow.dox @@ -0,0 +1,104 @@ +#ifdef NBGL_STEP +/** @page nbgl_flow Flow API + +@section nbgl_flow_intro Introduction +This chapter describes briefly the Flow API of Advanced BOLOS Graphic Library. + +This layer offers a way to handle multi-steps flows in typical scenarios of Nanos OS or Apps, like a transaction, a navigation in a menu. + +A full description of the way to create and interact with a flow can be found in this document + +@section nbgl_flow_concepts Concepts + +This layer uses the step API described in @ref nbgl_step, but for list of steps. The navigation between steps is entirely managed +by the flow engine. + +@subsection nbgl_flow_example Example + +\image{inline} html layout_nanos_flow1.png "caption" height=200 + +In this example, a flow made of 4 steps (each on one page) is built. The navigation is possible between these steps (no loop), and the +last step can be selected (double button press). + +@section nbgl_flow_operations Operations + +@subsection create_flow Draw a flow + +The configuration of a flow is provided in a single function call, through @ref nbgl_flowDraw() which will: + +- draw the first step +- Refresh after first step drawing + +The arguments of @ref nbgl_flowDraw() are: + +- An array of step descriptions (see below) +- The index of the step to start with in step descriptions array +- A boolean indicating whether the flow shall be modal or not +- A boolean indicating whether the flow is circular or not (loop) + +@code +static char string_buffer[128]; + +static void onPrepareOSversion(void); +static void onPrepareMCUversion(void); +static void onPrepareBootloaderversion(void); +static void onBack(void); + +static nbgl_flow_t flowContext; + +static const nbgl_stepDesc_t flowSteps[] = { + { + .text = "\bSecure Element", + .subText = string_buffer, + .init = onPrepareOSversion + }, + { + .text = "\bMicrocontroller", + .subText = string_buffer, + .init = onPrepareMCUversion + }, + { + .text = "\bBootloader", + .subText = string_buffer, + .init = onPrepareBootloaderversion + }, + { + .text = "\bBack", + .callback = onBack, + .icon = &C_icon_back + } +}; + +static void onPrepareOSversion(void) { + os_version((unsigned char*)string_buffer, 32); +} + +static void onPrepareMCUversion(void) { + os_seph_version((unsigned char*)string_buffer, 32); +} + +static void onPrepareBootloaderversion(void) { + os_bootloader_version((unsigned char*)string_buffer, 32); +} + +static void onBack(void) { + nbgl_flowRelease(flowContext); + // go to parent flow +} + +void displayInfo() { + // use string_buffer as temporary buffer + memset(string_buffer, 0, 128); + flowContext = nbgl_flowDraw(flowSteps, 4, 0, false, false); +} + +@endcode + +@subsection page_release Releasing a predefined page + +Before leaving a screen built with a layout, it must be released with a call to @ref nbgl_flowRelease(). It will free the allocated +objects. + + +*/ +#endif // NBGL_STEP diff --git a/lib_nbgl/doc/nbgl_layout.dox b/lib_nbgl/doc/nbgl_layout.dox index eda54fa8f..e422d736a 100644 --- a/lib_nbgl/doc/nbgl_layout.dox +++ b/lib_nbgl/doc/nbgl_layout.dox @@ -1,3 +1,4 @@ +#ifdef HAVE_SE_TOUCH /** @page nbgl_layout Complex objects layout API @section nbgl_layout_intro Introduction @@ -743,3 +744,4 @@ objects. */ +#endif // HAVE_SE_TOUCH diff --git a/lib_nbgl/doc/nbgl_layout_nanos.dox b/lib_nbgl/doc/nbgl_layout_nanos.dox new file mode 100644 index 000000000..7b8b22c46 --- /dev/null +++ b/lib_nbgl/doc/nbgl_layout_nanos.dox @@ -0,0 +1,309 @@ +#ifndef HAVE_SE_TOUCH +/** @page nbgl_layout Complex objects layout API + +@section nbgl_layout_intro Introduction +This chapter describes briefly the mid level API of Advanced BOLOS Graphic Library. + +This layer offers a simplified view of a screen page, using complex (aggregated) objects, like a centered info or a set of navigation arrows. + +A full description of each functions/types can be found in this document + +@section concepts2 Concepts + +This layer uses the low-level API described in @ref nbgl_obj, but all graphic objects are hidden, in favor to abstract complex objects +like a centered info or a set of navigation arrows. + +Moreover, positions of objects in the page are mostly hidden and automatic. + +@subsection example_1 Example + +\image{inline} html layout_nanos_1.png "caption" height=300 + +In this example, 2 "objects" are used and added to the page with dedicated APIs: + +- A centered information area with an icon and a main text +- A set of navigation arrows, indicating that the user can use left/right buttons to navigated across pages + +@section operations Common operations + +@subsection create_layout Getting a new layout + +The first operation is always to get a new layout, with the desired parameters: + +- An action callback used for all controls of the page +- A boolean indicated whether the page is modal or not (on top of existing ones, or in background plane) +- A potential ticker configuration if a ticker is required for the page + +The function to actually create the layout is @ref nbgl_layoutGet() + +For example: + +@code + nbgl_layoutDescription_t layoutDescription = { + .modal = false, // not modal (so on plane 0) + .onActionCallback = &myActionCallback, // generic callback for all controls + .ticker.callback = NULL // no ticker + }; + // create layout + nbgl_layout_t *layout = nbgl_layoutGet(&layoutDescription); +@endcode + +@subsection draw_layout Drawing a populated layout + +Once defined and populated, all objects can be drawn in **framebuffer** +with a simple call to @ref nbgl_layoutDraw(). + +@section add_objects Populating a layout + +Once the layout is defined and retrieved with @ref nbgl_layoutGet(), the page can be filled with complex objects. + +@subsection centered_info Centered info area + +\image{inline} html layout_nanos_centered.png "caption" height=300 + +This object is made of: + +- An optional icon +- An optional main text under the icon +- An optional sub text under the main text + +The whole object is centered horizontally in the page + +It can be either centered vertically or put on top of the page. + +The API to insert such an object is @ref nbgl_layoutAddCenteredInfo(), using @ref nbgl_layoutCenteredInfo_t structure + +The fonts for the texts depends of the \b style field used in @ref nbgl_layoutCenteredInfo_t. + +- if @ref REGULAR_INFO, main text and sub text are in regular case +- if @ref BOLD_TEXT1_INFO, main text is in bold case (and sub text in regular case) + +@subsection navigation Navigation area + +\image{inline} html layout_nanos_nav1.png "caption" height=300 + +or + +\image{inline} html layout_nanos_nav2.png "caption" height=300 + + +This object is made of: + +- 1 or 2 arrows on left and right of the screen + +The arrows are centered vertically in the page + +There are two styles for the arrows: + +- either @ref HORIZONTAL_NAV for navigation between pages +- or @ref VERTICAL_NAV for navigation between menu items + +The API to insert such an object is @ref nbgl_layoutAddNavigation(), using @ref nbgl_layoutNavigation_t structure + +The "direction" and the number of arrows (left, right or both) to use are set in @ref nbgl_layoutNavigation_t. + +@subsection menu_list Menu List area + +\image{inline} html layout_nanos_menu_list.png "caption" height=300 + +On screen, the visible part of his object is made of up to 5 menu item elements (single line, centered horizontally) + +The first and last of the 5 lines are only partially visible (horizontal cut) + +The API to insert such an object is @ref nbgl_layoutAddMenuList(), using @ref nbgl_layoutMenuList_t structure, +which enables to configure: + +- The total number of items in the list. +- The selected item index in the list (that will be highlighted in bold, and always be centered vertically) +- A callback that will be called to get the text of each displayed menu item + +@subsection keyboard_section Keyboard-related objects + +Some rare screens require displaying a keyboard at the bottom of the page, to enter text. + +The text to enter may be a generic string or a word (for example BIP39). + +Here is an example of these pages in Bolos UX: + +\image{inline} html layout_nanos_keyboard1.png "caption" height=300 + +To build such screens, some dedicated APIs are necessary, which will be detailed in the sub-chapters. + +@subsubsection keyboard_sub_section_1 Adding/Updating keyboard + +This object, in the center of screen (with a margin), proposes a rotating keyboard, displaying 3 letters at max, +(from 'a' to 'z' in letters-only). + +The parameters to configure this object are: + +- The mode in which to start the keyboard (letters, digits or special characters) +- A boolean to indicate whether to display only letters, with no space and no shift key to switch between modes +- A boolean to indicate whether to display a backspace key or not. +- A boolean to indicate whether to display a validate key or not. +- A 32 bits mask used to invalidate (remove) some keys on the keyboard (in letters-only mode). +- A function to be called when an active key is pressed + +The API to insert such an object is @ref nbgl_layoutAddKeyboard(), with @ref nbgl_layoutKbd_t structure as parameter. + +This function returns a positive integer (if successful) to be used as an index in @ref nbgl_layoutUpdateKeyboard() function, +used to modify an existing keyboard. + +@note the 32 bits mask works like this: +- If mask[0] bit is 1, the 'a' key is invalid +- If mask[1] bit is 1, the 'b' key is invalid +- And so on in "abcdefghijklmnopqrstuvwxyz" string. +- If mask[26] bit is 1, the backspace key is not used + +@subsubsection keyboard_sub_section_4 Adding/Updating entered text + +This object, displayed under the keyboard consists in a set of 9 placeholders +representing the text entered with the keyboard. + +If text is too long to be displayed (more than 8 characters), the beginning is replaced by ".." + +The only parameter to configure this object is: + +- The \b text to display + +The API to insert such an object is @ref nbgl_layoutAddEnteredText(). + +This function returns a positive integer (if successful) to be used as an index in @ref nbgl_layoutUpdateEnteredText() function, +used to modify the text. + +@subsubsection keyboard_example Example + +Here is the source code to display the example: + +@code +static nbgl_layout_t *layout; +static char textToEnter[10]; +static char headerText[24]; +static int textIndex, keyboardIndex; + +// function called when a key of keyboard is touched +static void keyboardCallback(char touchedKey) { + +} + +void app_keyboard(void) { + nbgl_layoutDescription_t layoutDescription = { + .modal = false, + .onActionCallback = NULL + }; + nbgl_layoutKbd_t kbdInfo = { + .callback = keyboardCallback, + .keyMask = 1<<26, // no masked letter but masked backspace + .lettersOnly = true // only letters are allowed + }; + nbgl_layoutCenteredInfo_t centeredInfo = { + .text1 = descriptionTxt, + .text2 = NULL, + .icon = NULL, + .onTop = true + }; + nbgl_layoutNavigation_t navInfo = { + .direction = HORIZONTAL_NAV, + .indication = LEFT_ARROW | RIGHT_ARROW + }; + int status; + + // create description text + sprintf(headerText,"Enter word #%d",12); + + // get empty layout + layout = nbgl_layoutGet(&layoutDescription); + // add description + nbgl_layoutAddCenteredInfo(layout, ¢eredInfo); + + // add keyboard + status = nbgl_layoutAddKeyboard(layout, &kbdInfo); + if (status < 0) + return; + keyboardIndex = (uint8_t)status; + // add empty entered text + status = nbgl_layoutAddEnteredText(layout, ""); + if (status < 0) + return; + textIndex = (uint8_t)status; + nbgl_layoutAddNavigation(layout, &navInfo); + nbgl_layoutDraw(layout); + nbgl_refresh(); +} +@endcode + +@subsection keypad_section Keypad-related objects + +Some rare screens require displaying a keypad at the bottom of the page, to enter digits. + +The digits to enter are usually a PIN code, to enter or to confirm. + +Here are some example of these pages in Bolos UX: + +\image{inline} html layout_nanos_keypad1.png "caption" height=300 + +To build such screens, some dedicated APIs are necessary, which will be detailed in the sub-chapters. + +@subsubsection keypad_sub_section_1 Adding/Updating keypad + +This object is made of an area at the bottom of the screen, presenting the 10 digits, a backspace and a validate keys, that can be navigated +with left and right buttons and selected with both buttons. And a title at the top of the screen. + +The only parameters to configure this object (at creation time) are: + +- the callback associated with active keypad key selection. +- a boolean to choose between shuffled (selection starts with any key) and regular mode (selection starts at '5' key). +- a single line string to use as title. + +The API to insert such an object is @ref nbgl_layoutAddKeypad(). + +This function returns a positive integer (if successful) to be used as an index in @ref nbgl_layoutUpdateKeypad() function, +used to modify the active keys of an existing keypad (backspace and validate keys). + +@note at creation time, backspace and validate keys are inactive + +@subsubsection keypad_sub_section_2 Adding/Updating hidden digits area + +This object, displayed on top of the keypad, consists in up to 8 discs (plain or empty) corresponding to +hidden entered/not entered digits. + +The parameters to configure this object are: + +- The number of total digits to be displayed (all digits are considered as "not entered") + +The API to insert such an object is @ref nbgl_layoutAddHiddenDigits(). + +This function returns a positive integer (if successful) to be used as an index in @ref nbgl_layoutUpdateHiddenDigits() function, +used to modify the number of entered digits. + +@section refresh_layout Refreshing screen + +After having drawn graphic objects in **framebuffer**, it is necessary to transfer the content of the **framebuffer** on display. +This operation is called a refresh. + +The API to do that is @ref nbgl_refresh() (in nbgl_obj.h) + +It will only refresh the rectangle part of the screen having changed (with objects redrawn) since the last refresh. + +@section callbacks Control actions management + +Some controls, like a touchable bar, or a choice by radio buttons, can be interacted with thanks to the Touchscreen. + +The developer can subscribe to these events by providing an action callback in @ref nbgl_layoutGet(), with @ref nbgl_layoutTouchCallback_t prototype. + +The first parameter (*token*) of this function is a token provided along with the definition of the complex object. + +The second parameter (*index*) is only used for some types of complex objects: + +- **Navigation bar**: in this case, *index* gives the index of the new active page, when navigating. +- **Radio button choices**: in this case, *index* gives the index of the selected choice. +- **Switches**: in this case, if *index* is 0 it means OFF, otherwise it means ON. +- **Choice buttons**: in this case, if *index* is 0, it means top-button (choice 1), otherwise it means bottom-buttom (choice 2) + +@subsection release Releasing a layout + +Before leaving a screen built with a layout, it must be released with a call to @ref nbgl_layoutRelease(). It will free the potentially allocated +objects. + + +*/ +#endif // HAVE_SE_TOUCH diff --git a/lib_nbgl/doc/nbgl_page.dox b/lib_nbgl/doc/nbgl_page.dox index 86138a9bc..65be3ad9a 100644 --- a/lib_nbgl/doc/nbgl_page.dox +++ b/lib_nbgl/doc/nbgl_page.dox @@ -1,3 +1,4 @@ +#ifdef NBGL_PAGE /** @page nbgl_page Predefined pages API @section nbgl_page_intro Introduction @@ -245,3 +246,4 @@ objects. */ +#endif // NBGL_PAGE diff --git a/lib_nbgl/doc/nbgl_step.dox b/lib_nbgl/doc/nbgl_step.dox new file mode 100644 index 000000000..4b5838878 --- /dev/null +++ b/lib_nbgl/doc/nbgl_step.dox @@ -0,0 +1,130 @@ +#ifdef NBGL_STEP +/** @page nbgl_step Step API + +@section nbgl_step_intro Introduction +This chapter describes briefly the high-level API of Advanced BOLOS Graphic Library. + +This layer offers a simplified view of a screen page (or multi-pages), using predefined models, like a centered info, or a menu list, managing +the internal navigation between the internal pages of a step. + +A full description of each type of steps can be found in this document + +@section nbgl_step_concepts Concepts + +This layer uses the complex-objects API described in @ref nbgl_layout, but all objects are hidden, in favor to fields to configure, for example +texts, icons and callbacks. + +Moreover, positions of objects in the page are hidden and automatic. + +And finally, if a step requires using multiple pages (for example for a long text to display, or a long menu list), the step engine manages the +navigation between these pages. + +@section nbgl_step_operations Operations + +@subsection create_page Draw a step + +The configuration of a step is provided in a single function call, and all predefined pages APIs will do the following operations: + +- Create the page +- Add required complex objects in the page +- Draw the objects in the **framebuffer** +- Refresh the display with **framebuffer** content + +For every types of steps, the navigation inside the step is managed by the step engine, but even for navigation outside it (between steps of +a flow), the navigation arrows are drawned by the engine. + +A few APIs are available to draw typical pages, like: + +- @ref nbgl_stepDrawText() to draw a text and a sub-text on one or several lines/pages, with navigation +- @ref nbgl_stepDrawCenteredInfo() to draw an icon, a text and a sub-text in a single page, with navigation +- @ref nbgl_stepDrawMenuList() to draw a menu list, with navigation + +@subsection step_typical_types Typical step types + +@subsubsection step_text_type Generic Text Step + +This type is intended to draw one or two centered (vertically and horizontally) text(s) in the screen. + +If there is no sub-text and the main-text doesn't fit in a single page (taking wrapping into account), the text is automatically split +into several pages, and the navigation is set accordingly, and manage automatically between these internal pages. See first example. + +\image{inline} html layout_nanos_step_text1.png "caption" height=200 + +If there is a sub-text, the main-text must fit in a single line. The sub-text can be multi-pages, and in this case the main-text is +considered as title, and an indication is automatically added to this "title" to show the current "page" and number of pages. See +second example. + +\image{inline} html layout_nanos_step_text2.png "caption" height=200 + +The API to insert such an object is @ref nbgl_stepDrawText() with: + +- A callback to handle the actions on buttons (left, right or both) +- A potential ticker configuration. +- A potential main text +- A potential sub-text +- The position of the step in a flow (see @subpage step_positioning) +- A boolean to indicate whether this step is modal or not +- The style to use for text and sub-text (@ref REGULAR_INFO or @ref BOLD_TEXT1_INFO) + +@note left or right buttons actions are only notified with the provided callback if on the first page (for left) or on the +last page (right) for a multi-pages step. + +@subsubsection step_centered_info_type Centered Info Step + +This type is intended to draw a centered info, with an icon, a main text and a sub-text in the screen. The texts are optional. + +\image{inline} html layout_nanos_step_centered.png "caption" height=200 + +The API to insert such an object is @ref nbgl_stepDrawCenteredInfo() with: + +- A callback to handle the actions on buttons (left, right or both) +- A potential ticker configuration +- A mandatory icon +- A potential main text +- A potential sub-text +- The position of the step in a flow (see @subpage step_positioning) +- A boolean to indicate whether this step is modal or not +- The style to use for text and sub-text (@ref REGULAR_INFO or @ref BOLD_TEXT1_INFO) + +@subsubsection step_menu_list_type Menu List Step + +This type is intended to draw a menu list, and manage the navigation between the items of the list + +\image{inline} html layout_nanos_step_menu_list.png "caption" height=200 + +The API to insert such an object is @ref nbgl_stepDrawMenuList() with: + +- A callback to handle the selection (press both buttons) of a menu item +- A potential ticker configuration. +- The menu list description structure +- The position of the step in a flow (see @subpage step_positioning) +- A boolean to indicate whether this step is modal or not + +@subsection step_release Releasing a step + +Before leaving a screen built with a layout, it must be released with a call to @ref nbgl_stepRelease(). It will free the allocated +objects. + +Releasing a step has no effect on the display, even if a modal step is released. + +@note Releasing is mandatory for modal step, but if on background, it will be automatically released when a new step will be allocated + +@subsection step_positioning Step Positioning + +Usually, a step is part of a flow (list of steps, to be parsed in forward or backward direction). +To indicate to the end-user that navigation between steps is possible, navigation arrows need to be displayed on left and right sides +of the screen (as < and > 'arrows'). + +The navigation can also loop in some cases (only for Applications), which means that at the end of the last step, when pressing +right button the engine will display the beginning of first step (and vice versa). + +To indicate to step engine which 'flow navigation' to draw, an argument (position) is provided to all API used to create steps. +This argument (of type @ref nbgl_stepPosition_t) can take the following values: + +- @ref SINGLE_STEP if this is a single step flow (in this case, no 'flow navigation' is displayed) +- @ref FIRST_STEP if this is the first step in a multiple steps flow +- @ref LAST_STEP if this is the last step in a multiple steps flow +- @ref NEITHER_FIRST_NOR_LAST_STEP, if this is the neither the first nor the last step in a multiple steps flow + +*/ +#endif // NBGL_STEP diff --git a/lib_nbgl/doc/nbgl_use_case.dox b/lib_nbgl/doc/nbgl_use_case.dox index 0db17abd7..c71cc5662 100644 --- a/lib_nbgl/doc/nbgl_use_case.dox +++ b/lib_nbgl/doc/nbgl_use_case.dox @@ -1,3 +1,4 @@ +#ifdef HAVE_SE_TOUCH /** @page nbgl_app_use_case Predefined Application Use-cases API @section nbgl_use_case_intro Introduction @@ -872,3 +873,4 @@ So no need to call @ref nbgl_refresh(). */ +#endif // HAVE_SE_TOUCH diff --git a/lib_nbgl/doc/nbgl_use_case_nanos.dox b/lib_nbgl/doc/nbgl_use_case_nanos.dox new file mode 100644 index 000000000..01020dfa7 --- /dev/null +++ b/lib_nbgl/doc/nbgl_use_case_nanos.dox @@ -0,0 +1,497 @@ +#ifndef HAVE_SE_TOUCH +/** @page nbgl_app_use_case_nanos Predefined Application Use-cases API + +@section nbgl_use_case_intro Introduction +This chapter describes the Application Use-cases API of Advanced BOLOS Graphic Library. + +This layer offers a simplified view of some typical use-cases of display in an Application running on Stax. +For example, a use-case can be: + +- Reviewing a transaction/message +- Reviewing details on a given data of a transaction/message +- Displaying pages of settings + +A full description of each predefined use-case can be found in this document + +@section nbgl_use_case_concepts Concepts + +This layer uses the Step API described in @ref nbgl_step, but offers to developer more than a single step. + +The goal is to simplify the usage of NBGL, but also to offer a better homogeneity across applications, by pushing +developers to use common API for common use-cases. + +So that not only the look of the pages but also their transitions look the same. Which should be a real help +for end-users, getting more and more familiar with the user experience of applications. + +@subsection nbgl_use_case_example_1 Example 1: transaction review + +\image{inline} html UseCase-Review1.png "caption" height=300 + +In this example, a transaction review consists in 3 successive pages, and can be seen as a use-case + +@subsection nbgl_use_case_example_2 Example 2: settings pages + +\image{inline} html UseCase-Settings1.png "caption" height=300 + +In this example, a parsing the settings (single level) consists in 2 pages, and can be seen as another use-case. + +@section nbgl_use_cases Use Cases + +A few APIs are available to draw typical Use-Cases, such as: + +- for Home Screen: + - @ref nbgl_useCaseHome() to draw the home screen of an application (see @subpage use_case_home) +- for Settings: + - @ref nbgl_useCaseSettings() to draw a level of settings pages (see @subpage use_case_settings) + - @ref nbgl_useCaseSpinner() to draw an infinite spinner page (see @subpage use_case_spinner) +- for most used reviews: + - @ref nbgl_useCaseStaticReview() to draw the pages of a regular review, when all info are available from the beginning (see @subpage use_case_static_review) + - @ref nbgl_useCaseRegularReview() to draw the pages of a regular review (all pages but the cover one) (see @subpage use_case_regular_review) +- for rare reviews: + - @ref nbgl_useCaseForwardOnlyReview() to draw the pages of a forward-only review (without back key) (see @subpage use_case_forward_only_review) + +@subsection use_case_home Home screen Use Case + +\image{inline} html UseCase-Home.png "caption" height=300 + +Ledger would like all application to have the same home screen, so the @ref nbgl_useCaseHome() function enables to +create such a page, the only configurable parameters being: + +- the application name +- the application icon +- the tagline, a text under app name (if NULL, it will be "This app enables signing transactions on the network.") +- the callbacks when touching *quit* or *top-right* buttons +- the type of top-right button (info or settings) + +@code +extern const nbgl_icon_details_t *myAppIcon; + +void myAppSettings(void) { + // draw settings page here +} +void onQuit(void) { + // exit app here +} +void appMain(void) { + nbgl_useCaseHome("MyApp", + &myAppIcon, + NULL, + true, // with settings button + myAppSettings, + onQuit); +} +@endcode + + +@subsection use_case_settings Settings Use Case + +\image{inline} html UseCase-Settings1.png "caption" height=300 + +Usually settings (or information) of an application consist in a list of pages, each page containing: + +- some radio buttons to make a choice +- some switches for various configuration +- a list of information organized by pairs [info_name, info_value] + +The API to initiate the display of the series of pages is @ref nbgl_useCaseSettings(), providing: + +- the title of the settings series +- the page in which to start +- the number of pages +- a boolean to indicate whether the title is touchable or not (if touchable, it is used to quit the series, +so no Quit button in navigation bar) +- a callback called when the quit button (or touchable title) is touched +- a navigation callback called when navigation arrow buttons are touched (and to fill the initial page), to retrieve +the content of the page +- a last callback called when any of the controls provided in content is touched + +@note All tokens used for the given "settings" must be greater or equal than \ref FIRST_USER_TOKEN + +\image{inline} html UseCase-Settings2.png "caption" height=300 + +Here is the source code to display the first example of settings: + +@code +enum { + SWITCH1_TOKEN = FIRST_USER_TOKEN, + SWITCH2_TOKEN, + SWITCH3_TOKEN +}; + +static const nbgl_layoutSwitch_t switches[] = { + { + .initState = false, + .text = "Blind signing", + .subText = "Enable transaction blind\n" "signing", + .token = SWITCH1_TOKEN, + .tuneId = TUNE_TAP_CASUAL + }, + { + .initState = true, + .text = "Debug", + .subText = "Display contract data details", + .token = SWITCH2_TOKEN, + .tuneId = TUNE_TAP_CASUAL + }, + { + .initState = true, + .text = "Nonce", + .subText = "Display account nonce\n" "in transaction", + .token = SWITCH3_TOKEN, + .tuneId = TUNE_TAP_CASUAL + }, +}; + +static const char* infoTypes[] = { + "Version" +}; + +static const char* infoContents[] = { + "1.9.18" +}; + +static bool navCallback(uint8_t page, nbgl_pageContent_t *content) { + // the first settings page contains 3 switches + if (page == 0) { + content->type = SWITCHES_LIST; + content->switchesList.nbSwitches = 3; + content->switchesList.switches = (nbgl_layoutSwitch_t*)switches; + } + // the second settings page contains only the version of the app + else if (page == 1) { + content->type = INFOS_LIST; + content->infosList.nbInfos = 1; + content->infosList.infoTypes = infoTypes; + content->infosList.infoContents = infoContents; + } + else { + return false; + } + // valid page so return true + return true; +} + +static void controlsCallback(int token, uint8_t index) { + if (token == SWITCH1_TOKEN) { + // First switch touched + } +} + +void myAppSettings(void) { + // draw the settings Use Case (2 pages), starting at page 0 + nbgl_useCaseSettings("Ethereum settings",0,2,false,appMain,navCallback,controlsCallback); +} +@endcode + + +@subsection use_case_regular_review Regular Review Use Case + +\image{inline} html UseCase-Review1.png "caption" height=300 + +Usually transaction/message reviews consist in a sequence of pages, each page containing: + +- one or several tag/value pair or a long press button for the final page, to validate the review +- a footer to reject the review + +To navigate between pages, a back arrow is available on the top-left of the screen, and the whole page is "tappable". + +The API to initiate the display of the series of pages is @ref nbgl_useCaseRegularReview(), providing: + +- the page in which to start (usually 0) +- the number of pages (if unknown, set to 0) +- a "button" callback called when a potential button in the page's content is touched +- a navigation callback called when back key or screen is "tapped" , to retrieve +the content of the previous/next page. It is also called to fill the initial page. +- a callback called when the long press button (with param true) on last page or the footer to reject is used (with param false) + +If the number of pages is unknown at the beginning, no progress indicator will be display on top of the screen. + +Here is the code to display something similar to example picture: + +@code +// 4 pairs of tag/value to display +static nbgl_layoutTagValue_t pairs[4]; + +static void onConfirmAbandon(void) { + // display a status page and go back to main + nbgl_useCaseStatus("Transaction rejected",false,appMain); +} + +// called when long press button on 3rd page is long-touched or when reject footer is touched +static void reviewChoice(bool confirm) { + if (confirm) { + // display a status page and go back to main + nbgl_useCaseStatus("TRANSACTION\nSIGNED",true,appMain); + } + else { + nbgl_useCaseConfirm("Reject transaction?","Yes, Reject","Go back to transaction",onConfirmAbandon); + } +} + +// called to get the content of the given page +static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { + if (page == 0) { + // the first page contains 3 tag/value pairs + content->type = TAG_VALUE_LIST; + content->tagValueList.nbPairs = 3; + content->tagValueList.pairs = (nbgl_layoutTagValue_t *)pairs; + content->tagValueList.smallCaseForValue = false; + } + else if (page == 1) { + // the second page contains 1 tag/value pair + content->type = TAG_VALUE_LIST; + content->tagValueList.nbPairs = 1; + content->tagValueList.pairs = (nbgl_layoutTagValue_t *)&pairs[3]; + content->tagValueList.smallCaseForValue = false; + } + else if (page == 2) { + // the last page must contain a long press button + content->type = INFO_LONG_PRESS, + content->infoLongPress.icon = &myAppIcon; + content->infoLongPress.text = "Confirm transaction\nMyCoin send"; + content->infoLongPress.longPressText = "Hold to send"; + content->infoLongPress.longPressToken = VALIDATE_TRANSACTION_TOKEN; + } + else { + return false; + } + // valid page so return true + return true; +} + +void reviewContinue(void) { + // review on 3 pages, starting at 0 + nbgl_useCaseRegularReview(0, 3, "Reject transaction", + NULL, // no buttons because no value is too long to fit + displayTransactionPage, reviewChoice); +} +@endcode + +@subsection use_case_forward_only_review Forward only Review Use Case + +\image{inline} html UseCase-ReviewForwardOnly.png "caption" height=500 + +Some message/transaction reviews may be too long to be memorized, so it is only possible to move forward. + +In this case, no back arrow is available on the top-left of the screen. Moreover, these reviews are always done with +an unknown number of pages. +A "Skip" button is added automatically in all pages except the one with Long Press button, +to jump to last page, after an automatic confirmation modal window is displayed. + +The API to initiate the display of the series of forward-only review pages is @ref nbgl_useCaseForwardOnlyReview(), providing: + +- a "button" callback called when a potential button in the page's content is touched +- a navigation callback called when screen is "tapped" , to retrieve +the content of the next page. It is also called to fill the initial page. +- a callback called when the long press button (with param true) on last page or the footer to reject is used (with param false) + +Here is the code to display something similar to example picture: + +@code + +// 5 pairs of tag/value to display +static nbgl_layoutTagValue_t pairs[5]; + +// result of the rejection +static void onConfirmAbandon(void) { + // display a status page and go back to main + nbgl_useCaseStatus("Transaction rejected",false,appMain); +} + +// called when long press button on 3rd page is long-touched or when reject footer is touched +static void reviewChoice(bool confirm) { + if (confirm) { + // display a status page and go back to main + nbgl_useCaseStatus("TRANSACTION\nSIGNED",true,appMain); + } + else { + nbgl_useCaseConfirm("Reject transaction?","Yes, Reject","Go back to transaction",onConfirmAbandon); + } +} + +// called to get the content of the given page +static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { + if (page == 0) { + // the first page contains 3 tag/value pairs + content->type = TAG_VALUE_LIST; + content->tagValueList.nbPairs = 3; + content->tagValueList.pairs = (nbgl_layoutTagValue_t *)pairs; + content->tagValueList.smallCaseForValue = false; + } + else if (page == 1) { + // the second page contains 2 tag/value pairs + content->type = TAG_VALUE_LIST; + content->tagValueList.nbPairs = 2; + content->tagValueList.pairs = (nbgl_layoutTagValue_t *)&pairs[3]; + content->tagValueList.smallCaseForValue = false; + } + else if (page == 2) { + // the last page must contain a long press button + content->type = INFO_LONG_PRESS, + content->infoLongPress.icon = &myAppIcon; + content->infoLongPress.text = "Confirm transaction\nMyCoin send"; + content->infoLongPress.longPressText = "Hold to send"; + } + else { + return false; + } + // valid page so return true + return true; +} + +void reviewContinue(void) { + nbgl_useCaseForwardOnlyReview("Reject transaction", + NULL, // No details button so no callback needed + displayTransactionPage, reviewChoice); +} +@endcode + +@subsection use_case_static_review Static Review Use Case + +\image{inline} html UseCase-Review1.png "caption" height=300 + +In some cases, the developer may know all tag/value pairs of a transaction when it is submitted. + +In this case, what we call a "static" review can be used. It is similar to a regular review with know number of pages in terms of +presentation and interactions with end-users, but much easier to use for developer. + +Indeed, in this case, NBGL automatically computes the number of pages, and the pairs to draw in each page. +In case of a tag/value pair too long to be fully displayed, the "more" button will be automatically drawn and its handling +automatically performed by NBGL by building a detailed modal view. + +The API to initiate the display of the series of pages is @ref nbgl_useCaseStaticReview(), providing: + +- the list of tag/value pairs (or a callback to get them one by one) +- the texts to use in footer and in last page +- a callback called when the long press button on last page or the footer to reject is used. The callback's param is true for confirmation, false for rejection. + +Here is the code to display something similar to example picture: + +@code +// 4 pairs of tag/value to display +static nbgl_layoutTagValue_t pairs[4]; + +static nbgl_layoutTagValueList_t pairList = { + .nbMaxLinesForValue = 0, + .nbPairs = 4, + .pairs = (nbgl_layoutTagValue_t*)pairs +}; + +// result of the rejection choice +static void onConfirmAbandon(void) { + // display a status page and go back to main + nbgl_useCaseStatus("Transaction rejected",false,appMain); +} + +// called when long press button on 3rd page is long-touched or when reject footer is touched +static void reviewChoice(bool confirm) { + if (confirm) { + // display a status page and go back to main + nbgl_useCaseStatus("TRANSACTION\nSIGNED",true,appMain); + } + else { + // display a confirmation to confirm/cancel rejection + nbgl_useCaseConfirm("Reject transaction?","Yes, Reject","Go back to transaction",onConfirmAbandon); + } +} + +void reviewContinue(void) { + static nbgl_pageInfoLongPress_t infoLongPress = { + .icon = &myAppIcon, + .text = "Confirm transaction\nMyAppCoin send", + .longPressText = "Hold to send" + }; + + // static review, providing the whole list of pairs + nbgl_useCaseStaticReview(&pairList, &infoLongPress, "Reject transaction", reviewChoice); +} +@endcode + +Here is another version of the example code, using a callback mechanism to get tag/value pairs: + +@code +// common tag/value pair to return +static nbgl_layoutTagValue_t pair; + +static nbgl_layoutTagValue_t* getPair(uint8_t index); + +static nbgl_layoutTagValueList_t pairList = { + .nbMaxLinesForValue = 0, + .nbPairs = 4, + .pairs = NULL, // to indicate that callback should be used + .callback = getPair, + .startIndex = 0 +}; + +// result of the rejection choice +static void onConfirmAbandon(void) { + // display a status page and go back to main + nbgl_useCaseStatus("Transaction rejected",false,appMain); +} + +// called when long press button on 3rd page is long-touched or when reject footer is touched +static void reviewChoice(bool confirm) { + if (confirm) { + // display a status page and go back to main + nbgl_useCaseStatus("TRANSACTION\nSIGNED",true,appMain); + } + else { + // display a confirmation to confirm/cancel rejection + nbgl_useCaseConfirm("Reject transaction?","Yes, Reject","Go back to transaction",onConfirmAbandon); + } +} + +// function called by NBGL to get the pair indexed by "index" +static nbgl_layoutTagValue_t* getPair(uint8_t index) { + switch (index) { + case 0: + pair.item = "To"; + pair.value = "0x123456"; + break; + case 1: + pair.item = "From"; + pair.value = "0x654321"; + break; + case 2: + pair.item = "Amount"; + pair.value = "1.2345 BTC"; + break; + case 3: + pair.item = "Fees"; + pair.value = "0.1 BTC"; + break; + } + return &pair; +} + +void reviewContinue(void) { + static nbgl_pageInfoLongPress_t infoLongPress = { + .icon = &myAppIcon, + .text = "Confirm transaction\nMyAppCoin send", + .longPressText = "Hold to send" + }; + + // static review, providing the whole list of pairs + nbgl_useCaseStaticReview(&pairList, &infoLongPress, "Reject transaction", reviewChoice); +} +@endcode + +@subsection use_case_spinner Spinner Use Case + +\image{inline} html UseCase-Spinner.png "caption" height=300 + +When an address needs to be confirmed, it can be displayed in a Address Confirmation Use Case, at first as simple page with +the raw address (as text) and a black button/Footer pair to choose to confirm or reject the address. + +An extra button under the raw address enables to open a modal page to see the address as a QR code. + +The @ref nbgl_useCaseSpinner() function enables to create such a page, with the following parameters: + +@section use_case_refresh_page Refreshing screen + +After having drawn graphic objects in **framebuffer**, all functions of this API automatically refresh the screen. +So no need to call @ref nbgl_refresh(). + + +*/ +#endif // HAVE_SE_TOUCH diff --git a/lib_nbgl/doc/resources/layout_nanos_1.png b/lib_nbgl/doc/resources/layout_nanos_1.png new file mode 100755 index 0000000000000000000000000000000000000000..ceceed23e1766fd3054984db9b2a92848fb622d5 GIT binary patch literal 22290 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 RNg%nsq^YW>QmJGW`X8b=Z*%|v literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/layout_nanos_centered.png b/lib_nbgl/doc/resources/layout_nanos_centered.png new file mode 100755 index 0000000000000000000000000000000000000000..34786fd34298d0fd61c4b79f7fd2c348eddd6c99 GIT binary patch literal 16294 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�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�VwPWz=9Z1YKE88M@+_$Ubjo>v;RKUP0p z(2DE_qV^?np!Vmdg-ko{PlmY<1!FjwG(8S7DV?tR^|>CfjQz1HFA^D-rfNj_{QDt< z^j+VU`)WV`az*|0O!ni1g3|fC`Im(@?NUr;5Y@)hBl>T6c=^r@*GG?cOj^M?(lJ_P zRkI}5w{DZI*Q5r$5#k38wpYe~SiO1#*dMQmWXjtJHPHFK`ir7FLam02%ZqFnYh`T4 zrAgNy!mAi>8>RpI$czyT3SNYkC%YzZ4~zD1B~ac~_IjY{|CVQ4*f8hy?e6q*o%OICu+_Et`+f+Jumf(ho%=r8cF9pn;PBl9feT3>w)d(J;~#gsNG3y}(+_|8 zD5bcd)bAcoUd)GtMtcmRw%95 z)lqoKf;H!oEOaC>ZSKl=da-gu2#n=?cyW0*&2FxEy_f%GsR4uGeSAi1R;P}tk;Kca z^Ydui^I=}&S`sAD_q0cilH5D=sVw6oW+wW)pCB2vINYOr*&v@eV+*h8lP+|#Tyj<> zbW~l>T#)qHW`7<*N=y#p8bx*Wa+(a9!9QF1TAqeuFe08p{7luo#EId^*E*nXe`;wjjJytF%&0 zJ=+DUQX8`Up=RE~EI{b6-}TlM$9JnNn9N2}stxaN_<)o7DzAFJ-fdP6!|4EpVB-|o zPRNy6&RGm_o2}HL{uT{9cy}%>tmt$;Jdmkey)A&v0M0r)OPT+9T!M-k930A)YHO+8 zuEV`onJu|6%B%;L8$8<@NXpshJHdXm*0is-TQu#R2rt1w=l7qlUs1cRMh)9gFp)@7 zR&eBfF~poXZaM+swaZzz!UmaTp91#^M>5i@kTWitL_LmrQ*5=IJ1N$D`d#-q)Zi7H zM*~u!L5kbZ>dz~JFFerU!34_d!hENa4=#|Gd9Gqxo7BC{>plpIcRvwmwcZDHy4Xcl zhNBo}iCQ;F&zgy!SADKTmUYGQCUfw{K3eoY_PtlwFrqs~GP6|F-k~t>XFZe!<-? z4!4KEcr(5$ai2ci$5lRwS9v=eE<$|hQG9EW7$%GN7t?WqOOcDph?Ar@rMiZO6 zOJz&sc(RNxt%pwJ0g4+iIp^#|sZ56Ave7ecyYW2{s;2dxMwk71(*@OlnP!v~YHg`^~`D zpP5sFM%>50Q5B8RKcqOh?1@#sCUt$Cg@7(G6-IF7{-ymaGiVYDLcZ%!e8bc5O_Dg% zKL)85dZW%;==L_*SK%^9!^X^fN|sw(ZsL`9#zkIoM+Ig45TWZPrY{N`YjeWMwxQ%O;>g+*zpkS5V5PU|C&`x3QSwjrn= zx(Yu^xeV9+Nor@um-34qqPSqgK1g?@#_wXQ`;n=amK*jI;QL1`Dx80j#}Sx1Xn!vs zgUu|~ZhRMiTv#@p2j{nF5G}$?rA;391GIQ54Th)IL62KmrZ*nW2aU@lZlb(d{#)>m zr~BR=dhvnEk`l4gHwo0eiB7vis`BX(O``(Jheo)BBg_f1sYM*-#>*bnNY>+Y#Ffp* zZ5!3W;H|y{9s6)QYOF}^m$Jn&2&|R^*f?gL1lI#p>5I`6XA!&*e!Z`l;)@VVl;m-D z$_By=wikOR1tS~?<}6B1U8r9)T0e3BI!MRG)MB7+z4}yBq8%z*MtV?3gpZ{1aDQ%w zBm5bi=iX*ZNS*&2<--UMGR;m(cA|2u?Muy|D`w-?oAuDR?9m%jOGh=AmyCer)q7_DXk{X|69({Op|3MdKXu$j)*S!vJ(d(s>%n6g#_V zhH^*j-2p2j^*eLN41J-jH?l;fV3IPDI+~#Vdilv6$C9J_YgQD6Z!xv(;6SAm&!bB% z?G&?nog0-hQ-e?`g%ZjsJ%X3S?~iwDLA-~hyB7Bc6a{%Nze&CduPIbMgj42}u_nyp zZ&S#lvR|;EZok&SvD@rVBBTH>KETHu{{zdwu(#ov29;jC%zvbf_dYc}g`o zxrG(M{#|Iw@*JrQJ=*6wA&A>rGiaP9hJ)7aB$q%07LlC~4N<&Xb|>W)EaS;0aUa>8 zSj$$H?v0Qyod+XR=htqpJS|r$T@>c41V=>_Di8}UlbYoipO!a>AO`IUc*a&2a!j6$ z)dYi8@kn~V7ne);cV{KW>Nqcr5PY3qQ2JBuoq5!Sepq?yF@hy5BoG%VSZ18eZT_l$ z#jC*cT<%h1pmC?jDTXQaOWd~}W6?w2;{w032Fy;br4 zw9qbs`@QzV_

YBpxJXmouFZj@0(*@LnDP9Zgjw~jN!J%MI>j8O_7>Wor_Q#c_%T3UPv2sY{-@k{#{bTsgE{@Hl~)>J zo)Hmh`lNMDJUEOZyESvX$i;+~XFNWGYJzNRczfF&D7~1_EOu~b$%G6qut>E{PhDGUgH=9=tGoE1~ z`quvGA?^fvkQPQ{rFgjZh!V&%<#}KEY3dsZ3)~*Cm7PvurZQ8R&W(*SlPob&r0Qp; zx91Ajx?YW+;K%9Sl@w=gywhtdZ)7tr;Ai6V^Xa7AnAVI_Ty^i8`kKgMsQA=R_2q}4 z?ow}EeVKN#T7B3Ky9=wA3^S|c-cXVZu??{@BjAoA_yGi6(N)LI3W(T-zwh*k10su8 z3c+yB-aj|p|5l3~OmI9$N!*KzJF{LW=RS|j$sy82*Z7+i?8tVP^^$K@V^9{~1%*k=zkAd=3=sS4IUZTXk~Du^AO= zYDG8*f!}RE2bidzkfsfHn0!PCkm#wMnHO#2AriFPHp3Kc!i?mV4<}!-M_T{ExvZFJ z?pDny{z~2TBR7U@9$xZjP~*XpbkhR=)a zhC>>YdDHvl>MR#2Te&e3N)=rjE4D(|B>HhIJ(;`wi1URLl~-2~{EY{-;ve00we@r+ z;UhdIihI8_=xAf*c(lW;cX~`h&_+_&h)_*pxZj5sP&13YxqS7cXyAWYz?_i87Uws3 zLdX-?6JC0Cf|V@Sy=0%KZn=6mi#-g%Gla^NQLFHu`Xi}U<>VLh-C!d)K=yW{vEcoe zk%heC!%%P}(``N~P|ZG&W8iZu^$# zPE?fU@uAeo23O!AgzjJ?^FyZBeI-E z<-9`Uj-p^7+diMOFr9~n7)rpUh!{0;v}Pe_ct=ogJ#=nO>~_SEAw(e=LV$a=ZiZrM z=O|)bG(B2L;<3|k{8hejfXAqEw)pd%3)jc1i#>UQv>M1b9UO|Q;cOgIz&@8)N%d*9 zM(JuB`t&I3`RUz3wivm({0}^ac~f{l)bXsZC{;&I?=9={ZMJ8Bp^!j1c)z!fawHFL zPcUhcV*Z8b{z7DkvlhI>*L55pF)?NBr_AkX1>Ao6K3PuJe3}~KFuY6p9h|UWP+5Q- z?J%|rV$JcF#}+jtP8F(mB(TZ|{*uW4zE*Ch{Ce9};mGp-QXR)|bPPKXwUFy97|gCb zs^N`RpH$O^f+#2kJqkE=&W2;A<+~s}2aJmv2Y5!7GPTa60b;48%xi#;& z>Tcg@jKosiA6lDD(3-gKiTyUM$;mlLiR(5N-FW3)P!qN2QY^xFPwjSh9pCEygJok;Y~UnSZzRlphPILSBd8&>#cP^A zjv%!9X0iF_I<<=5XFc{Ht$TCG z%Jy50BVlIV%IRe2=JFVo-jKns2b`g|-NSRKX$>U4OPInCUq1@Df6c+^ZO3qCk6iB} zT?dwaQX`cLlHrA`5FY1m=wxQ*IESgE4VWt}V|ciiFNSPUEl3Ok+Ifij^cOPuz+kPu z9c#K?k({a?EgFs+3Ndt(G5>n#_DOpwKfOq_f;CU>1v+QUxG2~m=a13+2PB^h^D;ze z;Gv!(jxYqJ=tKTr(qwD{Y@WHRzE<&u%$Lj}NS=`KZ_N1*2s z{NVTZ&i_!5U`>E$>vY=9S^Ha%|A(gQ@CL5mn^3d=i`Soj;PZcR_>ONv3)7|4O(!DH zsAwIXO9+hU6ZO0tqaX>ww||%8Pv-+o(3QAk8znQ|l-g{)HEVDZonI0K2b1lRzhGGU zmzQe_6gu5X$Tl4z&PlOH8!vAvG7k&EAzwuRI8d*S7|Fi}0!yBOSW}|m_kEBFVSXX{ zVK+ONgja19SS}gxc=|wTLYjXc&+1cTk}iH3%0!D1bv^z*b5X@K8Dc|0<}0Lw^fyxr zfp3H}cC$jq_`C%^j0(OoRnEInis7RLIiUg%Zw_q!i1RnNbfyRmj^|Q0p2?6=z;Uw~ zlNt9#F&{_2YtP37s9|MEo!ft@;Tzd!GE?z9{fW$Klt23Jpju#t5*^7$@p+=y62kNU z5X(Yfe^j5W^HIt3?{B1ovDq3(z4?5oymh<6|PGkxb>^xY&ts1FMw3^@~h zjrw1w|GndiZA56l$x*8L)+{H*%T4_UuBM1y0t6yl@xCHd>F;5YO@iOupS&0V_}=)M zcNcCCjvqfLi{QIW&l@!kr7eL{gB+Oz{ zijZjm4hT+&{_ceIccMC202Qx)r(yE*lTJh|z}rJto{k(z&b~r+j{s|NxW$;fHqKAEA ztA!izhYa%z6P@U9*PWlAl>LAjTl`)a0si+76$Vh#a}ZcEB+kVX z(W8RHz`zg@dp0s4oN6V;_z}5X_k{FFq*T~_mbzLot`0D2&Qan|2F6e0e;mKFk^$N< zoFpIj;(?uJL~LQTA$yGf?(3ZpzaGJ$=_?cBZODKd+BAfe>ZPMrtomS14;T^8yAO?# zz^ZS+@}yXBna`aZ>d1&1IUuSEVd6uu{OW^Hgj>3O2WQHAt!rz2N|tNNmRsGkD=HMV zjk7Y!%FyvXxsTOJf zM{?@Xoxv<~Sa76zx?qhZQ5qwoQ`1h%frae;5>X{CGDm&Q>MRbO;==Ng!wQvXkb$g- z?`_Iug+Q;Joy5zd{TT&r-R{y-E~{>&Snd;fM$Dx=yNSr{`1;2&u3zv+7}?Q_EO3JB)pB-`Z+e_J8)6pz z{<@Xlh571mcZ03F+hxrEVJ|7EA$vo6Y5uhAjNhJK7xh&{rmZb>V{f5;qcDpi-+g3w zq-U7q*uS{xCi%u@XvgKGiK83Fa00)f|2Oy zr3;cva2^~y^?p0@Ds_Ray6WIMwZZNUF2_4AZtua~h+6NSW7l-U#&?`}oK9T1_g2tA z)SHs3@x8V;hCN^9*^pE3yW$z_n@nV^7|S>(9oL#1Z|a)d^6yx)vY4$ezTBCtsHksb zIqs)G-S`AwQRU_@2nxD&BT;3F>^Pq$vRt`uPfo4XOckd>n@X*9wW3ljpHk#!?{9BY zkFwch@>TFy$&h>P9LseYSeZs2D>Yux7^o4>j+U19iedF02Xu-M|0b{cxOTHOn403^ zWo6V}*+>wSSkeBP3Sr{*qOv|z{(c7S;I6mF;3^p7%H6B1w42*}n(NZmK;k7S0dvRW zpH$7d)wuBw`F9*)L?%xMqfI<-M2JH-nq^L#eywRA;*f-|NQPGl-g?TRGJb5HE@Z6x zW;xMa!idzAE*asVG2{1e=jS_*BT1DF`?z{3>}Mln$EssPj`_j@?f38B!QtWJT3RWX za9C9Gzi9GPd-i@_$TCBYI_U)(tg#)|$2o4+)LUrft<`O2Be(l_ewj+D|kD>bs z;ry65e1dO9bsR0qIuQ~v8qkOD-zyY8VB%}sD_b()a&b-8SeF#H)Z!egsT6o|;f_>A zN=XS7PlYfQ7gtW}zfHbI4-SVnv7bT`wr5)|FJL~TRA-QQ^EzY6_(gZX9P}m02o@Xb zWQdHkIo`zLP z3J>`}2Vw*Iot9NR_KJ3_S5h+2*w$0+tr7ust|6peHz|)6H>$RxG7cOG?03D6Em)~j zjvj7JpU9bu&D9a%kVa-+qKc@9fv72VlJ32HPpNn~Iq|vzQI%&JY&RzM^Zz(L-7pZ#cx7z^r)jtARt4B9C>dbCY~f@@G*fzqJX$f;@3$q@-`VY zx3rX;OJ@8vIb<0`O?`B{9tD)}mvHK%4Ihl^LNH~sC?&!=e&a*s6aLWx0EDPv1oz8_ zyK6~f$1#qW&3;o%CJhY)9)V>Bfh1+~`ebDF=PVr!B3nqvNpQbcxE|Jmd3meN zc9O|@N%e?`hzOjSxw(?EvLSSpt%dr{8~FbIezVW3!<;L>h^$*+12OxNgexRvpw|IF zoX{=kXA>d&^_&aPX0Cr5ovKtNMjbMw}1o_=Rk zLZ?Rn4;uhu^5|--`_)idPOcjuttM+d@0>6|+AKl_T};6I?>ni`k$uJhI0i#&h|E@B zL0sv(#DL4=0Pdckq4D{_x>@h{njk zz=t_`9=hS-VQM-$<Rh8zUTgYQR4?KcWZ z1(%E4%dhoBODa=uxvk_6j{*w4oZm|+(rBl@lTMwVdf-Iz{d2yvkb2J%Gg-c9*fB;C zh_A#f)u*T)89#dtKnXbOZ~YGYD@e)uO$EW23#^Ud`im`;#hO7fucr zR)(@XLL?so{>>Av-*;B zLtc$zUGIm0a3W5p1^q4PG8;Vnm%6#hqK+nr#uAqBn58cF9zG19)F1@=SV;j$;hIP# zkDKpuQklhc{5AW;qQ+d+XJq4%l)|#D!31YPeArzjH@7AO={#AIy)uuB-;yrJt=B4b z_|>dtlhmqsOlk7(uYj%^1w9K3i<7&oW?{PtiknG5`)6&Yg?^qt^b;C^B5Rp0vNY!L zIx`7ZrzxT5)zvJ`c@l?s;9Lq{vRDbxdCV_>DZt68K(XM+g@8GMQAEBb>p4hpwJp?H zDko_4V2&t00ZmpY(zYz?MviN4Zf@ZLjaGO;Q4x~OsGl;)gm{|g)f{b(;l=K6r?fH= z7qxO7)SmEj-Qi_?fp<;^AKhOPE@z91IrQP8*Nl_D9?~uEHCgKnxVo(YGIF9}Y5Iam zy64I5etB`z&QKB-F|*EOkwQ@3xtA48%5`KAnkoX)nZHGv6p5KQNVp(8xP~g~xhVOb zH~9u6;txat2thCmN7rr`HV)1j&;Nb&STc?F_uQ$pHJpbjB8mL;zEYBEmF{ zf}ErS2KPh|_z6|Q#OS9lJZ(O=NysqAJ7^sO+Y0vzOKOZKaG-VdRM^I4`~xD1mZEpo=!uSR(n`V1k^l_k--Ks#IPw z8K0fyE>4uc8W|aYQ^?pZ?8?*v^f_m{QVaJ$sokOLd)5L03;!pNA(=4mFD%$D#4`X9 zbD6!L$mEymFgG{%ss$I5mEB>9in@BShD9JT0o%Myyw;3u2Q0$Z1Re5KS|8hhuSu>S z5txhx#si3QG$dErJmr!*6p0^FSi%CY&$$Jx)wF8o4s;}iGvMRtgl*! zT~1B1rHr``-Q}DpmR?kt6s1sL_4(Y13stB=PW;b6|CkugIt4@Bn#^#EyK6X<9b9rgmRlhkJ zWAIpQ$zTV3363&+YWag2LUwX_7`5Ys^UMQ;w9Mkb2|t&)cd05C4ifmzBNl8eLn46< z3gg{hN)*-fvWC!KWL&3vz4(tk)V3LI*}=g^Y{?Yh&mS@lGgT0!o)vF zdC%j*I61`J++3BOj|nKt4X{Cre1pf@mT-AkT^gP`D4zk=_xRPjFHr+4qoLLFEq3iy*K?xHyRy;7RbyLV=iM%TwebRGzKHStI6w#= zbGOh}PsoCvv2R2|*rG(nkBf#4%kl8gjDvMC^f$p;37)lA@C$r*Js8hWt=`*;U_rSs z;CAt#1^WzJ!mdB4>>ks6;lToFX^$PUY;WvX@E)GB9%%sdg!#%N;@;kK1%X{(x4w%* zH)c_LH2?C?m!;$tGSRcD>gp-$?!>@&eaD}R2gimpn=IsH2r>PzyVRBZVZ>@ks7QKtB-yZ4r9opQGku4?+{5$FCeh z*p)p*`Qqs=oH3iH;vk{`q!o06k!+tRb4`qt*4m~eZbrgBv zpE1NWnuZ=onj!{Bwzj{n^kZcw+IMm>hoasvf){~oj=5y3c{*q7TeOqG?!*+7lv8P_ zp5?abzCajSQ}T$%Bd|e#$uvT1@6i~7S>(GqTl0?n{K?6+5fCrZN5iy{3J|v%8rV#1 z4-0%Ihu-RH?BI$+{O5zE+~K5w6iH?(qb))v26jLYjv~Ry74eFYQ;g1HzOOE#y;su=?R|;TAx%K=aca_^+}5_id=R$<^Cb;RtEXz%2-xI7@a}-kk%03Q z%F_s&SUrsWvS%y_SQB4s!eMsB?|@7x8XB4bnmol_8Q~6_x5MxA?;MC<<*9uBp_EoF zRMw)KE;8iqi356{z*u|jK3Sl|b+hXClU^2OZ~eyWv>T6{4t())Eqr*G>lcKUgNE`2 zU$!0_XXc%YfKPpUWLbkQfY=mqiJC)zjHNBEbASX;D_}|C3QYqFd0B;C0cq(~ov&h{ z@a%_&A15aL1)W*9_V;xWf`nw%FT2r|fPN~&!*dBRpt8}?+AQ^ix3wLS|49L|EHSRB z%GYNo2azh20Q+P5*g!yd+nWWlLhe*=DR_AZ}!vunrmkJYt_JD zJPfGS=4O-I`o>r?ks+Nv?-P#Rp*$EEj2TsD*3`1c2KMIHIZz4f)fLWy1Co6S)P4=R zP=Bfb!J?~W8;*n$Weg)#Q&;krRk2=*3EOCWB0M?<6S&#kIeG9{B;GRUw%by+?Y<=X zL$dM$10?XU_dTfd8LBW7P@CpKP6CAr5Pi8q;Z2N;*T-V9!+^TaSn_7{YFcdwsHmCP z*>5VU#x3z8rQdgTJ=|qa8FvjQbJFE+l(l)FLd(GdP?afz&D zv+kz6xA!{gL6Nky6(yCw>CT==xgbF~IjhA*v|8h~85mETf+jlW>LgdFiXH%smQlr` zza>L&_T^+ir(kI@6$G1V9oPk=EGiv+w0N?tHGKzmyDW#H&R+-*1DL&yl04cn4V`FsWMeOtiShb0z=s;uu0z9#PDAx6 zq3b|-^ynLk(s;$b?ius_>rg|5akBkXA`*>^PSo7y zY^_pLyH<6%pW5kpbhLn%?|48&eQdmg+CYe&O}6^eP}Zk^@PHU@M8s;oMp|1ovhaOH z6$*>o_Q71Wsyk3F8`k$GDQ(Z0@B-L7Z`|~3-L#a5!$OgYEE$KV?UuXeaDRMB9UMmQ zB2%+HRjw;|alG;hC|?ASeO*G~!v)I52^PAUTiRJv%4<{tpwg#l0E9kH>c{#Cw7SS{ z!n%DSyLNDE^k4x}9+l6p+=@$NEs34z9VB!B8yv;M+knMG`<(FN7|u^ZSSZLB?L3}A zQx+a}BX%$2Jd2IgLbxN*Y>6}kMw=SVffwIExVO%FrHvMpmysd#P_L2sacq=ee_z`7 zYd%#BdeW%{oX(#=e}K7ZbOjc&@yYA9&ga+1QTen3GIMHrM%{LuRM_uWB&8q1SS>~u z_=N@7vy%B<`(`Ag7;)|gf_<$xGR8^Bh2Ykx!H-D^L4~fav-9J==hJ0Ndqc1r1$HYi zoNsk4s;o13BOgiK4}2!%dF8ajJ|C5gaeMEiI!|`TSUIkRRhRiC6R&vPSw5G5d8)QA za@!J!v|O3?Crl7dNG4WZxo$@1IS!@r&Mc!D@{E4NqAD_p*AK5dA~@f}GlcBzkotweSB`0n{lCv57wgXgX$Q4qT?V z`1Q6@P3^0>7|$01u*iNvT)Zu#0(S*;G&F@1xb|wP8ebmo&lPaevH_yA^?F%zN;tE_ zeYYk#4yeEj?_31MVfNP_=6`PS=IyT|HX8@9J=}6{6#jBQYRoT6PI4VWQWy9Viq{q7 zu=cIf!)gd1Jda(ADw*D}u-H)$^ZBXG`FQ#2IGm2l z*eN`vvFZ%iw*r$HXQTPEoYG>a1=J@RhHn1U`#PPiqnSn5-*pJ*`one0Y0K1(&-&*R|f7Ky+Kzkf_4adF+_H={K-ak$Bwac8+m zG_JubNWg>LA05p#S@B_0x;^k$H%%rf4o0T@Q<{lOj(78X8atNchG&`cn_MpP4TjSJy;U z)c|x;{5FG$4x$<>@>cF4CfYJj_Ee>w|4RM^0!y zR4JRJ%qpjw@1rZie<2cm5UM0 zA!2rU9>9fi&r6lSk}w)m~H&$jCZ!G5K8M^z^K^l8Z(W;N;3%v>80Od00y! z6z#it_dyP#6AK>mi(_=d4-K@H0Zs$`tz+wgZQzT2x6+cK3;IC)(^D7wF*5g8N&MR; zT|cdxv^OghdfNi72L^3h$?c=tOjJbRbcnbhdrC?Lrq=5EZ@s6dxKW40eBp=_;`0Qa zvWjFrm)O#WY3ww2D&hqO$^Fy+ad+r|Ng2l|yKq&-$xECR*YBHfP^O?%np%!HpDFA1 zh&jQdbnjV6E~O<&ObIjLneUEmh*2x=`4scw_+qa$HQca05#NK^2wat&t;#b-#A(^t z`*uyi`QkA2ysBDtrM;|-V@Y;2>DC*a(7y)g>6Ga-dA0HkG5t39DIBPn3AC+jED-MM z2M6Qiw9(#6|Ll74k_<^GtUId;u`<%6Oe1@Q$cDb>dfzqX0Y2@%&K=7Czlk&=auB}w z^vIa;iBolL?R;`@MCz7VXU>r9z2zLM#W}^M&!ys54<3htBD?n7_mxX0_ncipei5~d z0FlURD?rPDI*NlmE4ULlg!f)1?Q|?Z$bKo#~GpW+@@#B}L`!&l2<}Uqn zT9S&bK)JfI^(vBu%dt93m-)=HkD>5%sE)rgdFPGJ8A$ATcAFO49qH28_BH}-Hx8~X zEUbFS-=6MLnHa5B!oE1TUaE3s(_x~sH(&u8H*bVK?%Et#b%rA7{?42VSYOwSiLs%< zC2*S7(00h%Q`r}xN*t-ExgqJi8bcG6Io=wRx}Xy`hAZ% zozD=yGCo;iUAPzwzrfa{$Npr9%V1~VW+w46k7(8#a3RWxahrMQ6z?}yN_V7^E}ouf zeQ~^<%>qxjm8r=B(O!qlzN}eR+}`WZOmVC?gHaO=4YvS9>@E2JA{udsOikDnDxWS7Wgc(h>{gKc;GHn)7sx z%zc@To30dLu5Qudu80VrQaE0zoL>#WGijnSHa_}D{>8Gp83*SJ2e(RSF-=NsB+P12 z*PJD zT+hmv>fyXj-{~ZO0mm1_pW9bwJ(6>ac+TU(~Ep;0-O?^^zH8Uy7wEM`j0ZODJe>C6B(7{x6AfBvT1k18KG-+ zkZ{H~8Bd>QO$!7&7mXZZ0CI{WTh)L?Vfxclgp}Z7Yx5l=eVMaES#`KmT?D1}og~;F z#Rq6`t`BidO!f8rmP(^@jP*)8(Aa-(CZE~#^hd7+W#vfhE z!f7*rT^jH=;t7yFFMGoC=3Mv)zIA<2KDE=&960HeW%>ZLH%`Jji2PpaD{2u_=L`>! z0~x$3L+Fr&%kdJL$}#6|EPRCY{JN$O1X}AHM%0piBvwiflmV2i z-pm=^{x(2o_9c^pn#g_1AfTt!BBA4DS}a8S3nte7;0=cPhnSc+vM35bBC!KX+;&h^ z#*$~3e)t2(0cg9AS~cr$Q%VQV+mSm1 zP)CH+NP};r$v*n74z%#e_78SV$K$5dJ2ALO#bE=Q6+rTo#xpb#G^$Z;oL~Kp6uP3D z`o80wv%zi0lAD1|ITfb0q!Po~YHs~-!>*kONTr)Nh~mJ9h^`MG#3#ZDWyBW6j|Cj($89b^2q5PtLBBYTT%T4Wt~Ll5xS7&e`)LI9u9bok zKZ}bOVz&cnb8Wba)iIf>kW$B29yHXQkTGRXf1-5||9%5?b)DNxv` zso}cl^os9KuO&mx{*#d=CQfZXzbQL-Jux$2{EtCXsK2GjNo2Z0De=| zn=zdcfDP7)LV%20BNwB! z*jm@Z%Je73V8TN4uj2;HjwrInh~oJLRoa!A!GYJg*1;$(&kY)|X^;G~wIe@UJFG4U zwhIkk{zP4yFB2N^k^~xt(WkZNCgGU zR6r8Mb2ff#CD)-We4-@`8zJ+)Yd!E~3Yj~6(LrS@9f8#1&iRYU?B}n zBCqn&Zu8HdX?de!PXP4*nMY3%Rjmq0Sb@-T&peWRRUUF8L}^T;zh*2(sy9h87}daq zBdKj&OZ(eU4bbs~$xFfPXsffc7shB0%K*rUooK>PQDJ`|RxBUuq39(;fGm z9M$mdO7CU~${#B$cMrvz)i~KR7rVKtybnx5hXY-`s%BaiTd{y-O2J4W5^&7C-Clh? zh*SPbGEC91YXxc&7YEf|TF)vQDxgM*2wkYO8=DO_j=|0W2tYuQ(6PSVx^o=Vp6vv@ z^HAYwEZ%-?q;U79wAAd$7u)37^-ID3FV{~+^nF4h4)#<2aH6V;!+5%ett^;4{W)^q z#oRKAs;text`C!qmIWCZ*}gtfr$&nVLrCj5RPm1%pbO9h$vZx{uL=QTsd3X+dqQ5o`;ZTF`Jthw0EUxyZ2kB#_|(cJTu!Q^ zH_(Z{&6AguQ(AL>wwFJF-gaGF|1>pITLBkmE&6aFb^dao!-uOTJCay1BHNJh@uGlw zh=`vMgGAwcwahe`gL~?7_bV(kM+bMBeZ>Ev;>N{;+amE{4iDhcC3Ji3?9&ArsHu7% zPXS7jhx;tzIH6czc?M|h4GlnR7?Bpc4ST4``$bNfr(Wai@%kYYhxewoUYGbeR?5fE zv9ohIAAZUg;Hfj8?F_i_+?2X}JidQ#=T;->1u#yMXzqQ^pFqNW=+W;K!7d6NvXC*Q z)?9^GTd%cSZ7IF>wu8`JX~8ZX6Bs0Dj3#rE^jf>16t>A~$uOJ!`%^vYJlDwpwCIhH z7bdPd_#jwO0V{S4&;$Ys%(e3_t1+O1-~z*yS$LS)w7iIR)}l4FMGYohXj{4E4F9v)55cfJ=XIR-Jyafz5h_o{ z9W#*hKAvr+#5T!JNhI)*6N<@tA&8siZ|?ZHFUpFb8o66StUxtT5ru$<`VG9YoxQ64 zu$YGPEzyR#E|5567BpSddio`gkF_4oO7iO4O+ycZeDx&&f|$c z3kfOedObAwpzp`Vm2ji*|7e1nVu7_Vb~E(w0ST!?RM9RO0t661a+|#wLN}(S;_rXD z5$!n2UzBu&_7=IjO)43{a}YRwAKBl=T8&JRvI3r+5a@y~~+w;N4|F z=}op(Qk`;yD_rrSABfzsHFa4sA0h^q~e{YC+Y1G}kva zqNAfT%XW9axH|$=a6v%<%+qDPn7BAOKfm^zl&oxxy1K4zF)0C&a?Tx@9&&*o$LHN z7tG$X*4k@7ao?X6VQJ7Z_zi#R{`GYAerLES6D*#-Zc+bQirOFF6V_{ zByys3j7Fe#4KyK(ilU?O@4hf-l!4AR2igHK7XRziL0E?BA4{NIyyUsJIgl6=3gqXR zMMZ;Fe3_D=Dvn)n;_@g}X_AI2*urjgsOQ7&%$)%~7X~5YC(c+#ZQ!Hzb)))FL66(% zy}25j%(7N`$lxuk{vc-`PQ=m%^FvaaqeT~PaQF0VYGkspv2o;^?FuHKzu%Og$XhCI zXyAAAFrO-_yb5Sjk~x0vIgx7S&o}`uH}`Keis(LRFTY5bBkZuWcqqaCCq%V%5!i`UBHi+F z$QZ9^Ng8_l`W~w6`dPa3Jl}ZTpIp`f&DMR+SE%Iu!3yk_$Gt$)WbS4?O7Zyd?r3eV zxcRc43{Y`6k~~*&r>>Ts9@Q@b9FbVcJy(Cyyyuf5b;(*lk%%IV66W4}u8Ml>S1xCr zmE0W zZnLw5$O_%^c$MMg`eZEzE3>`Ic0U)VRzh$N>6gH zP8gU|;&~Z>he$LsAIzSt6+0J)^j7ke_heq$Ng?VCkcBn22bFf9|~64 z6*VX4Buwhc@5tM;xdE34Q)u*Ixd893m7b4p4rVx(Bk!m)S8b*4NDIjZrFe5S&$MX9 zy$ClPS(^>Aj}ms@wp!%Q`0eQ6NN$ff|DQZ!h*@lGXlvrX#W2>{os| zFkSHkS^6p1n*t7Jomwkl!oZgiWOHIcU*}H7QI0al3J;VRMzEhI0u=awIVr%p6X9F@ z(fX`svn&x@AY5xgwe&lAa+RYM=Ko++d?z9zOws_q6Q`Z7fCk!+V5@6n0V4tSZDEUf z{qTRAkO0y9^Go3D{zjUAljsi7u<0{{Z;QI^;E)ZHt|2>MxSkx{A=uUxHsJikY<0lEJfSf32Esx?tUjSY29J!;X=Wk^3Gjv%?r2S-(DX4+1=`_aa)K3$UrU@L4Sm2QPd6X zb%J@lnV60Mr@_wRu|BybJxQBD+0qO{xAKH9H1{Kvv>y4RkK7n7RTfJ{!H zih|2k0Z7!g3fBjVsDPkr?@I_Zg`P~>W+;~uhan2(*l4(b2d@EU;wuk{ch954m$HV* z{!PVYM4xXv&2L=7W>_O#wTGD~5Hg}~NQAv}Eq@(oSEKS|*_q0Q10436 ztS?$3;&NBSY+hl!Gd9u_vtt7!-ws#ruX>IoAm=^$I5!F*JBXU58|68WZm)kzeanYw1yP7(Ab zV_#`_yXp9B5M7P@bq&(Ghry>aa794f5g+>51|2@$+Qo^iuoL z#lqQ{F4g8nIN@y}M?b4Xf^_Ee>MNk-51@JOB1`LXj-xFJnp8s>P05vP%VXU@y%Fpg zQ<9?3Z?UoV7;@Uz`m+Q$28F;)0TBQpKYae}A)bqw_^LrXl0~<~GE;$B^W*`P*!A zJg$v+n`_ZoEWo+OR`9v~XY3bO9H7r!(Hj1$oE6YvstMg0%JuDp3Ixs%qud!*&5CRR zPP3uUj@yNIDzr%KOozJ6^famNWo0&PXf)GD8=FQ>5_W=XaJKy+VlglH&{5@-j-!s; zNx|I#BYR)ZZv!QvZ;mN1xUP4vLNY{`%(YgS_o5=$0{k~O%$_<;bCYv!ZJ*_TN7>%? z>h2r;u6{O;LG_n`b5}sY&a%T*(hXP&aGO}2K(No{s0zN~Z{Mnmy$JWs-_p&uyJ;12 zAjIXNpZS3L-t&V5q+#WfnHv|xw@9o(Vf{n{bkf}UYH($dVV zj4SkxxdO{J2dgS#$du3I8#i+!jb%9T62}7JVbCx?e8;E~D@V!rp~2bHr)tIQSFb-B zUNrQOdYCi5?DHJ+DX=97z%W@1bZa6s=9VR0=zN~58q9C9V_SgW7V;%UB@r_HQy4&G zWL&o6;Ig@My8`T#xDlJJeFqJ(wsA-@6)bF{v%P0~|AduP(qxjuBwC}&;&)yAT?)%~ zL%cv&A+ujZRr_ra4p|XrXdS)%n@T7txg^Q`l1adC&kC#@`3cAQpCp?T-;(>8I|?N$ zL^MsX8KIxqbo!^qG)zrRORxOyP%5z0iM`{|f*hSmK@zx3ho-{}@l~pXhjHYJmvIz& zZ&Y<$<+Ofc!+uP9q~{Gg*6jRt+}_`7liy6BxkCO<@`lW^n}Hs0F4NK)uND~mjyk5U zfu7q3Lm72Tzu!^7w{M9n%@1QQv03_U(S9fC+Nw$aGM7G`21O^eY@fDrI?8ol`Y#d) z^rr*@f^_cpqd6rs!(|r4&)&<)gx6U*j>G^n=8x>%Ti+I;dHxsPgA7c(`rV{%g>~^h zUCDlTorJpHglD^B8XFX9MGCjsV*h3wV6P@PxfAz_n2~d;#JZC?wX%2D3z;lSn6wUt z9q0dwTl@W~YL)*3?8~O?JKSbEa##75))E=zZ4835C^#3RobdAFuC3pqF&^p6&+=zA zuWhA0UbxG}4(6VtHA-^7a|8jCi83oaK3Brja~Nzf{L1cZY*10?!N?0vDLj|xNU26>T0#1|NY~aYh zZ!%vkgA8IHuFr;q4jQzwIUTNwdawS!307Nz@XUwmG{EHD5k``GiM}5U2-2;`dD;hw z>~)g#bE71>$GO`Tz9q3$^)EdFq28Ym?4sO&wQNgf4;stk47Oqn31q17tp0mx%kF*= zC*!yk{#oo~@mb~^7328uDv?~JIqS+ceUl)Uqe`qnIdh$^V~R^3LRDuok|I`?-!seo zja4Fuq9>hw@!3IipXrK-F5Ajqd=CmM;R1ZIbLn<+B$%}$z(V{Ybij-$b=5hR^iUW? zFFK2Y{L+${zdJrzdQPuy1du7n&DanGnoJ4}UYnEPn--=z!nYvS4#H;!?zPV zfg}NG=#$y`|H#2*utbG%zbCMv8doo(YpUXn0?E)vnv|Np9$*i8~b)d`Tj? zP#|Y3AFU(n=PSNj-PPk@<4d~XT$2C{T$6wAGTQ&Z2lMMk)`I;30>JN8IH9_ueY%oC z4K~xD|6WtgpSf#+y-7z}(eLfF7TeRNB=}r)Ohuo``YlvHeJ6Pir`H-QL`u6{FKXQE zUbD^>Ssp{JyF*q!?PIiO{r?4oN-H8*OJ2YJH_bb+r340o3uKQ#EGZfkdxuto7*E(P zVZYKf_Dk?qdZ55IcFN`~pXRUrLq$6QTH{DOc0Hs0xTzmuvdAn8-`heqO-%E2sLp(R zuP3vdIAM|XcM>>s%EKnkZ|QqfgT1cval#=+dxrfD5NpOjVgB#vXKe^B4JOH&mR#kW zonLWbJgcjh3%nWe*V}`4Tmhm21j% zg$gY!I`AYU4q-$$;$Y*~*M*jC8T&i2-|KvhuP0=UR7=xSa$9LC%XC zkY|!4B)*7!48KF$mOEjEF`N8APNp+-uPtUmQYQt%l;DYg@=8Dl^tWtn0N(h=k@*b! zfLZ(_A+Im6=Cq)W8}iLWtl}hV-M`e+#p;*=ND{L}=aOi8x+OO{(f~c=kg=|Plt5mKTBE`W5xPWYu5 zZ%wK5@p7x#<`+U6uWcm1 z%vs0Ob|p43H@>qB|7|1GF`T6z~u9qG68D&Q5KQyMkX% zx(!4GmX?nOJB~xZECIZM54?bQOA|BGK7$@@+~XYgJ(&kSu8mDk-41FkYRqISXUT|7pTMhHc+2bvdcd0d}9Q`!4_{X8%qZsGZmmuJ1a^42HmoqIAF@;r=5=!Y*tjW_x{$bH?bd`H^rL|ppwFLzl zEW}orul;+gIH|!FkDn&xQ?WXZsuMFJUQUWUe!rtKVh7*(mlYU_%SKcx*Pa+m7Nl@PA@+T@^y>8Oy2K|?%ar_bi zP%H6=d^I5FOA!b9CW@~Qj(5y^z`mEKw)ndCxREsS{{da)N-qCaE8RWb^>_dX0uz&4 ztzZ1KAa6c5q9_|=tU+%h!@Z{R7CZ=H1G zvRM#0t*86^_Rdj6UHaQU2NMH~P0w70w@{}yDvu`s-d5swRmpAbmeNBn{g2*0u|YWT zkKM6c47b%(Iv^D}iOT)YP~QsBAjrQMW$So>L2?jwfCAbJK+k5za;bpex_B;29SoS? z!@>p&|CZv81Oy0+`|k|kOAz1)!Qp$wPPMbE{{(b!48Z(KHcK9P$vmn&#{elds4LY= zatDixd?#8p+;c*$_ojMsJZ~uB@m3biKMM^{tE%Djqp%y5g^pxAI9pqRR(QZ(Sa|XT^>W>-pZ8_`TS+3lMQu zy5cCX(gnD|LP`SzezU!znvZst3nhreV>$Vd)KP#eH~9i5 zuN>)(>@&ahnDRet6?2JNeHF$)H=nbi`@ z+0%&B4`QB|wTc4BvStOUc22gz+Wwfo7gPZd>iczifXewy=X}p1?9)B%Hkgqs{~IZo zL;d7ZyLBKrG*<1;cwuv80XmPOKtR__xl=rHjh%(2!`AKVBbT|jD<`gA6(G?Kzb{z z<^uP-$xxx%Rw0g?qw%IazZk?G(ebS24t5@@VqbC0E%vHP5;6$S1!BFA4hT?iG}1{) z$X0l`TS9Et7q5HV>s@A@fX!?d;a#__xY>I^M)EAI=bD%R+!^ckijMZ|3NnhQd;5jjZZy>T z%~@|9TE_NgzcS<%I~CA#@xG?X$)##F5c#M{vdBQs=Am&ZFViLn^-A?B{?nfNj2Ot4 zlr%6fd8fkg>QhzqbLWLU;h6U=HS*famo0Kf{<3k^dXG>vRgazwvy~ z(hRwI=P_^khHr&~lLAro?6l=7)p)%vAdkz%iT_D zI5{!1`|~&dV?bg_4Tg_taiREL0>=+hc4;2-y6@i@_ZHnIOq6snkP*LmLgz%b5(n9# z)UqljgS8!wSW`iY$E#XJAuIrm`&yA2h1BEIUuo`F=x=gXD>&I{OVheXziR(o z#40Pz^{D(hQf7ihNlE3@z%(%MU8hVufXqgsqwomR++cxUv2CNjaRNOI_3jnW2YyY@ z8b-`dL=5zBM(Kq`p%7t3sRA@&z;A4Tb__f16a&Ezv_VrpW7FVsFYp6K4pd8iq% zHB#?Q@ik%rir`~F!+$w+v{Xkh6cfE~PX^r$FzlKZO4L^Mvzsb%DA>DQY-FM4ntH6& zsK4H57|9gb3JajzC^7C!+D(|u#bIRG_v5h}c>Sz1vR{g1F%;ek%g$JPtI?e}I5gOG z;BhxAlv1bvLhw(aeSvv90IME)mSh9MkmN%iDmJ{Ut0SwY`$0fKBV(FB=Fuex1MnKH z?>riwi4wcb0|;7`dsh)uBY&tWN{bqy&pp;MDdnq@bZsuHML3t7cyz=RAOLz(VxK=( zr*(0Xi%Z4q?RAG(V>T7Q!&B24KG2VM*+)WR(;rNraIjk6=_D5?J5{VMI#o(^SMxtG z2q6JBJRBnDg*rgr$hLBEalEqp=rg#;l#6oSf&;W6TSRdD7~L4aM4rl?R|{rUH7j>V z$`7Y~y&8Q0fqi40Wj<)|+vLO5AHUWw(Q6C1kD@{Ky8t@#?sm`2Bxz{V_JysKWJVeq zQlh*i>jwZTNFdYpa^g?i*MC4!6r+5EnSeT3G;pA#!g48WHH7K2FU{HIobuTb!Sb)o z|Dy%)$^>w}cWm}XQA514mh+Vzo#_Dfc=-5is5k$!hWD5F%hUQJNJO}I4;=H$=-33h z3;;OVHFrV^E{xyFfo;kW?CCsh#9eMdprN~jI>HySOmq~&IlrqHgLj{i?aiJAFvY|4 zy!3E0pzLj&37BAFG6%NSaCm!mIA8#SGJ3(i{3RE|dblTmg-_wet*z)2%$FZ9iGv4+xE^@E?(HhgMo9EbP5f25PYxl! z*6o2P${j%Q{GxlLH$aNdpcOfj{bn*2qyQ-PoZnp4%I{T!+;nJExc3w0>nxK7bHGu2 zb9<2!l;Xi+K_qFvkLBuq=g7Z!(nLbf|Ly}8AQ4ca2PIeT?Es?V#Mm5CkN@S)j2Gbn zx?H`dN3(#mib?{Szh9AgOTsn)p2*$)2Y@e`6c)hNHAMJ|l8060ucwmM@QytL8^E|p zf$BTjpYDM9Vi)l6PEK2V9Ch#olAuluU4piO53`{p$%iY!9jZ4su(=Co&!(>~`YXHr zfcA=KqVxB@mlK>y9p$kU27P2TodOE5%iN{zO3FUwarl=Wjr4dCb+F1Vpn#AAW z!52|cB8i97%^c1pUpWkJ6iw-1Z2DebWYAL>XiJ)PbBlE>>r^fb^eMWW`nQ|ab;9=K z7nzD+4Wle!>(3mPoIkQxK(D@>_wvvtiTcyf{S)-L$NXe2lgLj90#N>ubgB>l`rAvl zDaY~62Je>;>AxtN%xi#(ja}U(gUWGne>SoCxht2eKP5B^Pf>gqnJ{lgcko@@l1uI_ zgJVBY3`O7$rN=)N@kF!iRe;hA`B(SgNZ>klJix`rdi%x}JPNSdc?Oas7EMv0O8Qjz z47>NffPRy3o4j29XAoJ~=0;ykRR7Fzq1&N|5sY#7+kndN7-z3Zs8iZ~QT=e8DW2_4 z_|Cl+7DloI>$N zg|3Lp+ilVY3BsxuqPIf${lfY~ zr0ac-DRN2{x528}J4s~@ngI9<+~dtC|U zPB|S_PUTPc!-OQ@sw?t&Ww^((Uo4r*`{eDh3ruz_dzE zU91JNEej^1*p@9{uCutC$?7hC(!Fb{To8mF0P^dgFF|H-=mX~m2dPgz zuKx5d`TB|e>@{CYRO5x}5QPv0Z_o02dFFe0exs@P7@_=D2wPvzEE-JyG49fR|MwUF zs^i^EtLIZ(^L)321lIT45&Se8G{ivG+*dX2X+kt_wiS4e>2)I}h3;Ex{|RSU&&=Em z@*Rqn9TYcEa-foK+e^?`gWXUXY$6Qek{Bdmo?^RG!|rdVw6#RL`HrG7-5z_@FLLD~BSf;E6$}C5K$LBy{1gHkGqg78={8s2=zn zhgp$BKX83zhRdr0y(#p-pKuVVKojkgZ*!%{IVpzIRNbE@XdQ_?Qk>fk;>+9n70R30 z<~hBZ8ty8KYu&H+(ee0NOk2Fy!lEWoNyGm#H4Oh2J<_YG;F?I_%EJe+m`*A?2v}@rSpz;Z~7t#^IJchuIuo#p|}^#=h+JCc~)MU z^EIB2c22>*^<%MoNA~_`25V&q99(@qsdq_Zs%whmxGxmBTX8Y9#a#1==#*Sw$LBkT zZv)4u&nIN}xuGq`sBH7GEh?&^@0GpNUKX=#SBzcys{SMHsOn)9tJ(A6T2I7F&ol5R zN2j=3fG~qFeIES0aeW{B>Mv#mkV?@In`YLptm+OptNG+wm%BHDk~LYk!(Za9+4j_K z)oJU&Rp9LK{n?fFg`Y@_TCOH2dlm#i}bU0xm- zk7vM&8BcXgz)a$uAZ`P(s`g-J)z92}J&F4!!!W-xE3bLB4{+6MI-+rt0u3q{7pZ6) zR)-O-ueeR!D6dlyCjW`}OsQ*Sd%_pg`ONRXe1>2=FxB*-`!zC{6zOVUdYCLeFP@O{ zAt(OUDUSk1{I{--A|c|K-Gqesu!k_NMQb}bpKoPGLZ+T<% z#%lL;fbg=Jcr2NteRc6yYQCxBxP!h}o+W$7dMC?;_kVE&#)+kQ^+jn+YcD>3Td#v| zSh=@9@Y#MPbCcs-v<>Ma68C0%+)wm8e&O>*>E8Vb9;2rLm-XyUGnR6@&K2C~I&>`M z1bexwVcEA!!uBw0 z^RPbI?NupFyU-aim%`>^GUvQUH3=S#{D9ES&;9wD5o7h&C!I{OB^z(ieS7~!7pYMr zCow|qTC$D9`BSJ-jK+U?t}Czy>o`_c_qplbC16Asn_EP$q&_uJsccZoiZUA?FRPgK z#~`-WoXfv@Qx+1A5&>ruF%@tLL+E!!(&ghdQu|Se>)>EJo+ctH%~R&9qC*+tJ%RXe z`!B(AZao>whm;GO_eK<5sB?4Dt5dMda*cRovw&kcI2^+K!WQa{Kf2XhV0_G#UM|Hr zJTQUV80YK2f7zfA=uVDaUP|wyae4}nFB8qYr#B;21S-ua7ke~&RaQV!N@D18zD^Sv{iMFt#G&t+E;h^`$**@%WjPv4 z-dKR^oAH!=ka*kq4rH^U+}=26AE7PM01AwSaURN?{Pg+Js<>Q0g@B7}NV+!H$>e@J z#&{fiS%a9}s8%hmz}Qe?mQUMiy5{u|XLr&{5ZGeD`a%T8ZA^~fL`GTZR(+P+J?;2- zu1%bf!5n-G-Dgf~#av6uKw)oP1RiOfT;;`>6R@qA5)0!;q7$Q2A1xm~pXPAM;Kf2r zL?T}EST=(PRdVU%5Y_Fv_zyBeGG1Hw$kp%94a11b>xmO>?2VuDDt^t+9!*nN4WxXS zn<|W$&3U)-7?vKV{drfAUesD!HEMo8JFUTNLndx+fr*GlHjGaJ#bIF0che-UGP}Xu zxS!|--PF3iw>y?8&e(Xy-0bcmsxyiPBg+`YEi5VI)fKwdt8Jxf_{N}F^^1Z`eX_bMEM~}+PQlM8V)nd~PSyV= z%inl{F3tg+_+KwvYZA%yBOi6Zx4WC&c$QNMD-Yxyjsh<)4R#k>G&7ZNk)q`d(L-y- z^q=<)v*P;DHFX<=8l=9iE)&Gc?>@b8&C?o>5i#95T(G^5q-G4r*X`YkaDx_MIR`yn zQ3UnGXfHJ~YY_Efgz@COecalc>idg$1Thcc$f4fmQ+^bT>{+vi58FaeI;=9crY6Z?yz`Ve`g8soEZnMW~92n~rwcvput43AMhaRHr~K z9aB+LJsg)08f_d#x27An*u7O>IN6oN2!QuzH|FcPJ;*;JM7G?IdtJAycwNrG2H)WB z)t!fEW?l&T+luOynD`+aniw4y2rPRKve%^E!0WB3LR3VcISY#);nwrVZMu9J1>PO-1Pmnr{7}O$I9;N$1W0WIAZGp zSMznoJ>@b|9y@P*pAwCk&4PQsaULF%9r5g0)$hJxQWXT2?GKD%OK< z;#Ct-{0NB_h@(NO#YGa5#eH17Zo+eybseT8XsnGD*0f#H{1}9Ag3=*s9kGyx<2j5r zGM9kXHi=)jleIM#+%E_!SnKUP818s|yp%x*KG<|Q^T+V#UVYMNLDsbCwzl_ZoM$(I z*DwE+4Jjl-`Y-0Qr?i#>KIS%o_gleYm#D7=UsIG20H{J>AV6M+1om30#7V4Ax zUbptv6dx>B%AzPFtRp2rO@Tu|oZgo;V=#&dB{7Sbgb}T{!+AbjHzRtMD!b+^AcjPm z1BNN!)`rz_nMH@yzco#-4TeIviRwoAZU0Rz+YLtG&Rd5xyNCoYzLyJU)d;TH?~}0w zvC}5@Z6-9`Ei^K6n|mC$4yJu)T2nbCz0}2+1dEIt)$BSSaKwqo++H~m|9)dij)yt( z?uQdGyYwvkz^p(wC9Cg}O{aGQyaT zcK6OVMuwSv=PZ?b3Ly_cO&1nmU?hcyq*}ltL#geH+`jH;BCWXN(ESAcc3wl0UfAx3 zn%e;7;_lrLPBlJuX(w23Go#-=7w%PR-RX%4Bf39baN4-DY9yfh z>K7bkGV%l80_VTE4M*}pe1XyfNGJh4K84CuOejM@e9OBJA3lg$GWB`J#<<5A`jeZB z%j>)XBB356i70(=maumeN|~X}H&B*OJv%vi&8Gy=BYNdn^-gUERjC`=8uc51s+ z*RkO;w5xrS%f!cJVa+IWD9UGBMQ=)8q}#D5uI&kz*i@whnot{7R1RN~R% zG(4*Nspx7kN|W-32=!XY|715tJ}t^pP-?bsgVBKc_#f?&AY8`SFlz`vM@$4@5Pp7N zGyX*XMN`_2!Evy_lK#f@RaZ zObfNpd`@j`rr6@%b~snHRoqmSWz;F#)}E;VEmL#28M<2wuo#F?sqwwqA)@O-6x;}Q*Ty(yGrgAc7KQ4(y>YL2r3 z2kt5fvHB3xhaW=gMEqJ!eGBsmqYj2ZO~}plH>~haR5}L-Yg&$^Ssngbhu$g%(|UT& zh5mo*lM)mx4n7~{flY139{fMMGqY$o&Fo|xMK~UkG8X~Y9X(XO4g?0sjWbr17O& z^@E_BD!)wBm`Bx%bq-iD|H?ve!cE#cz#^Z^O>E1=fi)QWJ%K??Pl%$#r}ex;Nol6o=Zfk+zeFxRr0|^SP9syL^8bFv2N3r|;l`@eq0Np|o&SEX!l>ZU z?1mXf2(GVLhI!c-rJg_e2iwU($n-C;h1-e5%H-Ci(9?{zYgaOIB^DOz^0cAxafPXE z3vj++#sXJ&Sj?VOsBMu15IV&E>^DOrW;21q$%J&UdDg>w7y(THZE^Es9gt)_g{sr%3;BraUmn2Wt&n|m?XW<)D`P~XFHx+I-F7MfKz zkmsEkHsSPyzywtvrdB5Mn`N}z{dX`|9oN<2`a`qL{&KDvfYVaX5dB_=d4bKH#vWV2 zxA<}LY`N7>cF*zpcx7QX@Q@b=z)k+bh;UQb`UY??BMuf_wvu1!c(i^w#4v;>*}J7# z0~-wOe002MU`rF&Lc2oxE1Bn)DuJg4`-YpGecvo6rd{p+zEP7&a zhUMbIb}gQTwYhdC`|StY-@Fb5?(0-!5o|;JY$^llx*lpNuDf*VOMt+uXUmUt+4k*i zra?y>A^hvX3w8gR0L?GY3Q?M?A5>vKEH3-mhJaN6cB)xYkR;nK-dkPAC7V5Va&ofA zb5&4DS68>~INmUfjzhEF(K5f8+_2H>=`q_;HAn8}+=9-K4b?%EqTtT0My;)}1+hNw z9TLFS`8+BVY#m0zRRj#n`n!LwfzCU1p_D^VC^Xxq0r(lEEUR~!9!butKO+uw+)p}H zgp@(=RleXj1M3SXK1(n!1J_rOdxvv9#jk|~*pddTmmK4QCPH6RzW|QpK}mH=;X~do zGLirXhvD;e?oY3ZTCW5U_Nu9CQv-KzoHaWnaFuj_S>5aqv+xlPfv4t)dYwz867io) z8BbL-_yKMiHQnWTr zXyf*L*wd}|d_0Y777zY0IzxEe4U`kIyfig6tIH@v6V$y{JAOvEf&>tVKQ(YC(=zRv zwAUpw>x-H$0Mwt-g-g`mBUkGH*wOmvN8JR714Q-SUw$bR(9a3k%7ISJgwFFH#5woV zae#_oI^I;@1gGe5AI)^&R5|YSaq>~mG6th{F2Y9{T?!B?)IQvO`30G^NZ_-SHwkE^ z+V;}rii>t)vrCdY+?;N-VbizzD>t>*91oMlBrD!#q9jA!QiI;dC4N!lJ7A~b3iGLP zJ~80JhKqK!eA(v9%c2JLs5NkZP->v`!FKWXR_bzFkC2LGK35bAmIi0oGqO^&2v1!g zqYYoZ-8Epsv`co9{yTW*M#1v2X2?|N7H0jPK&D%#R0LiCrPN{xj=7^|uJMU~ zom7%NfaBVQ&iDGJ_cg`zk?J>e5V@XzOKbqeFb3{6y}#aQ)<@ezpb*qMNCTn>o9hG? z-TXgMIEMJGrh~Vf9mJn!|aEN=Tw5^@>r82)qy^c%B~l2+wU`{@nRPdn4_1*$<~qFz;jV zF8n@(v94zacT*uU7UCT-=n;)U#6o(t=vI9HJU@h@u+6YhVx;_so7Ty2xpfsk-wcm= zZsHM+PHZ=)fGgRl46pYD8?55XWkpOvT`0*89ydnuJfj7-9U4PqchlYTchVC``ATr` z`sB;Yg%*b&l@~29aNcU@{N~>?B+0UKp>br-VzOn5 z+$*45sdyZ>ucE@7Z%dHM^ZFHt+G<*XQ;@vuh+)1m(Su1z-@Sk~^d5GkNN8_w2dr`M zXEUSUd8_o)4aJ|>*b0B|1ut#gLb4Avwxvzhx__b}!o6r^IjLMr?&WWB9xfVBn@R4X zAlK8oTv_$|+K!@-i-4*nx0gtgVAoNL-$jAKa-cFwkkr&vpS)pLkKw=oE6v+J2#k;H zVOvT&l=b^+-mktEF&u&Qd6Wzp2*omY%H=24K2NarjJBkFUu_?&?B6i8_6UK&zl_K}PJ)CS&9H99Wvpsn06Xnau zf&o;UY8yQ*(F_?X-ztRB?8~xM^kBGPGTHrJWq2#NHas$~248`q#rHLS$m$-Z&VC!) zm8WBNg+IdS-`hJ=iCVOHLF=cFWhs6N;Dp3PSr5Rim-UuuzrM5?jJPECB=9ZSFSOY1 z=BlR?0)ImnqWP5}kbKwBvYC(+sIUj5QmPI^q{DXvq<=+3KA8;)|JZY zbPis@V&II=FW05IU4gTrkp)xyAtjlA?Ib?GgJwp?GkX9#hT|qdF|%k(k}}I|rVM0| z=$iK^9N}Py2Bd5o^;kp{nPI=#{~NoT0W3l^Si@Y}#Mpd)8jL3Lg_FjB*dEJHC@{7G z4RHyp$q>S-ovJ50$+#H{H{xAVrZZX_{L=~Pkmyb6!vluICBxE#7>S1>oPYvcpC1p% zTm|!p{_S5Xv$R>awhS*now-dbut}Zpcb_%!KSG?Oz}BTLabz?1D>-Cgx2RaJ*N5e0 zz|(47***og%Zq8$aEPA!?%A~u{i|6WuP1L@_mSB}5cxR#9bav?~VU##_;?j2qd zm;-ykGHaG|KrLqJV%~n3R1A3%3%WySCQT9bIdSwMn~Z1Dl1rRJRJ;CC{l+i&h$jY<9WVl>{sDEL-T{FVA-5|W<}n#}1sJNF zWWm!rQ%yHZ=X+kOLKX*pXvAMuZtc;>3=WdsBggpcAPpEOuHVx(C5Df6bmKHzxYBS5CFbsKAqp1%Y#_-)@b!{3wf zKS^T*2k>B*Nsg}*BOwcu(~Gt!h5ap#tDLL)cbV`yP9}WK!|{RT{DkF_Ewe=RCrjv) z(9m|+yZYNtjwc-Q?@TdSq@^Q1mi*~$AIPo8^UVuMihPOWRp&cTK*Y8tF7%{>;E3f= z7@o?``08UUdJ$GIRViM9Y9tX-vk;@OA)|*AmWuc;|20evG_>0wa%(>?ax3=zlcKM& znxYT}e*I35A)#*S0M!AlxnJeaN4Qw`di{?ZLtw{*AV9soxT<$$mt`7&GbV+*vh>)I0$hP(L?~ZS&7(vYEGs)d*U0myve>G`<6Q@&OUtv8;m%k_`q|mo!{94hY z=Gkr)=S9^+sL^8-*Cg%leT@M9ld75wr{kRj5?Zxnh;=a1<0m*>C;i7*3NO>ucRmb4 zpAp)XyV3QBkzB@H47)#dLo3E9hVti#9X&V9 zWi|{?p;NLO=M^t(G9xT;I*%b3*Ox(womhhk$drJ>L<)rx0;oU)%)D4!xBFiG#!!Zt ze&Pz1#ts7okI!Nqw|OhYZ5~;yqV}|xKG~<0?0)It&YzN%MxM|neDq$#BFPq&YKU<66p*l+5|bFeSoWNwWg|Lif+Pd{kB;S zOZcCXE`j2nW}U)4$GnQTIXRx&Nn#P~67c{`$udKM$*v$=U*-nx z8T79tAHj$;M1}fY?PzGOtBZJQT zCOhn9)O~n>`IB>gy3`AM-fVC!_Id%tj1L1EqEGrK$B988^-=e5iY#GSi97+U(skba zaPislxj`5k0pUxd6|W&O;|~&4Ae+s?um0Yu#GR>7kItnb6LE4b8n%5~Lp?v9`fO!t z>8%pZa9-)xGl{-hD#zc{1#EUy1Rh${9fQ==&$Cv;aP9R!kE0e4ER&|J9uHZytgvrcMm< zM^zWd`60TI`V@X3%UW9CL3ApB$jx>cd0d@;bGQeQ0DrlAPjW@0jhdvFM!y7|7{fX5 z+EAGD$*elFGM{vGPmLEcbDCb{hb3uEjlbP<+7DNaWejEedq_+LDorm#wR_I#!}K)O z1BG?KKt>hr_v=H9DxxD{e$$@Zbo_BOwc5LUw)}gquvHe(3d)eD1JqFyMDp4f{|hs`W`xXoKPLa{J#Q53dT(gtQo#yKz{s zjZw+3;=NrkDV&&OxUujL}f2 z4HPvO0{45pY0znG_krHrw zDA~HyR9@=BANMzs;K=?$0Zn@l9D?r=C?_OFj*O)7(l?Q@@l%erU1$=Qd8{2yMpwiy zmR2$iU-YB8Jw_)G4xLgp6{c3qMjvq03U$&+>0<|t;L3Z?!LKa@?)iYBI%4U5lZ(;H zHB$65!TM_1MqC+Nh-BwzaakPz~#%F);^)GdjRM7 z5RU2*s~T|nxC)Pw?fk@f2;(hc0Q>B&9i5j2jumc|l!9uPjteibD3svGLq|p4c94@% zhYqiY(rs?{>e9ES_N}5*2grn4ki3LdwG>~@V2CwkRvF7_-&RaKawjqu4R8fZDSm~U zdVja*s^`>f6*vzhF8vGhjFwlm?1fJ1BGkmH^(Mi|J5M#TkGZngseTNk`Kkw^XY-GDP44l4QJ zcWBcpJj7|MtPxoys&I>W{)&>QLXSI`7Ex+A(rs&i=$(Qnc=~U)fbBS8qOf6CAZZiH z>yC)6JkXPwm%a^#$XcKronz0WjhYPDI#b!>%akCB>7?CDQSZ_}9#K@fTOdOLEDF6V z&5fICj&h8lFZU#kQ7@5_)t`_!bftVJ37CYI`GXFL^tonn6?c=w`WfP_lRry zUh9+R%DXJ0@AZc;8imua00DDGF^#nEtYy!2)yW?T{9&Qhcfch96(>FDI|L{614z&(tVU(TN`|md^IujeQXL1vA#B#O_C2rNyH{-x_UVd z5Mk%l9EVvZBX!`&bYfLUw(SbMXChCYlVqzX+kUst}2{l|Mo#d+6sOhMf&O|mK%(Ac;B-kgORC09$9x?Iu;MRrRLbiokjSIO%0 zL~4O`BO;sxgi8yk)hrYLoRr_{=`2xe+u3LxW;A&%0DEWJ%kx6ZN(fN8{9q(sL{UP9 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 kQmWD02dUft*ROHE(36k`+e4@BywMF0Q* literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/layout_nanos_menu_list.png b/lib_nbgl/doc/resources/layout_nanos_menu_list.png new file mode 100755 index 0000000000000000000000000000000000000000..de9ce1137949e72f0f3115885a105586298683ca GIT binary patch literal 13485 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 literal 0 HcmV?d00001 diff --git a/lib_nbgl/doc/resources/layout_nanos_nav1.png b/lib_nbgl/doc/resources/layout_nanos_nav1.png new file mode 100755 index 0000000000000000000000000000000000000000..eb19e4a86de07a3cb00bd03b36ac1958b2acb758 GIT binary patch literal 16516 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