From 1b04a171e64b5a8c2ce5b5c5cba73df1af794c5e Mon Sep 17 00:00:00 2001 From: SeedSigner <65379725+SeedSigner@users.noreply.github.com> Date: Wed, 7 Jul 2021 21:57:30 -0500 Subject: [PATCH 1/9] Update README.md --- README.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d75b8581..e550efa9 100644 --- a/README.md +++ b/README.md @@ -56,22 +56,19 @@ https://youtu.be/aIIc2DiZYcI * Only valid input letters appear during seed word entry (time-saver!) ### Considerations: -* Built for compatibility with Specter v1.1.0 and up (support for other wallet coordinators coming) +* Built for compatibility with Specter-desktop, Sparrow and BlueWallet Vaults * Current release takes ~50 seconds to boot before menu appears (be patient!) -* Use Specter's "other" device type when adding as a new signing device -* ALWAYS opt to use animated QR codes in Specter-desktop * Always test your setup before transfering larger amounts of bitcoin (try testnet first!) * Currently ONLY generating Native Segwit Multisig Xpubs -* Scanning animated QRs into a PC is tricky, be aware of ambient light, glare and focus * (Holding the screen upside-down or at a slight angle can significantly reduce glare) -* Display text is small; comes with 240x240 pixel territory but ever trying to optimize -* Check out our "seedsigner" telegram community for community help / feedback: (https://t.me/joinchat/GHNuc_nhNQjLPWsS) +* Check out our "seedsigner" telegram group for community help / feedback: (https://t.me/joinchat/GHNuc_nhNQjLPWsS) * If you think SeedSigner adds value to the Bitcoin ecosystem, please help me spread the word! (tweets, pics, videos, etc.) ### Planned Upcoming Improvements / Functionality: -* Support for Sparrow & Bluewallet multisig coordinators! * Support for single-signature XPUB generation / signing -* Manually step through QR sequences using button/joystick controls +* Support for BIP39 passphrases +* User-guided manual QR transcription to quickly input seed phrases +* Low/Med/High customizable QR density * Other optimizations based on user feedback! --------------- From 0ba3b5f6defa005ec44dca4af33646f5094afe9d Mon Sep 17 00:00:00 2001 From: newtonick Date: Fri, 9 Jul 2021 15:53:39 -0400 Subject: [PATCH 2/9] Adding a few extra error handling steps in animated psbt scanning --- src/seedsigner/controller.py | 12 ++++++++++-- src/seedsigner/models/blue_wallet.py | 2 +- src/seedsigner/models/sparrow_wallet.py | 16 +++++++++++----- src/seedsigner/models/specter_desktop_wallet.py | 11 ++++++----- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/seedsigner/controller.py b/src/seedsigner/controller.py index 348067fe..ff9ca6f8 100644 --- a/src/seedsigner/controller.py +++ b/src/seedsigner/controller.py @@ -480,11 +480,19 @@ class Controller: if raw_pbst == "nodata": return Path.MAIN_MENU if raw_pbst == "invalid": - self.menu_view.draw_modal(["QR Format Unexpected", "Check Wallet in Settings"], "", "RIGHT to EXIT") + self.menu_view.draw_modal(["QR Format Unexpected", "Check Wallet in Settings"], "", "Right to Exit") + input = self.buttons.wait_for([B.KEY_RIGHT]) + return Path.MAIN_MENU + if raw_pbst == "invalidpsbt": + self.menu_view.draw_modal(["PSBT UR 2.0 Decoding Error", "try again"], "", "Right to Exit") input = self.buttons.wait_for([B.KEY_RIGHT]) return Path.MAIN_MENU self.menu_view.draw_modal(["Parsing PSBT ..."]) - self.wallet.parse_psbt(raw_pbst) + parse_status = self.wallet.parse_psbt(raw_pbst) + if parse_status == False: + self.menu_view.draw_modal(["PSBT Parsing Failed"], "", "Right to Exit") + input = self.buttons.wait_for([B.KEY_RIGHT]) + return Path.MAIN_MENU # show transaction information before sign self.signing_tools_view.display_transaction_information(self.wallet) diff --git a/src/seedsigner/models/blue_wallet.py b/src/seedsigner/models/blue_wallet.py index e7a6bbce..14d1ffa5 100644 --- a/src/seedsigner/models/blue_wallet.py +++ b/src/seedsigner/models/blue_wallet.py @@ -124,7 +124,7 @@ class BlueWallet(Wallet): def set_qr_density(self, density): self.cur_qr_density = density if density == Wallet.QRLOW: - self.qrsize = 70 + self.qrsize = 20 elif density == Wallet.QRMEDIUM: self.qrsize = 100 elif density == Wallet.QRHIGH: diff --git a/src/seedsigner/models/sparrow_wallet.py b/src/seedsigner/models/sparrow_wallet.py index 12f8caa9..2765ad12 100644 --- a/src/seedsigner/models/sparrow_wallet.py +++ b/src/seedsigner/models/sparrow_wallet.py @@ -34,10 +34,12 @@ class SparrowWallet(Wallet): return "Sparrow" def parse_psbt(self, raw_psbt) -> bool: - base64_psbt = a2b_base64(raw_psbt) - self.tx = psbt.PSBT.parse(base64_psbt) - - self._parse_psbt() + try: + base64_psbt = a2b_base64(raw_psbt) + self.tx = psbt.PSBT.parse(base64_psbt) + self._parse_psbt() + except Exception: + return False return True @@ -103,7 +105,11 @@ class SparrowWallet(Wallet): self.qr_data = ["empty"] # get data and percentage - self.ur_decoder.receive_part(data[0]) + decoder_work_check = self.ur_decoder.receive_part(data[0]) + if decoder_work_check == False: + self.qr_data = ["invalidpsbt"] + self.buttons.trigger_override() # something went wrong, invalid QR + return self.percentage_complete = self.ur_decoder.estimated_percent_complete() # checking if all frames has been captured, exit camera processing diff --git a/src/seedsigner/models/specter_desktop_wallet.py b/src/seedsigner/models/specter_desktop_wallet.py index a6cbe58b..9610797b 100644 --- a/src/seedsigner/models/specter_desktop_wallet.py +++ b/src/seedsigner/models/specter_desktop_wallet.py @@ -21,11 +21,12 @@ class SpecterDesktopWallet(Wallet): return "Specter Desktop" def parse_psbt(self, raw_psbt) -> bool: - - base64_psbt = a2b_base64(raw_psbt) - self.tx = psbt.PSBT.parse(base64_psbt) - - self._parse_psbt() + try: + base64_psbt = a2b_base64(raw_psbt) + self.tx = psbt.PSBT.parse(base64_psbt) + self._parse_psbt() + except Exception: + return False return True From 95b11fb56b2b9e225a742a52d46ec970b446cccb Mon Sep 17 00:00:00 2001 From: newtonick Date: Mon, 12 Jul 2021 10:55:58 -0400 Subject: [PATCH 3/9] fix qr scan and generate for non animated qr (single qr) for specter and sparrow --- src/seedsigner/models/sparrow_wallet.py | 4 +++- src/seedsigner/models/specter_desktop_wallet.py | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/seedsigner/models/sparrow_wallet.py b/src/seedsigner/models/sparrow_wallet.py index 12f8caa9..8f678cc8 100644 --- a/src/seedsigner/models/sparrow_wallet.py +++ b/src/seedsigner/models/sparrow_wallet.py @@ -127,7 +127,9 @@ class SparrowWallet(Wallet): def total_frames_parse(data) -> int: if re.search("^UR\:CRYPTO-PSBT\/(\d+)\-(\d+)\/", data, re.IGNORECASE) != None: - return 10 #valid + return 10 # valid + elif re.search("^UR\:CRYPTO-PSBT", data, re.IGNORECASE) != None: + return 1 # valid but only 1 segment else: return -1 #invalid diff --git a/src/seedsigner/models/specter_desktop_wallet.py b/src/seedsigner/models/specter_desktop_wallet.py index a6cbe58b..f0ec19ec 100644 --- a/src/seedsigner/models/specter_desktop_wallet.py +++ b/src/seedsigner/models/specter_desktop_wallet.py @@ -54,14 +54,18 @@ class SpecterDesktopWallet(Wallet): def total_frames_parse(data) -> int: if re.search("^p(\d+)of(\d+) ", data, re.IGNORECASE) != None: return int(re.search("^p(\d+)of(\d+) ", data, re.IGNORECASE).group(2)) + elif re.search("UR\:.*", data, re.IGNORECASE) != None: + return -1 # if data has UR:, assume invalid wallet selected else: - return -1 + return 1 def current_frame_parse(data) -> int: if re.search("^p(\d+)of(\d+) ", data, re.IGNORECASE) != None: return int(re.search("^p(\d+)of(\d+) ", data, re.IGNORECASE).group(1)) + elif re.search("UR\:.*", data, re.IGNORECASE) != None: + return -1 # if data has UR:, assume invalid wallet selected else: - return -1 + return 1 # assume a single frame for specter if no p#of# is found. def data_parse(data) -> str: return data.split(" ")[-1].strip() @@ -96,7 +100,12 @@ class SpecterDesktopWallet(Wallet): stop = self.qrsize qr_cnt = ((len(data)-1) // self.qrsize) + 1 - while cnt < qr_cnt: + if qr_cnt == 1: + part = data[start:stop] + images.append(qr.qrimage(part)) + print(part) + + while cnt < qr_cnt and qr_cnt != 1: part = "p" + str(cnt+1) + "of" + str(qr_cnt) + " " + data[start:stop] images.append(qr.qrimage(part)) print(part) From 9b982dd65676fc52d97f368d20ccd57b56af7685 Mon Sep 17 00:00:00 2001 From: Nick Klockenga Date: Mon, 12 Jul 2021 13:16:03 -0400 Subject: [PATCH 4/9] Update requirements.txt this includes the grinding for low r fix --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 64536752..51d1a2c4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -embit==0.4.2 +embit==0.4.3 imutils==0.5.4 Pillow==8.2.0 pyzbar==0.1.8 qrcode==6.1 RPi.GPIO==0.7.0 six==1.16.0 -spidev==3.5 \ No newline at end of file +spidev==3.5 From 0caed28b32118e06f288f9f55ccba7f3ce06d517 Mon Sep 17 00:00:00 2001 From: newtonick Date: Mon, 12 Jul 2021 13:38:47 -0400 Subject: [PATCH 5/9] updates views to use color config instead of hard coded ORANGE --- src/seedsigner/models/generic_ur2_wallet.py | 4 +- src/seedsigner/views/seed_tools_view.py | 44 ++++++++++----------- src/seedsigner/views/signing_tools_view.py | 18 ++++----- 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/src/seedsigner/models/generic_ur2_wallet.py b/src/seedsigner/models/generic_ur2_wallet.py index a7c9ad07..9cdd87df 100644 --- a/src/seedsigner/models/generic_ur2_wallet.py +++ b/src/seedsigner/models/generic_ur2_wallet.py @@ -102,9 +102,9 @@ class GenericUR2Wallet(Wallet): if not self.capture_complete(): View.draw.rectangle((0, 0, View.canvas_width, View.canvas_height), outline=0, fill=0) tw, th = View.draw.textsize("Collecting QR Codes:", font=View.IMPACT25) - View.draw.text(((240 - tw) / 2, 15), "Collecting QR Codes:", fill="ORANGE", font=View.IMPACT25) + View.draw.text(((240 - tw) / 2, 15), "Collecting QR Codes:", fill=View.color, font=View.IMPACT25) tw, th = View.draw.textsize(str(round(self.percentage_complete * 100)) + "% Complete", font=View.IMPACT22) - View.draw.text(((240 - tw) / 2, 125), str(round(self.percentage_complete * 100)) + "% Complete", fill="ORANGE", font=View.IMPACT22) + View.draw.text(((240 - tw) / 2, 125), str(round(self.percentage_complete * 100)) + "% Complete", fill=View.color, font=View.IMPACT22) View.DispShowImage() elif self.scan_started_ind == 0: diff --git a/src/seedsigner/views/seed_tools_view.py b/src/seedsigner/views/seed_tools_view.py index 0afda3d0..8d15d18e 100644 --- a/src/seedsigner/views/seed_tools_view.py +++ b/src/seedsigner/views/seed_tools_view.py @@ -237,33 +237,33 @@ class SeedToolsView(View): # Screen Title View.draw.rectangle((0, 0, View.canvas_width, View.canvas_height), outline=0, fill=0) tw, th = View.draw.textsize("Add Passphrase", font=View.IMPACT18) - View.draw.text(((240 - tw) / 2, 2), "Add Passphrase", fill="ORANGE", font=View.IMPACT18) + View.draw.text(((240 - tw) / 2, 2), "Add Passphrase", fill=View.color, font=View.IMPACT18) # Screen Botton tw, th = View.draw.textsize("use joystick to add and", font=View.IMPACT18) - View.draw.text(((240 - tw) / 2, 197), "use joystick to add and", fill="ORANGE", font=View.IMPACT18) + View.draw.text(((240 - tw) / 2, 197), "use joystick to add and", fill=View.color, font=View.IMPACT18) tw, th = View.draw.textsize("remove passphrase characters", font=View.IMPACT18) - View.draw.text(((240 - tw) / 2, 217), "remove passphrase characters", fill="ORANGE", font=View.IMPACT18) + View.draw.text(((240 - tw) / 2, 217), "remove passphrase characters", fill=View.color, font=View.IMPACT18) # Display passphrase selection in progress - View.draw.text((5,33), "Phrase:", fill="ORANGE", font=View.IMPACT20) - View.draw.text((72,35), self.passphrase[:14] + "▒", fill="ORANGE", font=View.COURIERNEW20) + View.draw.text((5,33), "Phrase:", fill=View.color, font=View.IMPACT20) + View.draw.text((72,35), self.passphrase[:14] + "▒", fill=View.color, font=View.COURIERNEW20) if len(self.passphrase) >= 14: - View.draw.text((72,50), self.passphrase[14:] + "▒", fill="ORANGE", font=View.COURIERNEW20) + View.draw.text((72,50), self.passphrase[14:] + "▒", fill=View.color, font=View.COURIERNEW20) # Display message when max passphrase length reached if len(self.passphrase) >= 28: - View.draw.text((50,70), "Max passphrase of 28", fill="ORANGE", font=View.IMPACT18) - View.draw.text((53,90), "characters reached", fill="ORANGE", font=View.IMPACT18) + View.draw.text((50,70), "Max passphrase of 28", fill=View.color, font=View.IMPACT18) + View.draw.text((53,90), "characters reached", fill=View.color, font=View.IMPACT18) # Save Button c_x_offset = 240 - View.IMPACT25.getsize("Exit")[0] - View.draw.text((c_x_offset , 172), "Exit", fill="ORANGE", font=View.IMPACT22) + View.draw.text((c_x_offset , 172), "Exit", fill=View.color, font=View.IMPACT22) # Toglle Button x = 240 - View.IMPACT20.getsize(self.pass_case_toggle)[0] - View.draw.text((x, 110), self.pass_case_toggle, fill="ORANGE", font=View.IMPACT20) + View.draw.text((x, 110), self.pass_case_toggle, fill=View.color, font=View.IMPACT20) # draw letter and arrows if self.pass_case_toggle == "lower": @@ -274,17 +274,15 @@ class SeedToolsView(View): pass_letter_disp = self.pass_letter tw, th = View.draw.textsize(pass_letter_disp, font=View.IMPACT35) - View.draw.text((((30-tw)/2), 112), pass_letter_disp, fill="ORANGE", font=View.IMPACT35) - View.draw.polygon([(8, 105) , (14, 89) , (20, 105 )], outline="ORANGE", fill="BLACK") - View.draw.polygon([(8, 168), (14, 184), (20, 168)], outline="ORANGE", fill="BLACK") + View.draw.text((((30-tw)/2), 112), pass_letter_disp, fill=View.color, font=View.IMPACT35) + View.draw.polygon([(8, 105) , (14, 89) , (20, 105 )], outline=View.color, fill="BLACK") + View.draw.polygon([(8, 168), (14, 184), (20, 168)], outline=View.color, fill="BLACK") View.DispShowImage() return def gather_passphrase_up(self): - # View.draw.polygon([(8, 105) , (14, 89) , (20, 105 )], outline="ORANGE", fill="ORANGE") - # View.DispShowImage() pass_choice = self.get_pass_value_options() @@ -295,8 +293,6 @@ class SeedToolsView(View): self.pass_letter = pass_choice[idx-1] def gather_passphrase_down(self): - # View.draw.polygon([(8, 168) , (14, 184) , (20, 168 )], outline="ORANGE", fill="ORANGE") - # View.DispShowImage() pass_choice = self.get_pass_value_options() @@ -739,14 +735,14 @@ class SeedToolsView(View): draw.rectangle((View.canvas_width - mask_width - 1, mask_height, View.canvas_width, View.canvas_height - mask_height), fill=mask_rgba) # Draw a box around the cutout portion of the mask for better visibility - draw.line((mask_width, mask_height, mask_width, View.canvas_height - mask_height), fill="ORANGE") - draw.line((View.canvas_width - mask_width, mask_height, View.canvas_width - mask_width, View.canvas_height - mask_height), fill="ORANGE") - draw.line((mask_width, mask_height, View.canvas_width - mask_width, mask_height), fill="ORANGE") - draw.line((mask_width, View.canvas_height - mask_height, View.canvas_width - mask_width, View.canvas_height - mask_height), fill="ORANGE") + draw.line((mask_width, mask_height, mask_width, View.canvas_height - mask_height), fill=View.color) + draw.line((View.canvas_width - mask_width, mask_height, View.canvas_width - mask_width, View.canvas_height - mask_height), fill=View.color) + draw.line((mask_width, mask_height, View.canvas_width - mask_width, mask_height), fill=View.color) + draw.line((mask_width, View.canvas_height - mask_height, View.canvas_width - mask_width, View.canvas_height - mask_height), fill=View.color) msg = "click to exit" tw, th = draw.textsize(msg, font=View.IMPACT18) - draw.text(((View.canvas_width - tw) / 2, View.canvas_height - th - 2), msg, fill="ORANGE", font=View.IMPACT18) + draw.text(((View.canvas_width - tw) / 2, View.canvas_height - th - 2), msg, fill=View.color, font=View.IMPACT18) def draw_block_labels(cur_block_x, cur_block_y): # Create overlay for block labels (e.g. "D-5") @@ -755,8 +751,8 @@ class SeedToolsView(View): block_labels = Image.new("RGBA", (View.canvas_width, View.canvas_height), (255,255,255,0)) draw = ImageDraw.Draw(block_labels) - draw.rectangle((mask_width, 0, View.canvas_width - mask_width, pixels_per_block), fill="ORANGE") - draw.rectangle((0, mask_height, pixels_per_block, View.canvas_height - mask_height), fill="ORANGE") + draw.rectangle((mask_width, 0, View.canvas_width - mask_width, pixels_per_block), fill=View.color) + draw.rectangle((0, mask_height, pixels_per_block, View.canvas_height - mask_height), fill=View.color) label_font = View.COURIERNEW24 x_label = block_labels_x[cur_block_x] diff --git a/src/seedsigner/views/signing_tools_view.py b/src/seedsigner/views/signing_tools_view.py index 94f446df..83c9a924 100644 --- a/src/seedsigner/views/signing_tools_view.py +++ b/src/seedsigner/views/signing_tools_view.py @@ -109,14 +109,14 @@ class SigningToolsView(View): self.draw.rectangle((0, 0, View.canvas_width, View.canvas_height), outline=0, fill=0) tw, th = self.draw.textsize("Confirm Tx Details", font=View.IMPACT25) - self.draw.text(((240 - tw) / 2, 3), "Confirm Tx Details", fill="ORANGE", font=View.IMPACT25) + self.draw.text(((240 - tw) / 2, 3), "Confirm Tx Details", fill=View.color, font=View.IMPACT25) in_fee_outs_str = str(wallet.ins) in_fee_outs_str += " inputs - fee = " if wallet.ins > 1 else " input - fee = " in_fee_outs_str += str(wallet.outs) in_fee_outs_str += " outs" if wallet.outs > 1 else " out" tw, th = self.draw.textsize(in_fee_outs_str, font=View.IMPACT22) - self.draw.text(((240 - tw) / 2, 40), in_fee_outs_str, fill="ORANGE", font=View.IMPACT22) + self.draw.text(((240 - tw) / 2, 40), in_fee_outs_str, fill=View.color, font=View.IMPACT22) receiving_addr_str1 = "" receiving_addr_str2 = "" @@ -130,32 +130,32 @@ class SigningToolsView(View): receiving_addr_str1 += "Self-Transfer" tw, th = self.draw.textsize(receiving_addr_str1, font=View.IMPACT22) - self.draw.text(((240 - tw) / 2, 75), receiving_addr_str1, fill="ORANGE", font=View.IMPACT22) + self.draw.text(((240 - tw) / 2, 75), receiving_addr_str1, fill=View.color, font=View.IMPACT22) if len(receiving_addr_str2) > 0: tw, th = self.draw.textsize(receiving_addr_str2, font=View.IMPACT22) - self.draw.text(((240 - tw) / 2, 100), receiving_addr_str2, fill="ORANGE", font=View.IMPACT22) + self.draw.text(((240 - tw) / 2, 100), receiving_addr_str2, fill=View.color, font=View.IMPACT22) if wallet.spend > 0: spending_str = "Spend: " + str(wallet.spend) + " sats" tw, th = self.draw.textsize(spending_str, font=View.IMPACT22) - self.draw.text(((240 - tw) / 2, 130), spending_str, fill="ORANGE", font=View.IMPACT22) + self.draw.text(((240 - tw) / 2, 130), spending_str, fill=View.color, font=View.IMPACT22) if wallet.change > 0 and wallet.dest_addr_cnt == 0: change_str = "Amount: " + str(int(wallet.change)) + " sats" tw, th = self.draw.textsize(change_str, font=View.IMPACT22) - self.draw.text(((240 - tw) / 2, 155), change_str, fill="ORANGE", font=View.IMPACT22) + self.draw.text(((240 - tw) / 2, 155), change_str, fill=View.color, font=View.IMPACT22) elif wallet.change > 0: change_str = "Change: " + str(int(wallet.change)) + " sats" tw, th = self.draw.textsize(change_str, font=View.IMPACT22) - self.draw.text(((240 - tw) / 2, 155), change_str, fill="ORANGE", font=View.IMPACT22) + self.draw.text(((240 - tw) / 2, 155), change_str, fill=View.color, font=View.IMPACT22) fee_str = "Fee: " + str(int(wallet.fee)) + " sats" tw, th = self.draw.textsize(fee_str, font=View.IMPACT22) - self.draw.text(((240 - tw) / 2, 180), fee_str, fill="ORANGE", font=View.IMPACT22) + self.draw.text(((240 - tw) / 2, 180), fee_str, fill=View.color, font=View.IMPACT22) tw, th = self.draw.textsize("Left to Exit, Right to Continue", font=View.IMPACT18) - self.draw.text(((240 - tw) / 2, 215), "Left to Exit, Right to Continue", fill="ORANGE", font=View.IMPACT18) + self.draw.text(((240 - tw) / 2, 215), "Left to Exit, Right to Continue", fill=View.color, font=View.IMPACT18) View.DispShowImage() From b65502358933a4cbb1a8c862bc033e33917c25e7 Mon Sep 17 00:00:00 2001 From: SeedSigner <65379725+SeedSigner@users.noreply.github.com> Date: Tue, 13 Jul 2021 23:10:10 -0500 Subject: [PATCH 6/9] Update settings_tools_view.py Remove references to Specter-desktop --- src/seedsigner/views/settings_tools_view.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/seedsigner/views/settings_tools_view.py b/src/seedsigner/views/settings_tools_view.py index 1df950ef..b62e0f24 100644 --- a/src/seedsigner/views/settings_tools_view.py +++ b/src/seedsigner/views/settings_tools_view.py @@ -95,22 +95,13 @@ class SettingsToolsView(View): line1 = "SeedSigner" line2 = "Version v" + self.controller.VERSION - line3 = "built for use with" - line4 = "Specter-desktop" - line5 = "v1.1.0 or higher" - line6 = "(Joystick RIGHT to EXIT)" + line3 = "(Joystick RIGHT to EXIT)" View.draw.rectangle((0, 0, View.canvas_width, View.canvas_height), outline=0, fill=0) tw, th = View.draw.textsize(line1, font=View.IMPACT22) View.draw.text(((240 - tw) / 2, 20), line1, fill=View.color, font=View.IMPACT22) tw, th = View.draw.textsize(line2, font=View.IMPACT22) View.draw.text(((240 - tw) / 2, 55), line2, fill=View.color, font=View.IMPACT22) - tw, th = View.draw.textsize(line3, font=View.IMPACT22) - View.draw.text(((240 - tw) / 2, 90), line3, fill=View.color, font=View.IMPACT22) - tw, th = View.draw.textsize(line4, font=View.IMPACT22) - View.draw.text(((240 - tw) / 2, 125), line4, fill=View.color, font=View.IMPACT22) - tw, th = View.draw.textsize(line5, font=View.IMPACT22) - View.draw.text(((240 - tw) / 2, 160), line5, fill=View.color, font=View.IMPACT22) tw, th = View.draw.textsize(line6, font=View.IMPACT18) - View.draw.text(((240 - tw) / 2, 210), line6, fill=View.color, font=View.IMPACT18) - View.DispShowImage() \ No newline at end of file + View.draw.text(((240 - tw) / 2, 210), line3, fill=View.color, font=View.IMPACT18) + View.DispShowImage() From e2f500d097a163a49af973e753b36c21e02b6a58 Mon Sep 17 00:00:00 2001 From: SeedSigner <65379725+SeedSigner@users.noreply.github.com> Date: Wed, 14 Jul 2021 08:08:19 -0500 Subject: [PATCH 7/9] Update settings_tools_view.py Fix for previous version info edit --- src/seedsigner/views/settings_tools_view.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/seedsigner/views/settings_tools_view.py b/src/seedsigner/views/settings_tools_view.py index b62e0f24..57c27c77 100644 --- a/src/seedsigner/views/settings_tools_view.py +++ b/src/seedsigner/views/settings_tools_view.py @@ -102,6 +102,6 @@ class SettingsToolsView(View): View.draw.text(((240 - tw) / 2, 20), line1, fill=View.color, font=View.IMPACT22) tw, th = View.draw.textsize(line2, font=View.IMPACT22) View.draw.text(((240 - tw) / 2, 55), line2, fill=View.color, font=View.IMPACT22) - tw, th = View.draw.textsize(line6, font=View.IMPACT18) + tw, th = View.draw.textsize(line3, font=View.IMPACT18) View.draw.text(((240 - tw) / 2, 210), line3, fill=View.color, font=View.IMPACT18) View.DispShowImage() From c55d6827b3efc40d5508e93c0f4d9cb37f4ab188 Mon Sep 17 00:00:00 2001 From: newtonick Date: Wed, 14 Jul 2021 16:19:51 -0400 Subject: [PATCH 8/9] Center Right to Continue for Last Work Display --- src/seedsigner/views/seed_tools_view.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/seedsigner/views/seed_tools_view.py b/src/seedsigner/views/seed_tools_view.py index 8d15d18e..4cc1fced 100644 --- a/src/seedsigner/views/seed_tools_view.py +++ b/src/seedsigner/views/seed_tools_view.py @@ -353,7 +353,10 @@ class SeedToolsView(View): self.draw.text(((240 - tw) / 2, 60), "The final word is :", fill=View.color, font=View.IMPACT23) tw, th = self.draw.textsize(last_word, font=View.IMPACT50) self.draw.text(((240 - tw) / 2, 90), last_word, fill=View.color, font=View.IMPACT50) - self.draw.text((73, 210), "Right to Continue", fill=View.color, font=View.IMPACT18) + + tw, th = View.draw.textsize("Right to Continue", font=View.IMPACT18) + View.draw.text(((240 - tw) / 2, 210), "Right to Continue", fill=View.color, font=View.IMPACT18) + View.DispShowImage() input = self.buttons.wait_for([B.KEY_RIGHT]) From a121adf5e18bec4bd436171cbca96eab109decb8 Mon Sep 17 00:00:00 2001 From: SeedSigner <65379725+SeedSigner@users.noreply.github.com> Date: Thu, 15 Jul 2021 22:29:39 -0500 Subject: [PATCH 9/9] Added pdf versions of 12- and 24-word QR templates --- docs/12_word_seed.pdf | Bin 0 -> 34653 bytes docs/24_word_seed.pdf | Bin 0 -> 47002 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/12_word_seed.pdf create mode 100644 docs/24_word_seed.pdf diff --git a/docs/12_word_seed.pdf b/docs/12_word_seed.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a5349143a97fdd31c33f1a8d8b6b6a1d4022a6ea GIT binary patch literal 34653 zcma&ObySpX*ET*wHzEzv-9v+POLy0RbeGaN2q+yxr$|YIlz@N(0@Bi{G)k9*farG( z-uLr9zjv+Qx4y*!{<#L`+3AHo|m3ipPpU5)4n};790wE1qRQoT>bueaB+RLar2I@ zZpFv=kLL&P;NXGM-Ts@6cb`Hw(4TorSbmE*^bd46FZ|RAxjpr)dzWPHe*N1tar^hV zp;K8L3|$Ut2?K-U~N$=&jG(ae6dUqSd8CQdUkDVc!lv7kkSc8wrp9PC|03E z`?^5Uxu3%7dzmmSN4m?;*v8>UzfTn8TiY3&C9T84eXlS!>e|6m?>=*&cm1X&{-e^~ z-Sq3^_mdnmGL)-^(N-_Y@tqJ{axnG4=gfrbkcDW%Ov)**ZAr=e%r$?TdyN8?%304k zLKDuqbwAp5bYpfqd4GIf89?GD+4W)4P8d;1jk0jnpe3cQ` z;vuv})3CFozux=lbp7K-=<)H*_u*d$Nk=51A|Gi_FfeflW2tw$cTTagr||J9bDh6` zpm^(djT<;E^UHq$^5^r1j;`B_^9}E3AD*Sl46>SDLf_4OdeifVmA~%KJD#JB+T6_@ zjDRb;7R*16SC=1bt$!yy%Tr-}GWlsfkz6WuFg__24{gA~rwi{!%EFrP<=#v5 z=NKo$G7GPd>_FN@TaFCDfgxWXN3I!0R@2sB@l&Qem=1p3QBHU2*&uY{^XIk7JW4If zCmQH0QOx~4+V!f?Nm7K+vjfmnzIC>>Ia~0&w4|Z*CbTpLgR&YDzP+9hLvAV*gqoDa zNf%JM`C)wg4H*-w6@`6%YAHv=!C{5oh@!O_ajW;KJwMBler0dfy@3w|O-cIf#0_H; zv<*usoc7{`XQCKqr`WYQK^qEW(GZps&Yl_k%dl_ujSZ4dI|dSO(*`L(c^F5XUQxe+~q&4N%-kW@XR+=xxT-y`i6K`u zr3HJWb!|^~JPWKO5%gYu$Lh7Qss4&nm^88NvoU}2kK{i_g`MfiPZBSZLxUKWA}X{j&sg_6#d0jHT1li`f!2aedO)bJW+z1{}*`7VT9d7!?hk5&hs^Sx z!NS9Z8=p&qz-PS%rdc414*rvdMZ;y5(8#mr#teqbUBDxz@z6|8L$W5+R*G}k3|o0m zlostS?z@njaH9F}Z+;+h@~O?1ryOWX%s4YI84OQMR&{>5&*_-}?hJYEn!>qq7v0*7 zYeByE25lQr%U?pO~yQNRDIA#o6 z%`7D~egMrduL}2ilw_#OL(Mv-NbDP~t5Hh&s(zP+PZ9Bt*IP9h$v$mvN#iw&3M%V)%;)hoc9hL?%#4B*(*d<<#Jpl z8^%^U;rrH~4iA;okZWV`+YXO`2I1K9@E@*aU=m0X;x9A{PtgOt# zbeS2poqbnTvajLB^0ubHqjuA9lX>bh*85Ft#*s0Hl;45rifs)i9M*?yWkwm@F-94m z+?;VsSxn;$8#pb8`7_Yxgr>=t*#o+}9WuV+b5GmSaChKTm7L_^IkTxf+24P?IFU5u zVZ)x9fcQhHoOx{>Hl?D5(4M|(;|VPKO_xW=j(YmF5sgEUaiBoHKB1p{gt-kplW zOisB_#LWfC=nUd(IEca?wuZk~nEX_g3@xW7fpr@oOGuakR7N!d;-0(4o@epItLOd! zf@DQUp!3Qw#L4O$XD1mG)yLy%+Iv2Q9klAEFkUMHA-Hj4CDjrr)=LsVoo7$Xqk=s{ z5fTPn@wlo^pvoIAxpUP{o8%F*^WN=~nN(~HB9R)n+Mg!1oQJH`9B1mTQ52rULP_7o zHs{!;nRAPdRocf0g?ILr(21rmx1?~{A`DX3@moVEEU`_>SVKeFbC_i`UG(hmwB7rv zM84s457{OPs6P;+=Vqq;!mi2gWxy>hUDLaI9d#;Np;}WBfa;M^Cd93wi2|);#YZff z$wbFJ;_VREFu5kt?qLo^?hx>B3ppzZWLE`kq`4GiLhZhgiw`yTFz}0!<{x|L80=uM z&+nk2spoLd(S`n_w$P7+NmzIpMtr71EtQMj8LWEx>CzWv;X(1&t@p$RqcwD-cCZ;W z=(wN@A^g`{Qh^^y&|~}GgtWcXm|^xRvi;0&j)QK8ZuSgie!$SVyq47xjQcPuLdjhf z5$mESz?1PrPiw!R| zKr(bSbY5^+f1xc6zvMX5R&& zGv>iFw^br{9-}i>1KICTlP`1%8Opqgsjwv!(-n3e$*6{T9cJ3`7!5XCq`%m8(MxO14al&xMz|9`hj<>mR&T|+kut=`_kx6IYCq%=t!_P@s zA5)uJDyDT%K=0t7gwES0-kw<$mOYJ%Fwmrebt~erY7NG3vIdhrCk4574*ZjOJiECJ z`R8&BT_Elx8_cXqRgA0(Rn+>H*=K{)2@w6%{ShB5qyIsLN2vy>w#s9zke&un2}B_) zPiu;8h}{eCS#k3*stC1lvr>b~&`12eR z@qdejdqSoTevh5%)#(Y)2t8!2KRY zrEJ1dH?dL!m$>H8VNS9TixYjSuUAT2U*s~`t;W^pw`lP}ZMhK|H8`(qL{1bp-!RrY z0${@~gowP?Bz%(qk{$#CR*72A&9itXj`I3{$n zvhWHN+akeXT6Qe9rpJV;o?RbxV1U1lGZ;0bNeF_Oa0D=#Q% zME}GZ(yph-M)4?CU!mo zVkG4Z%0Ne#tRVdZ%)fSbd*7YjGzWqxG!=syK$M@`a7eGqdz?}rp9gl5HWh4;tkR9n zsqe!ibzD8SDHxK)-Z9YP50jJgL6q~N109nX>V0v9#0(tyvlw7!EPX8V0T4q9i5QOE zu>}^GJh(=Wt{e%S3R{*AQ=WWs;EHiS|H;W~NtuFOIWYJ%*24dpVK)AfKb<7RW?g6Tb+aLmx{U+ zLv{ycC9zUarSp<*HMS-l?RFHijA{tw4=5!77TmV3W-OS<;i23bl#%iU<2v0)+F?-vOfZ=idRMl8q9|dVz;nbOEpvXq%?s`q?NVU7TK9=X?|e8?}wq5PAeiQB{` z-QaF~aLIpd$-==drZb+($cBsvo0ME6%k_7|`+c{_X0qAKTDGgYs<>6aZ*FG#8m-2f zMN_*$Fb?tZlwHhO(o1Rw$3!PNkGxXdCcQ)XkFvIpU`&`A31vvE)JeaGTID>dk%9I@ z6Xz(hoYueLptj;PbQ7hKuxeFnSfumrCdOs<|4+J~$g78M_E6`-O&bIde`ko?`2Wlh zH2=;JeYBvmph-}5&4u-8KWG?E3W|skGnp)KKLSNO-_(ciPKv2ptvMh^${F4w?Eouv z)9e&{k@R3h{E*ZT9<*4@C+NF+6@LZ>_fP}Wo^ru1V;gK*ad1(^d`9*?a#wwoc}hm^ z3Cm0S>oAhn|#%TYO=azqmU z`?cBw@h(cnK)rc%cs|?j(R&1xPvSw@cw*TV%mt-st!wDkc!t%YH8LudSDKYJafCn8 z-u0Dx*yARLyiu5^TAiRf&9{9cI?y7bjwc*~{WB z4|#lVi2N0e!)DyVv0$h(mn9wcf*>q+8%xRX0Jr`Cd(79tH$H%7jeDP{C& z{I|4Jw$(fac~Xnr&D`Om1x}Gqo(2!-V0vqtkYW=V9W%nxC&npLJbWdxT2s2?$jy%{ z{_w|V4K~O~AaZs|lCRKV=bx^}2Jef+HQ28?T_}BUgpixz^+_MN_NP9X4D7B-zKBBs zuO4ZfO9@|EOktyE?yE~jA5BV+Egj-&uRK<>9azx8a3{Bs7!Ol=%W~u0(hkE-e~=C5 z!#uB!Lu-wPxs|Qi14Mz9-D=<12(I*-*vYq+@K(zQBqq15E1%x{mO0cAIcjjtIQmRe zicKFiyyHqt5W$D*d$iJ$?y!Gi_!9@+NMZTo4w~GH^Q{X}Uj7ce+WHk5-_@4M;1wYaCVm3(hk?}sv2JZ;jR=E0l4 zi0S&t|18AVir=pA$NPw~?}yujqli}lk5facnP%vTJsItyzzc-i6TeX`#O5U|B)?&{ zo_ev#jOkZy_KgWPOb)kiyg1&KwvB&t6^)CZ|Mg3EDLOf#^lQ0FBq_!*a~)HjmO&|7 z`L@%Lq@-N8k`#7L5$TC>K;YW^0Cad(Vbuo0?&SPtkrKRGqcWVrT4DJR*Fe{ zp7|Gx1>>l^)Ro_UIcY<(c}~B6hAk)=({+RWi69F-Qmma^lwhSDy@ydpdm0PR{hTt~ zJK#wzQ=75XxX7z(`y@xF?<1Y}J4`XU2YFtIt?fPVSZgGs{8_~2a?VmvUW|P&JmSzd zu>0b*Q%@mZSQo(*>8HwBoenTtu=SaudzVSX$SO-Ny~TNohYfuhZ9)0RNEQ+AfoELf zn+Wr)od*X}lf=UGQ)B5MQxT|AbjY}s+mg4D?`~is^%Xu#!gA7^Of-SD7Xe)a{0?m0 zljDPB^Q7Mv0Bb-RUMQx4f&L z4+Yz947sAI#Pdn=I6*1hkK_k%9qaX&c3744WI6^OcixvT{e-4A)G21f2fKy6fz-~!tpefWw_NfT$`!?m7#x0}aF6FfnEvM_R*B@SLy30w8 zrgd=Jx_!d!6h9c=9t|{p>XtccE>}?QxfXnuSVOO^&UpQRb&WFV-PH@q(B0s(<;0_j z)K>wLBPy0?y+>g=W2m0m@%AG--0Rra?$@+ZrkkNm1BcINfm3I;$}9qeIFpnD4SyFw z0lM!9y`YV%$}b$j@=L}gt1KNvfCd{hgcSU-kcl_GWq%Z-o<}rDBklzjbx170MlA5_ zu2i^;%)hnFerw_W{YM@m+M#Pgd7*(f8FO*o{iZAc<%yOTO2Xd*_*rkEyf8v@hif9d zKV&Vt1xZLSOf7=MCKeI==KapserVNldq0{&Pb)@AZ)l|~-RYk!nA^N*Z8%<&Fnp8l zL2k@0CT0>)3hg^p=r6e_v08Lfd+sHgy6vweJw_LLU_!e^qS%+}N-#_acS=0{`2N|V zNYWpHtt1@&f`cdFA2$i)AB@_d$$WVBx$h-jp}98K^4dbnPuRfJ`p4*w!|fyKsOz@@ zEHB#xTHVQN_NdvC&P?V>rGtpk2ym(QXc#U6;L_Rm^LGhEfiq~@fnu{G2<9C17?csm z4$WoNa&|;F(N*lWi;9_olGcws-HAGo)>U5Pwxwi2VU>9`OC6-2`1MV(P@g(Qaeood(sk&&_VY?9CM<~uIU9gqE&D7`?eH}X-jjsWeeE7US_MA zg;CbbqB-~&$`$PQxi$7hrg*hO_|(vWIxIgB#WA`71qemOu4qYieATR zr3HRa7_>}$Rn4}y>7{k7HtN-9r&@N-zQQio_@L|wTYb@y;6n#B^Ye-wGv)dArYBU@ zTAyBIhB0^qdLwkW#Ixa)^Nb6qWqmxLvc4LyiTRtiiD|y{d|>mr&stUksbNLcEUHpy z0#!aJpO&Y|nvnkrEn}a)ec;q~|L3)e>Qz2w6cC^d zv}W1wXkUdHsL7-0Pv*|*nB0K5^LA|TlV;+hsb%z4(OO!zEKR=O2j)T5Pnck~-?K{? zaqvDmCfbv^Aok-6C0GFBBbO&WB#-yw+}d=5`}Tzbb>Z67!P2w-irc3jUip9TJ@K9j zE0WB3+P~aY-MLcu{&w|q7wwlJ$FC*twtE>-%7ltQ%hJ_s*vk8Rtvy0P&!!c+zTU6R z%?=7S36>d||1N|f=$Z7R5Ig$;&2XyLPJ&kX($|OAHo%`_bHG}7uV@=HdQj8rgQoB& z3`ODi8}&V$`FMI=pcZwY-H|E}nA-OCNUCpXJ~z^Y946fa68p&W;)FAPtuOuCWS|)$+?$7{7e?~==zUS=iOAeBbk0Cbr z!VUKUPC{MF&(=jMC+|`Bl9=gi@q|>CnBQVi@MAF9 z@Cpk397>fNn?eFxGiAgOmdptAH746hW1zjtcKWeSg_1?Ql4BdH_n$M=@XlWcbXX(z zYXbZ!`WjV)uS-nQUPJjEo0oDmH2FV1JS1nZI}nNx+oxmkM_XSrf7eP`qL<=uraB>^ zXl;y7Yo%lu*i0JcG(mkLIya-cBpt}CU8z|uask@I!h3lbEn`HhT_yxsb?DOdDScFB{r3YvcqDlm&XJbu{h-F8OPg30FUy3icg-WF z6hmnYgy+(#nmHqnCL{!WIn{8^sqE+Esw#J_&T1tGo*FkUR~GPL>Qsj-7q-*$N|~x; zNnb#O0qoQXkC*l)Dj(bxPstGyPbm@=r&Kz!Z7B~AX%mDMy<;H{=S#yhQAnWm>i^hm zSG3|)*ct@uyC1N*MS=iV+LbNi&!-9X5DG?weS>7Um?xbk+!xA)>!q-A>7B81`K-HD zbu0eZ92MxvX%8BWLxKc4w7(ZTzuE^@P!-si1WI z-;8CEQNzbS>-=J9Y=nSBGpccsEfWwf?X^@!^BqYl}g;Lmy>iBbb2D+7Np#Zq{xUl}c8Os5_3g3G8rrk-n zPhM^MdwSj-Yn7}TxW~|PnB9-4GWH#%SD>&B7dpqv56_8btohBG)?+VG^GzmxwqxXk zTvzdZto)D|X&nIDnKwNIn8j3rjGa27>PS@>r^LJhde7I9!dK#Wbo}NcX|pp5#THG? zrfO43Sx<5{nH*G8)1XT#60vKevhNqLzkHEWnLyQw{ryG=_I-`X0k`g@udBDIjI9w{ zx)#Sx^ulU>NUz(89q_}uxMU1OLV60)iJW7aB$eM$O~rT2Q^QjPp4#arkYDhnaoA^a zh~OI!E~Z3rqT`py4!;FMSMEEg_uYIvdGG9Ewpijy@=C#PRe2>C#e2CpLa)xzSl@g=3QhY?>B>8s^dv*iO-Kn* zDDnx(wik#ZGz#co_Tt%RAA3`WUwkXLX-B0e%s9-~;08xX9>Lbq4{P5MJsqUZhog(? ziDH!*B)f+Wi7v(j8VAyjluOo)6na)=q`8i7ZUm{Lej8N#^BJ}IU8Rzih%0zGjd_EN z3{9l6nTS30docrsH+fJeTlVj4VyDsxl883eDj~bq)u)nTx`AO{@bf=V`sWS+!Dw*( zp>`qx^Veb3k2Ra-m^YF~9XcdrRw3lZkKx-dBcu%Izl<_pb8wR9*%|w%l$}bN=m!3V zmX6m@+R#{*ii#NfV1j1TB~9)>8$`1mRo0JFA}RtN|Ig!WY*V8`KW<`k!bk*npEp<|_=x}x z{{gp`bJUVRG(KeD2LVOjbxKN|S0k$1rv#ja2{z;)u#?)Co!37YKlB6Ol=M+4f4>50 z;%9v;IsGNpl`BmxMbFjz^}<9hbXJ@{P}+knmc9VsoiB9mNF_7p4M4f2niLZZq-|8% zx&r96^A04vrhaRE^A<{ve;y^u3sa)Z>S$$`G#ZRMGyYDR3#adRLl^6LTJG}%5NirV zjSM6Rt2YTi$|fqtsvTPWMW~?Ew`+Y!rLxz^f&~?z8|5W=K*Ns?LHdETunI|;9tzg= zLTnRdpSO{e&^A=iUm=zlgMt}KXou6ou%m$B1`R)+2Lq7@UK0k&=+j353Ivtg9|ZbK zI8tl|V#eEsg19$&reAd~fLk_{XGRC`Z1(aF*vf`}K$W)w?J?@}xAcR2XqwW0(@7PE zFM7OJlTXg{UNVK(tsC(%3CNLt-vyXg6B1gFJDrBh{ca|5v#pdQ)G{cbYb-Tz-cmGv z_mJBND7rbMSh z(1`RRR2b3hgyDV9!Yu-jM!%%VScW?5J#&0M3l?+Tw&d@kF!#;CtIDa9(h9vESDtrX zy7{+y=uX?)>nnW5V{Fz2*dr+QM6=qeL-S{SEFN32D4dE1Hdw2Fcnf0`@8eZOXMb1! zt}7#)3BNc-4bSr%P~x41l=bX;>4xE1!C-c*KN_&tY51as9yz!?Sb~c1&rin1bU)%# zaF-6&o41r@9gJEL4)Psfcg7g-LpTbO@>TiVB$B5qYWJ|Lw(lpg7ZoHaZ7NH**bTDf zOSL&5Z1L_j!**0wU%8ML7CvcU`}2{IBZe{%;qbV9G>*g z27x~`e{M))KXidITF++myX-`rFmSzeOL@QxP-9Y~!@P!v0fX)Q*%jX0Qj_kJ3S(IF zF@vYyCHOVdA<3ZOr~Vc98=4f9Q-Vs=is`dCI!wv{cZlgatA+7xN`DEHVNfGTZ|ex0 z)i+N7iLP*l-z@EKBxt6QK9ug&&dM^GFjz44D2@~09rV`~Em4b3_8!o<$<*L*D|@z- z^X$<+iH{~IKV%|%#pF=Gw5*5!@``ipR?sQFUcF#DjaxQX-=2+zwbY+q7{4L?A|K2} zdI=Ablq^%rtoYc030}}RwI%PBuxbcErbIm{K2t4Y)&LuIFxAb!`{f~L1?7!fxCkYa z24>y}iB+{8OSTu&bP^_C&DcWB#<`vw%)XDJ;`9(WB_PW_6$3hQGmnK=S)IM(EGU<&8!aB)6^Uio-AD%uyI-@@A5 zJpw@N_s@#^iyx-p3(T;+ZEpp+RK-zJgh8K+8maG|9CH}zRpWTsv<_-q{C(@s6&(y7 z#y8sM54yPP>9LUZY^t`r7ol&qjrt_I9zv?OHPykb&ysZv8SC(~HGY#kdr}&1G4P_? z2qpUi0VLrq542`^Qrz@K<5h#v8LPFB;nR#@)O&sdxXZY%_M+P9rf*hzJM4y_sS#MX zGwJgpS49;KZ@;`zOO;lp*C)mGrBk4NA;!QLXj^SJ{>>oJs2j_4LziXR>$927vwZd*+`(Ze>#;k2O-gdZI0l}4&PN)I5_ z-)ihY2K$(ULp>@BPZ{SR+RO4>WIs^5EnuS&gobMlxkrx8p4VIHdLP%`@+7%`g0+mC zPqds^tf=hxEdqhi4@GjU%ZdXyr~-qUZvtY2B5;FJK1LaaU>kp` z?}M4Mi;ixWUtFq!kzJ_*)0im+|F!CU)>7RYN)};z8JD93tD^Q89cJu*+96xT4yyXP zzXtDQTGKm!wASF?qc0VUfn`zy_ro~D&-QN7p~6m{K^-faboo)4n+#zQViWgdxs>Zy`=I(j%C^n7U+~%1O4d(a3}z}-MyjoK z=rmG25>)q?g(i@V~iQM_Ttx?i~e$8xet- z_?mNT7=kw_88ucGFj`*(k>Eq3UDHbhS9gh+Mu7S=m0IQI`;-`Ds)P@gm5y_<}c+>9Bt3h%cM9zP*TCtJg-wl`T{b%iEeg z4(qBh$lxbj1-Y2iDeP~Zq43?T%VZ`T;?j_bH)@q6hq%*Bnm5%kw-3h+6rFAdMb)nH z1q_q!4PDb#f=wS6-sdADOsbd^jswk2b-3wmWsp0O5|Ly09ysizpf>_Fs=l&}cDD?# zZ*!cgj|I41Yz9&mT))m!9CVjd5r z{>E!5er0Qp940eAZo2hk7uhaBS=229^wfc2QYkA3#8>-$!EQgmo3CIK{jL2{>zT zlfx>qBtWiD041N1$u*5Mh`+&j4{39GO{AQVMbr-%A{9jb8LeNvbA@HwN`i)mn0=8R zIEb(f(bH%^&;G{_SZL295u%Tm07&{-tc`&6=Q!a#u7~2QctFD+TM)@zP`Q3iNm`ap z*)xk(c#-%KcWM$3mRTL5LWpHpOycjT>QYTWA~ZXos%-asS5^C-O$^|Sj4WCF*W7SU zomYM><)F@no6DUqxnn#S%u=_F2CQgYG?r*G?7kG_x?hZH4oMa z?ejKBn&nqb)%5x9Shamjt{Q}FUmn6`gK`aV84#K`74LGe)GLVjezurLShs3fxGRr1E?dnyx;zpdbp92OUs)L({ zPA;G-JCC3NRAFzae$-DZweWk>`NSQud3M*7Hkp!gk(yN{lQK2%koS(jA?!;neD)`7 zp(ugyaf=@fSlH>7)AXrPc`E^`bNTO-E_A*b2JLR!Dp24W*H+)wxi84KY}#f{zE9il za7SfB?(bo&=6#RJ+r!vywYeo(ASPwjyRN={8UxyS@%Vg)eW|QMFPl4#xd)BHQR?G? z(73Mwi|yeD4daslZE{fag0o#Qxf5D+j8vl_h;hpG@OWeX?n2W-VNzhPrC#HJr~D}i z5k4{~;P;yen(D&gSo*|FJ%8PEPBPv|G39AE;Qo;CXyRfZM!a+UM2-6jPsCkCj@?xv zRv<#mb&(c;nqB`v)aI^O+gblAW(lr5Vm~8AErDC)_)Ook&go180emn7aY*Nf=IwP< z>!xC`Rll3FxtLl5S(V+4L2;GcM)kpmUq@4VY6aj>Be`n2Nk7~;m^UHjeydzfK7(f|LpN2xZ zznPSssBHGYkxYJ@Senr8uP)pD%*vJ*jLQd)hsCu_g-zjzGTv-g){{$sG(UN-e&8YN7jL~=ml zu6QE1CfJbTQQ;xH_3FLa`onyRHHqp)fCA5qR&#OwF9Klj6rP%Rj-uu_WfLi(<)hUT|Sv@oM z{yOowAayfEl(UZ-=utJoP^I_&1V)Q38MWk<)+|SDa#*Qv6RLR`$=(9K?x#nQ5BkYs zqj7ETII@2$;;w{beNrsk)V^UbpjO{0;q`;;Z4%6(fF=L+hu0uHz_&;PT{J^QGzB|? zW-p8^kajDeg#Je6MHtPitNkrX$}1e8Nj?4Il&Qc9L+$3 zrY1f;Q*dx{4Sd!cj_Hya=k{d>?zZBkH9t%&HhAW%W_5~&ET8S=m>=j;WC_|=KDmR{ zZ5WNfx&Zvi1@PzE&}WJ^?Zxg_2>_8#OQCPoBRc{<516pF{PTcRNxw&qJ_twNl9@>bTA5qApZ@l88=<~iDbfKRJa8t#j@(=i8cW^R zA>65Kx14RxglY=shxv9z)-0vBipHvUP;G>S>haDWC6tPp>(8=O&l(w+|DyHYGMEc! zG$uQXW@hbb>pVS8!Jo)%_m(H3=2;)}n~Y?*vf|Yz0$_d7`F{iJe+}}T>et)%PGlWE zJjw!q$mz}=-_(o&bG{q{RUg!}ZYC(1cmTbuhJ4|I00OilDA10O_lJY`6zE^Sc_GtFIwjYwN zh^qt!CVx}_X#aMwZbiFneF3JnK`W(*d;jssU+h7W0ZK1ONSXw;#lH`lI;24b;2Z<$ z?%BuU>1SqknK&9E$bVt;H!h~=D#{L*T4(?l4INwF2Ps^RJ*VCYjTwOeH!6lrfqOH^ z=zOC>9wMF?n_OzeAJYJx3=232MAP1@MDo%Np&!HLFSRzA0ap6Fgblbm^C4vM={)o6 z^djW(O8jk1#aD?{#a!3FI5d83IN9zGF|PdE=-W`puAk(QUz|o7o>JXf_B~ONp_YfM zEO!!n?w6Ic%)&?ymc>n+m(1onebJk~{1*s0h5)!s@8GG_i%#5#)Gq$Tm9oHI)ayGVE*^qT$`*qeCIcnQ&^B3RL!00=PZ!ZXGU)@&757pCgWZpC6?f z|254Zme0v-c z5vpZ$*8@ZX-2X~DJHG_4KjeIkJJyfTDo?PDQr&_m< zB@mDU&bDGYe1<`$BjEpw=ueut#*^;-EtLJ`Hk6#Oi^NeykT9^@?Yf8ny;eMX>Z{WB9j zp3>6LY8Q|Z9}#$tD371deWbc=VGrLTi7$I>JDd~MviuNEY{k-ZzZtQGvG^i_@U-6Fu>dkvliN+RuaRo3Uo~4kT_%2V-Tv0) z-;)d$)XwKLDBXq+V;9I()AP5KDiy0DZhAzbi3TWqAV9CWW~haUlnyDY9!Z*&41Ku( zbt;VsbrWhF--#9Byl5}uXmG&1u2KUI?M6|P$$j&Qnbp*(lRO(UE)p$Fl~taX zsR<@a4gN>2cqn_p%{L6(87)n1t=O~%bBp5A8~&z+nZ_T0BC>K`h8*R&4O;L06uipe zlo;*=5419`pkF3)Ha;AT2^>u8akze0bCupJee(}nt{L?>x7XMv7tQZEgVq2bPJCh0 zAZijfd^-7BbxNF9?I~VEbtsczZ1^fBWkn4yEvV z*M99Fha&)EfVqbq0z*EK;y2Jo)A4AF#Tr894Slm z$sR{kG_;uMd4|ZQ`RoE0w(UQTIy8{y8nkV(3}e}Sd#)n#gDYH3zm#&I!0!Ef1CG}M zB4h?hjCP+-8`RRL6V0st)gdI(4JFkL2Y_V1I>PW`2o%AzvsRp^eVTro8 zFo$`*E%g%xo8kI713A+?!eN&vWa6ED6<>xGJ+Wrjs%pnc8s9^P3cYdiIqqI^;~oLN zR6cFWNwKBpW$RjC(|#XJfEUKdt^l~<9+<|do&jftXltRmm_ICh0TpqcLDwCo7 zNfzFJixbQFoB4*LO)cFZ z>C2;a^xcU_+_fPwK=ePyg6-Vklh&8h-ah${Op%V1DfU|fJFAe|OAU7rV*0Si%J4)ClUC!p)IEQqq!+=e()h?K?sG={kRP=L z?&aI{&L0r~8d;6Zm9pvwIaW4N`Lf*!ST(;+40+r?3dNqY)zb=}PqE={)egFBJH(?TK6 znydYTnbL-OfJXLz3VREHsJiWanC=jzbEH9p8M-?J=@O7`q`MnIxxjI;_bC@XM?(osZcaN>7jtp&?m(KM|FSf6O5?LORzc^FH3qP@1PG(5mt!2s6= zhd-VRu(arlnEI;xHeVKOn78zM6P$rCE1|IX=ynC!gzUz`!}sMeqQd1|VlKCa$4DWS zNf3j6jEM1Zt@B!u?OdyTySydi{3O6o;J`lFp@&K0K!av*M3#wWR-Wge;UT{SurUdg zXZnvsNuinq2H)QnK4iQzN{fpHVG4HLBZsk{S|emsyMX{TFJ|jQ341xe;#li4!t!~; zmmyJW9&Sj@nt%hel#)^QDPLoA)9sSnJQICLDGSc4H5ibv<9Ej`dHv+Zxq29rBo+n zt1{=|C zYO!pvQ>Nl)32u9SkfUj z)>#Js-#mq%2vyPuG(*QQz~4#(CaI?!URH1v;57_M|IJj~{Lr7FpvYmr57=D&`V6^F z4IYUVM5Nmrqz(Xm!p7m-6^RlX3s4h0uT6~u<$^3&soJX{Vv{mmwL6sbm>LNs346a_ zvp>I`a7hg6_JA=V-s-$3D*6xtQC=Po7v&|a=EY3hOBaM*%E^o0aLSj0xwDX?zgMORoZc?fxg1aI(fm-^7_COk00zr<|qFT zwnAOHQJ@lK%@BjHHP1$(HBS=+lO$omA4;2Ly(UgAtH-h)EnFvNm<%RwjLPnGe^q7;?xbU-0tN9_nU|YHD zo7}u!*>@2*P^70clE3Psd`I^Q$Rq!X_?N1IvYah|YP{~PKJZU}u@Y!+SVWDv`g8&S z4UMNXvzK{^5l0m-Vw)v^*qvU(9M4YooH3ooy0&BkQt3&d z%9;Ezk^%sY={H1H=7{uGzS=|N70~(q9`+B*DuVumamyi4J`OvyY(BgOK&R786 zkpZhQ^V%Lr$xMRcBG9^4k63G47^4;}*dyIc7>#ZdIHresguloP>-0?mhi4Q&(+~i$ zlrbH9vg%oKV}^xG_8jD(&$Tn9aaNN6&^mx~FB%~skAF-Blp|bf;_&K4+$MADO&X2d z6N3Psu}k(ZJ_DnFRk}sSW;$?GvB{I}{imvm|4C;E*QEg%*^#y&Pk-)` zy?$p6NJvN&>$3SzR?daPa{@9FW}Ywq)P`I9b=@`#t?|?9MdU#IivVEvSV?{+GvS)H ze%WH3utqJtFTh@buFzW>EP#8!$TqnCL4}yw9scwbToOmGsp6ppWQf?doMH%Rmt{8!IJHHj@Yyl-Yavud48bBX*vV-3-X< z)OF%3;;q6;eHQ`%Nh&Azo^lE?!nu-z_SFX3UufA|jMsKo;2`5q2YI>?n4igR%uyIH zOe%qpzrhu(0wC(;qct@^)E|yugp>4unEkU-{4YAA-t{j!1L;WtFmc0cjQoL_p@rfP zkQpuEKOnREzdDD#{g{ddd^8x;%!ho>fbg{%5P;@uAz~T|8y& z_#>wPbg#Z76bESsu=`&dZ#N=lH!3`Bu-h36cSxY(60XkGMbtA~r1StIbbm*)FJ%UV zH}31kF`q*3`+cEuvOss!0f?#T%Uy0w|DR=X(@h;;m1`bQ5xny61j~)(X4J)T6Tix; z4Fey9NIc~M?CcXR6gzX-`xkarulvcPR3m5&>8WftXJ!364QO&}Q;!ThNdp0Akhu0E zBg8m9fTBRYM^Bl)*h0l70Bs@?C@>Aw$Q!gnt1BL)CP*mITJ`^7Ltkft{B#bxDVexX z?&md{od?AAJi(Y{m<=cCA;q4s*3wgS}&0SOwn2 zW(2!&B8!`Bm^>zN+NMP&$Do6!t;qRbGt(GjpG{=1%szlAVs1jeY6JLC2#v-y9RbKc z^hunpzV8`%))6`{m(Uo3JtCr_yqe7ixHV#}{K0%+`~Ssm>}LEY8Ajb4{!YTGOO17Z zdF=6XTpWT_=$s8esP{l2FlRG4%9v6cG#pD-0rhKKapA>)NXvFx-bvNF+Zt>Xi)s;J4X)_B zZ89)jJk0*ng({!NN#G=WVGDU8$@%jm#r9#W?`#%2+!;Lhrnur3>)ZqUtMS~+)M|xw zq{m{MP9M{nxb&h8)|QDjHO(6bI@iGg8cjA?~q>Bu$JSMQ=E)msGlD>3*~NBMu{ zWy1E81GTtW#3OLT5^QSn3bPoKw^}adXpEb$z=(aHp@_FPtGw|NB^{$78sG6pyncZB zPyYn_+DDc~Ac^9)2cRSrw+`UE<*G0@gYMa;_1Np9@g6k7=Zv>-N>V~WUshv%)5RJq z!r2qS5EWG#vSO!0g94t3c|vo|cQqUhD-YS}NhMQ2=6;tEhO$~G;uN8tEB{&+rar9! z99T^n8Jb2k2=KPr#RzB`Pdnl6^Ue)KVRM;fTF(J;07Vv2-yLwmRNL8GW!p*pYKVW{ zOJe-l5}8m{895@=;zc~sgIxlzxg-YJQUTmOcAs;mWZ5fIqVw9;7Wa zECtYAGt@-YYLQ8mc~g|vN`PhY;{;IBp=pA{cTz$QPc7VEe%U|D*ylVTpT_G2JCG+s$%I~!5@BuZj8pNhq)tYe22(`V8?p>%iUw86 z2tsWIdezVQ(7>PCDj6!0^N!0%VBZnV7k}PlOY*Zq=%|-1Sa`Ml@q`Coqakj2X_Lf9 z3UTL{dCb6($WQ&Vr+f0vkW%ecmgfg%^Z^9XW zz;VvJ|4nCYSgNY_sgJAroq>7Yo5#@X$C?r={8FGHk7AK2D9xrzt&1;aP<# zUVTZf`q^45&E;`VykL3z0L=(CnzIi#Vc+Bqa|La_9L;}Yj608IZ0dcy2nQs>f378D z2`8L6h>LEHs3;;=lSn+M35Djt;~2y-Uetsl8yEYE_XeFC=kFVyAaWV!tbG*t==w3E zD`DUyN+aS$rZ(KbApyui@3H=k2u{{pLdRb=%B3#>%nZ)g@@p1L9G$VyujWNH4Z0bs z4QLvCy$tw*(xRoRF(r<>?JEoaaHQ~hOvqC|-@zw*jHcgp=keG}uUsU#rVi|6t~=0@itV$}COS=Uu&Od@SQU8lthj79p}SyVr>x#$K` zk&7dHxR{Q2ne4-v2Zx&t8@ka{J^eX&OJpSs5dw{j%~RT1R8cHV%MOd4XW7AlLmkC2 z)!>2nC|t(q_^9))o%&s~u2uWG_IP*ZUarp7c)E-pl7Xh?euYTLv;h^=XD-Ka zST7aYrF#UHzS0T*L}Fy3*f0CD=8Ay+A z)(9Jq$MPD9AKL%O;ZITk)@5>kq|p~{yCg zf7i1%7)C-r+qEDX<%a%SpMQ7(8sfxJnMC7$S-0WBTu8I#wH*Uayo!G93 z(9d*Mc;pWscNFjnr~{(W;tuO zPC2l4dMpKXUpb>sJ}{APoVK1ca&q)rd<6NC$^NpR!I>{BjY3}9g(P}P4Lv+qAQ8|n zgqI9mMFX?Jwtfy=uqa2d#LBOi@MKE{JG>1NdgZDJ;b+Uf&rliw)d5CzrQe>gLCNy zT4e?Mu1U==P{P?XH$-Y1Qcn`L(w~qf8FCK2vom3UR*X7}G!%-oI0lHR7(W!(vI%qt zJOQ5ZYmifITMd>Dhlmq3Kp}t(E^39Sd(v1&o zp#D#f1lxq-$%G$OtQsR#hY*#p_}^&NCP8Z}+zuL1OpxrcilvVW>eY?h`rJjP+P?s? z5BU61Dwr{NK>$j#3?s##63U2?Z-yTyD zf*Dh}gDDo!NdoqIO@J>SsCHjeTPw4SvZeAEz=*7a66c-z7V@bl?NkDR(rrHcETD9I zQKhlsHBC(&jA?ZpIE5h$T?koAttlp9!Ci53$B$LM+VFsKrM3w&d9lG=>#~Y^tzX@`y{furV&c1T8hN08hS7BI1a%RTSz(i%) z>NTIvWS2dQdv}uS0q2T6tnQ=v@>hd5U649>wLr10cZ83hcU(y(nw@FD@9l{aB`RJ7 z*qqsXBYub1*#mJ!$1`?3#Tk8;oqruol2d$CRKlE1B!eVX6p<>`5RodS{fSZ=O7etY zQz|jKe03{~ypwIxOKKt1RCRD`AARgE1E_QYKvvs!qXi$edq^&>kq+Q|ZtcT@W@7_m z1~NmW@?WUeLaLOLE7AAEd(IN^-l610d;>jSyq> zltcoUlq3QqefC%+9Rg`}KkG1R2%QXwK|f<>6#ey2I~iL2V*OvmuB~q8{SU@ml)Z)s zKfp)`Uw-PP=~0DXr9;gC0~O>T)aS0|)h{+f00cQo?T!4LXWb6Jh}oOcs?JD@bwUD-uf zu`R`I{V4ek+2B-~Nf3v`W8YDJ z4Y^B9mKn5Q0D7@+b!$$S+pH)Pt3;OVM~4BPzy+hcPD)GiD+#BDGzYo3kJeNM(0EJ# zhI*44G&lRn52_`HaDZw_Hw;r&9ZqKr*UQ$Q5^-?%Rrs*MVntGfTSP{Q$0A?+29G|z zyyc|fvq_1yza0+#rBVmA_E^dAbna@kE@V?Jjg)K_mK^sCwEA5BvWn(};K(f1we&M3aEHs~**4q*JA6;QX7 zJ%jrxsj(?XFo2}d6Uk!eK`(fbH(>mYvv7ftP+t-q!~gvlYW&zCuQ_n?EV<&#coE+M zt-ip2;}${e;92tLG+v27dE&d-$J=gYyPmHxgqClY9w7)hnJ_-F&&R{~tK%H;A=4~> zOgv7h4M@c*&abX0(dX9SX6Sj|MHCOCHk5T=3XXAkBOE1Wzopcylv>G9xQ1AsgBM|x zUoGXy!ZP6WoT`{1ZeO~f?G2Wt+mt$(w7e}GKG^ZBFQJogZh*_9wYm|e6)-xOt*BFu zxO;mY(_fR`Irw_q{y1WFw_Ijf?ZqYkb%rd1J{cfP5)OXO0s}75$7nqaB^j%{S0;Jk z@JE#gIth3LRb)bH@t!l+aOoU!wes35TU@Nhv%+UBN6s-8A|iov@gmwH)EL&Sg9)j89hb_^#b7n{9{HstI4;EY3k zHx#1yT~l5wL)tvX&ed+xizF+*)j^>$j%->skC-z%xpi#?l-;lxjnr5pGZ|FF3q!k2 z&rU5>IftlkxQJLFhm0ZNhmsP-rOA-->r9bP*#Xf{U*`mAuN_8P7gm@7T|p*Fn^ph7 z1m(nT$q%;xW1nScJq=|heUR=Ib+is&zZP?%l279(US?|Ig`UrwOzqeoYNWRqor0}) zLC&w->M^Uxi!t~x%A$%{8-BzzHTLv52%^Va?fz1quDJ2b0BMJszGOc9twQx>`4h#vl4PE?UxcvLRSSteVBtMI=pm#e_i+T2@0-6kB z1~_fqfio}ia6|CB_tk9kK<}e`U&Oj8JFLdRqU(zF>PXw2%&dEL&PhyO>T`b00cy*T ziPH9JSzKRjza4ZHGFrdk65ULtfw%THPSq}Sy)|{m(XaIfPQIF`DwB%b1?GlB>P>Gx zZYZXMa__XaCl3Q=`M9)corvIZ3XaNzVK-3vDzTh^W6Cd;R=jFAiMSt(OLkf=D)Xyf zdXBGlKJBLY#J$Chw9az2_OR+pu=L^&FXiO-Ua>46U+uL>fyY;@9tQz=wt6_+u~hw`a__z z)XS*+?pz>8Laj5MTmOGB*K1{ZxVkL_rw=%)EO z`N0_vI!#qqk^S#pXQcSuK_lTly4Bpb!B0OTiz9SgL}h-tCLY51ch0Hl=bRniy}!9o4jwfLR`9i{pS{I9x6TL z*|`(eOFp7s|6_R{eF2()}i z-?q>T6Ew7j+knZ5jbV#D(HHdJ8K@Vxd8sSan4Z$PCCpP*uPY@j=^GqsbH_Y>NlRCB zn1DlD1-x0XkgQbOk|pZ@v=Rl;{Zc~|EUQeTlQZ@>XBRG$ZckR8z*mebj1Q$0n;dO^ zA>V#Z@aT=7y@0zJ@v8$a(pSzsE}ax(WP&AiPt0boxzZV3x-aT{gVtaasD{SKuH}3~ zax-sD51r~eT3bJ5H3k;MrY+l6e`Dd<5R)+NR-KIV>P_y=eXhQ@teJj&!Qv$F;uX)u z@Wj`&=RONAa8)`v=2x@F1h;t>dDrMOoB1u}dyEXF)AC%pS#AQJi$|X;EopwAN{{R5 zuYKcmT1zc^)86roLyv-?u)(LcNE-FoM3rwgXH4mO%Xd19`qZ-Dw*4U?iI?dOF z%g(-!38t#)vz{Lv7m^R4D`Y08m%Uo2iN-^v$TI0;l+W5c>u_9G677#{8P=pN7Kfjl{)_wC}BRsTv6XDcLo^|Tng!I%1Ki|-qFdFPsIkgU=#(&&Io`=p4k z)vLav0M9kWwit8mp~-*+`8oz2Z;Xj(ak*^08%qyx2((;+ib@+K+^lug`xlmsblFIz_QgYA6G3PlY%>k#0_&KBKvtzwam@_LGw*f%A z+Ku(h3f{!?;D)WE7d#YJChof|+zM9Kp}uW&edH{UN<5nKu%% z{hP0xFPT|&&*4mN!y~AJedJslCZK!i zJ!I76b9uu~$HP?(zZ1&SH!?H(vSnC6*MMWN_sCH`SN142ci>2A!X3E05vQYA&qjWk z?F04U_fqeH0nryEll-NB8Q(`tVJh*DnCpRt9m=RjA9VBO&<2iNPjAD&&E6P-# zeTv@O-L(K#c;y;HP{8MoW0ZYuCy5#K)WZP8SkZ5#Ww2~1TP zePh3E{Y30T2xVRKE9MrC$gy*ockO)P#;*`260=*ysQw$bP;rykkY=Q?zfb0-#gomhif3O9&G2%eGqz!bCo z#m?DKm?>H2-A$W@Ti23HcCA=^K|%#+rWW#kP*vVP*_XnAZeqiD$YtT;EHP>K>=|+7 z{DyftoJTFA0@3kM?&@QXyXJ_>n;Y?`g*r-ZUM4+Hs~-ogP{k14{bpWd*tL5xmeIGl zIfN^A-8m@sGBf>0qCo*Uik4|3n|<|VOql}n zyHBTn69%`8bn3?zd9lV7^G}s2=(|irm$t*wY^Yb>Wc{5|$ix|R#7J=$*0`8zHEleiv#<^7(T7^u? z&C^m2AcBlCk@yalw|1k#;P;TyhR3D#xY?C74R#W3B}3&oc{tE*(88y1Y) zsRHR}4T0L^mWHiKW`Uh-ih&FPZ=8VJUHco0(Y=IBTD|@vg{!*j>a=2eioMII*9HO9 z`v!Mw1?03tVf5!K*X4JYD%e+beNq^6JED_`~~mX~#?d#48PR_Mr2FJ`{5 zk2im#^zoSVCBeQbxWh(^O$k6Vu`&L$rX27WbSXLr=-*4ysk++%YtShgnBD(&FtKq0 zu>x-^gIJVJ9BrK)j7%Is><*1rN99co!|JqCvII;UJR8=7$&cB-feIC%A z{yL9`>;3nESwut>WqCzJK&A#(jwaCc_x_wb^zi@ZPEHQaf8U4aZ~Mpt-NYgSUGL8Z zdI2orCN366CdyKx|6cJA+GYQ9O+er*{$s8($`-%=Ww|>R}YG0}$GsG+_PMvo&ycx7xHHKk4s0gCl$di=_eEx@2mK zAayPd_v5-r;QjkgFS@HvcbWZ+8)leV6looQ-ucE-a*0tR!JtWubMpJp60E@`s8n?k zvECtkJ5FR^4TiAdXQSp6Q?7KDS)CTFKWpeqNv2)RCe|DxYGluhXi%I_rCG|2K*-ik zp;qU%jT62URK;hLC3o9db+W++>H3t1+U$1b$_$b+qP<2siy=+MKrx2+suvn-jP{o=aH3b6gw63lbh zoiCq2$e&6YkIh74Ex#cDrTD-A23GR0@y*$zyOmZRi^0AQru3{Nm!S_H+C>T{5`%S$OmxRA!#GL zYQ?le$MBO9Mhk9x35K2bw?GNle}tDK@;L@S5Bt67&qpL$DDGk+irl#HU1FgzkK%+c zzSDjpWDNYAEv6`NOyxvekD?QJ`2qPmh#lz$);kC%1#Zj$a}uW3Z>pS+6h*4Ne^J~G zFCCenb!JJX4qp)KOFO|5$vzCzTfO#p6yaVJ_z_7B6p{mR(HISCSe&Ppv6Ojmg%YVT zSa~F0BVWYYufijRWE-Rq;&&6RglI-A8LAunG?W34rx>NE%Mz?}nm%IlzXaa_`hOWT=Rm6ls(urInAzl@6vRP^M;hU+u3d{f1J9R)DtYX?!2Av6KU$ zrm(I;DRmY|j|MwVNHKw)7AQF&l@Ohh=aKm;>@Mss_E8!0lg$r}&nfj8S_)0#-ZI`S zQt@obN69OFCGkbEmWf-*o-_&x6Una0ddyjLdQW|2Zu76};FQ{g+f@8>%hj_bm#W(Z z-bzcP<|G=vGfXuMH4I$l=u)C-jPsBC@>rozc(Z(z=HpXh(Xo&2qjlAC)x6Ut(_k_w zuDq+U_|2|kieF8~s3tTfuh;0;NY{whs=g^BwS)D~*_4SsM#M)nL_{C4uYVn08J^)R zv(UY3WJtVVv|;p0q)aqTgiVb8EURWajys<5+4{4>5AYk>HwJH}-dv3{7ex*i47+9y zXXvrttzL)xF0T*usJnb~((zm1cRX<_aWgRyu^MqQdp8GBs!eKN>RRdsdr!5w7J3bW z)|%EvjV?Ix{qBIODNR*4Pj*S^PQmjL!MwR5ffA!nRT^fw@>N4mbmEv_bBTP>{-WY4 zs_>FUgGH}QX)jw)DXSzauSKfmwePpq@1SY@aFMjOPuXGFEe4qexl2Y=pJR(g7<099 z`MSA{YVE@g1Xo_umWO6Y$4N)_$*D~Km{--WAFdw8uv|B%WiR4r=*cOc)zmDO{P}^W zgTL1+*FEjx8M;8YMtBDP9KIgY4wK6BEhY+022Df_>+0X-mmSlcsg^oM-aWx@R*b5K z^5@oTN(!GZxU}qe^QG#P&*3-7Hw>R*ol;)WUO|urLfk@{u+Ao(T<9BuyvK32el67v z9Ym}k(|OWWj7b+PWM~dC3}FuCqGJ&36a08i=rCfxR7dI%%WTXXq333o{X=agaYbwE zazJh(a>J$5x^r$)VCtss>KXP+>{zMro`iz<4dP*R-FL}luVP=7eTh3W+IB!W7!AUZ4RV?<|!jyBk~ zh5!nngq>RZ2R@wWwV2CWepC(&9lT3NLS`oRV%lx@IyE;RH&=w`h7#gpoeeLddq;bv z!Xxot;=4-rNp(q#OUX%iN+e6XOx9r1tXh?f(24-%3*b|b;CWKJI24|Z&b>n~b4?-NvzNiBRw)&-$ z=B;RJkoAkH{eH>*NE4C;o3QyGN*|QUoAu4B_SU;azltg?H9a4Cjb+tkg=e)hXIfSA zW+s_ZcjUyde>rSffo3*tYeCcd)y3SvY0ys7$J38ju8S@xuCsHS^+y`-4K;PAzLzfQ zl&lRL<{W-$c(vWEZt&V(AKN0@IJ%nkQ)QD(*&C_xg5P<+{fVPf*PDKOe%Z;G?wOfr zS+MpUgN=mmLKY;)C2jQWJyWzS5wY$vm|ZIF7~abHUEgBntLH1e^Wq?OSn93R$Da0R z=W)It6I`FT5;)r<B>vgLj~N8oT@XC{q`U{lpuunm6Kq7_3CIwX?f{?!i}w!kMP4YqjJevr--%KJN_grk&uM z$e-j5nMr!vJ{Frbd)7^xc2ze?D?6W4TMb zC{yS_94;JwCRr`{TdG8AIN~B=&ZFYEYrj7td2Hov3&U;gS>i}hmXGUIlbK;(=f360 z)_WnD`A^L}mp@OfH;jL+j=5UwFw{_Jaoxy@-c5MW8>T&lK!TY*Y+v9G@$jm^oV+Kv&rY!UAySM<+3JU~e|SHJ3H`^8y0l0kOQY zFm^JBUMVXl7!7)9|LeiV3hhYfgM*9pzn=eN58z0gz`Ea@?A*Zr5D*tD4~T;U+7JJ) z2M0TJ9`=8_X-|^u;yYiuH!`s*UvdPz@X=>To4e16*v(Hn4KF40i^+(urLy_F|#rO z&WJ_C(FhuaLcp9rr$fgN`sz6=4-ig?8Q8rru`n}tLgRw4gIH9YOsv(RyJ$SLf;fTR z14h;DeyE_I0lb8MI?uF--JlkVb%XxTO3x&YRCqkrH1lORH3HlFLlf5*z4wn7NL7q;hQxc`h^@?cQa) zKdix%&<`RIff*YeZD&Qnu*xoUz4*3~iE3C&ApDz&nNb_R6D;rO0kKAa)SE{=V}7nj z(eBPZ{Q9eh#k*nk$MQ_iwJGAT#e&F+&|ZcI43oHw@z+?@eBlqOviOPe4d1k4T@D6O zNo1(|(Gcd+qRsxi{E9CG^c0;s&URW~KLA$)!4JpoS$Xb({pcFc{K@a-UQIosh~QS2 zEI#LgTEZ7TzWT*&Li$#$Oi#_JQQJf|Fj@{N@}Dngz%S@qp_!vW;NvB((T~B;7)k=Q zE3oQAlW^9a&^%F-rVTSkJCK zxftm{fT6j+?m01?5tdCS{&shnCS||Tj0XBu%JM8cC|Fu2fv0kgGR*{ADH`m0tpV{I zYSH;!e`8+3U5qN#+a;3J_tRXnw$9`=vyXq^$%%+Am&qbVA1ZtdURD1S|4RhbsrR&j zgC|PlHghzR)(l_d&Puvg{g^)6LUeiI<6+{yM>?j=tf?A0Uj{jG4BAw&3QQYAeE6Sm zxh4#rpP(ynvGiXZ^-lRVI{0T9=W^7YnBVNuF@821)N?$)9?9@JhWF8W#t?LEYx{12 z>MJTjF>ljzBx`l0C}-L_BSq&FxyohrvC%#Hw7@($LW|kCks+Zqy~H#ArgKABo5hO; zOTDcU&+HFP?5;}$uaRutT{J{>6K-eJ++;DRVCUr-J`NslthVktDh=r;cfS@0qjIN7 zdO_Fg8z#hP+QrnM#8JfBB|5UH#6;vZp4C>*i*ykM?g$iGB_CKKOR17NH|9qTvE)T( zy%D0jD(byu!0qXyrje`G6bZ#lk>^ZX)$k6GsO=NwO>@DFyhdyJy0(NJ#yh_<96wa;=ud54f#vS1j8QQ`$Rx%OI$HpQeDu>ln${q9s~^g$X`dd&)a1~RYweD@D7U*GL$<%zAi*VD9b zP4@c>f`f`VW;hcr&(4JkOXm(KyK>`}?V}DY3fwvarV!qw_T;OO>bppE6;Mw-q}TQix31ZIrjODvX8nh6@f;V1N^ah-!;g8z9QGmy z{^T*wp=9sJdL*lL@)>LSz_~HFtTq0eT5v&HxpbaC1ly3fVd(5&P?=z%8`}V*J1Wrv zF*22Z3BNDx!+6#EI9%$bpKdKN%L}cCH*&=?zdb_fc8;*ej%Zd1s9KhPfh7j*>H11H zQ@~_%%x~ZiBYE3RBinuv;u76m(Niqc?B_1KENrJvpDirjP*6CwoJ^ly5~+=MNR@xy z7*)_pSK;#9z+<)>+!2`knO5bhdvWOgHoAcM!}<@e(>VF)AsM_&ct1CZf=<>dhA`Yh z26Od68859%D~#&w!8ZiN5%Wa^cRU_T-+-8|!kJI#d-L7e>2xy5Z>;PmRGX>O>~|3U zgTYAWy>zwGtlR6^5CT!&oK6Y-5k?I(6Q(z4-+uTcd_}?i)Mt_$Z+*$t5Xi8zZ4P-PccAaZW|crw^se)_b~QckmFxyVrl%K6`@$ewnd11b zHJ?9#r}tcH>w@kq^LA}XAYR6VR6WrYHa0evS2~W*!Z+@gHhe?3QG$(Fh5CC0N$b6u zefQz|B!7J%rH!%j$X(9(r9xFS@|)E7xuY*`#@c7zc`a+mz-efBI|(HV*|BTbl$mY_#Rbub7DYa5pysx030r|J;s^hv#qGIXM^r{*nV4 z6pvT2@Gt@T3Sa|lZJ|Edy$8i2ZDVQ+x;GMKz(jVCl?3A)PT*{ tl!J?dmCMM`kd=)MVr(ji_J42k;DtIm0j6<3N^C%vv!l__NGM36{eOQUY^MMK literal 0 HcmV?d00001 diff --git a/docs/24_word_seed.pdf b/docs/24_word_seed.pdf new file mode 100644 index 0000000000000000000000000000000000000000..97176f12039e8556424c60e00ff7f6f9a5fea1ef GIT binary patch literal 47002 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⪼`ed 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 literal 0 HcmV?d00001