From 021d5641e5e1596a66e3efd223d1006ba8752d3e Mon Sep 17 00:00:00 2001 From: Apoorv Khatreja Date: Sun, 17 Jul 2011 01:40:20 +0530 Subject: [PATCH 01/39] ant astyle --- .../k9/activity/setup/AccountSettings.java | 4 ++-- src/com/fsck/k9/mail/internet/MimeUtility.java | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/com/fsck/k9/activity/setup/AccountSettings.java b/src/com/fsck/k9/activity/setup/AccountSettings.java index 38c9e38e0..1032291f6 100644 --- a/src/com/fsck/k9/activity/setup/AccountSettings.java +++ b/src/com/fsck/k9/activity/setup/AccountSettings.java @@ -884,8 +884,8 @@ public class AccountSettings extends K9PreferenceActivity { } } - allFolderValues = new String[folders.size()+1]; - allFolderLabels = new String[folders.size()+1]; + allFolderValues = new String[folders.size() + 1]; + allFolderLabels = new String[folders.size() + 1]; allFolderValues[0] = K9.FOLDER_NONE; allFolderLabels[0] = K9.FOLDER_NONE; diff --git a/src/com/fsck/k9/mail/internet/MimeUtility.java b/src/com/fsck/k9/mail/internet/MimeUtility.java index 0fd320c0a..54040a364 100644 --- a/src/com/fsck/k9/mail/internet/MimeUtility.java +++ b/src/com/fsck/k9/mail/internet/MimeUtility.java @@ -1076,7 +1076,7 @@ public class MimeUtility { */ if (contentTransferEncoding != null) { contentTransferEncoding = - MimeUtility.getHeaderParameter(contentTransferEncoding, null); + MimeUtility.getHeaderParameter(contentTransferEncoding, null); if ("quoted-printable".equalsIgnoreCase(contentTransferEncoding)) { in = new QuotedPrintableInputStream(in); } else if ("base64".equalsIgnoreCase(contentTransferEncoding)) { @@ -1102,7 +1102,7 @@ public class MimeUtility { * @throws MessagingException */ public static void collectParts(Part part, ArrayList viewables, - ArrayList attachments) throws MessagingException { + ArrayList attachments) throws MessagingException { /* * If the part is Multipart but not alternative it's either mixed or * something we don't know about, which means we treat it as mixed @@ -1326,10 +1326,10 @@ public class MimeUtility { private static String getJisVariantFromAddress(String address) { if (isInDomain(address, "docomo.ne.jp") || isInDomain(address, "dwmail.jp") || - isInDomain(address, "pdx.ne.jp") || isInDomain(address, "willcom.com")) + isInDomain(address, "pdx.ne.jp") || isInDomain(address, "willcom.com")) return "docomo"; else if (isInDomain(address, "softbank.ne.jp") || isInDomain(address, "vodafone.ne.jp") || - isInDomain(address, "disney.ne.jp") || isInDomain(address, "vertuclub.ne.jp")) + isInDomain(address, "disney.ne.jp") || isInDomain(address, "vertuclub.ne.jp")) return "softbank"; else if (isInDomain(address, "ezweb.ne.jp") || isInDomain(address, "ido.ne.jp")) return "kddi"; @@ -1364,14 +1364,14 @@ public class MimeUtility { // iso-2022-jp variants are supported by no versions as of Dec 2010. if (charset.length() > 19 && charset.startsWith("x-") && - charset.endsWith("-iso-2022-jp-2007") && !Charset.isSupported(charset)) { + charset.endsWith("-iso-2022-jp-2007") && !Charset.isSupported(charset)) { in = new Iso2022JpToShiftJisInputStream(in); charset = "x-" + charset.substring(2, charset.length() - 17) + "-shift_jis-2007"; } // shift_jis variants are supported by Eclair and later. if (charset.length() > 17 && charset.startsWith("x-") && - charset.endsWith("-shift_jis-2007") && !Charset.isSupported(charset)) { + charset.endsWith("-shift_jis-2007") && !Charset.isSupported(charset)) { // If the JIS variant is iPhone, map the Unicode private use area in iPhone to the one in Android after // converting the character set from the standard Shift JIS to Unicode. if (charset.substring(2, charset.length() - 15).equals("iphone")) @@ -1392,7 +1392,7 @@ public class MimeUtility { } if (!supported) { Log.e(K9.LOG_TAG, "I don't know how to deal with the charset " + charset + - ". Falling back to US-ASCII"); + ". Falling back to US-ASCII"); charset = "US-ASCII"; } /* @@ -2393,12 +2393,12 @@ public class MimeUtility { public static void setCharset(String charset, Part part) throws MessagingException { part.setHeader(MimeHeader.HEADER_CONTENT_TYPE, - part.getMimeType() + ";\n charset=" + getExternalCharset(charset)); + part.getMimeType() + ";\n charset=" + getExternalCharset(charset)); } public static String getExternalCharset(String charset) { if (charset.length() > 17 && charset.startsWith("x-") && - charset.endsWith("-shift_jis-2007")) + charset.endsWith("-shift_jis-2007")) return "shift_jis"; return charset; From c6a2cb48b178fd4bd3caa48af622b704eda07b30 Mon Sep 17 00:00:00 2001 From: Apoorv Khatreja Date: Sun, 17 Jul 2011 01:41:14 +0530 Subject: [PATCH 02/39] Added method to check for status response. --- src/com/fsck/k9/mail/store/ImapResponseParser.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index f71951ddf..f18a04ce1 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -488,6 +488,15 @@ public class ImapResponseParser { } } + + public static boolean isStatusResponse(String symbol) { + return symbol.equalsIgnoreCase("OK") || + symbol.equalsIgnoreCase("NO") || + symbol.equalsIgnoreCase("BAD") || + symbol.equalsIgnoreCase("PREAUTH") || + symbol.equalsIgnoreCase("BYE"); + } + public static boolean equalsIgnoreCase(Object o1, Object o2) { if (o1 != null && o2 != null && o1 instanceof String && o2 instanceof String) { String s1 = (String)o1; From adc7d65d091de0b6e446d940bc87af4896e0ed8d Mon Sep 17 00:00:00 2001 From: Apoorv Khatreja Date: Sun, 17 Jul 2011 01:42:12 +0530 Subject: [PATCH 03/39] Newline :/ --- src/com/fsck/k9/mail/store/ImapResponseParser.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index f18a04ce1..02f029f30 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -488,7 +488,6 @@ public class ImapResponseParser { } } - public static boolean isStatusResponse(String symbol) { return symbol.equalsIgnoreCase("OK") || symbol.equalsIgnoreCase("NO") || From 9335dacd463b4452fcc79d6cb1c191821d87ae42 Mon Sep 17 00:00:00 2001 From: Apoorv Khatreja Date: Tue, 2 Aug 2011 02:19:12 +0530 Subject: [PATCH 04/39] Added a separate handler for status responses to parse the resp-text tokens contained in these responses. --- .../k9/mail/store/ImapResponseParser.java | 44 +++++++++++++++++-- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index 02f029f30..c4ef06fd4 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -1,5 +1,9 @@ package com.fsck.k9.mail.store; +import android.text.TextUtils; +import android.util.Log; + +import com.fsck.k9.K9; import com.fsck.k9.mail.MessagingException; import com.fsck.k9.mail.filter.FixedLengthInputStream; import com.fsck.k9.mail.filter.PeekableInputStream; @@ -68,9 +72,21 @@ public class ImapResponseParser { private void readTokens(ImapResponse response) throws IOException { response.clear(); Object token; - while ((token = readToken(response)) != null) { - if (!(token instanceof ImapList)) { - response.add(token); + String firstString = parseAtom(); + + response.add(firstString); + + if (mIn.peek() == ' ') { + mIn.read(); //Skip space if parseAtom() didn't do it. + } + + if (isStatusResponse(firstString)) { + parseStatusResponse(response); + } else { + while ((token = readToken(response)) != null) { + if (!(token instanceof ImapList)) { + response.add(token); + } } /* @@ -85,6 +101,26 @@ public class ImapResponseParser { response.mCompleted = true; } + void parseStatusResponse(ImapResponse parent) throws IOException { + + int next = mIn.peek(); + if (next == '[') { + parseSequence(parent); + if (mIn.peek() == ' ') { // Skip following space + mIn.read(); + } + } + + String rest = readStringUntil('\r'); + expect('\n'); + + if (!TextUtils.isEmpty(rest)) { + // The rest is free-form text. + parent.add(rest); + } + + } + /** * Reads the next token of the response. The token can be one of: String - * for NIL, QUOTED, NUMBER, ATOM. Object - for LITERAL. @@ -488,7 +524,7 @@ public class ImapResponseParser { } } - public static boolean isStatusResponse(String symbol) { + public boolean isStatusResponse(String symbol) { return symbol.equalsIgnoreCase("OK") || symbol.equalsIgnoreCase("NO") || symbol.equalsIgnoreCase("BAD") || From 47bedec4106af7f4047c762dba536aa166718494 Mon Sep 17 00:00:00 2001 From: Apoorv Khatreja Date: Thu, 4 Aug 2011 23:30:27 +0530 Subject: [PATCH 05/39] Fixed an issue which caused space characters to throw exceptions when being parsed. Some cosmetic changes, and context sensitivity for EXISTS, RECENT and EXPUNGE responses which have empty token lists. --- .../k9/mail/store/ImapResponseParser.java | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index c4ef06fd4..d72dddd0f 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -72,31 +72,23 @@ public class ImapResponseParser { private void readTokens(ImapResponse response) throws IOException { response.clear(); Object token; - String firstString = parseAtom(); + String firstToken = (String) readToken(response); - response.add(firstString); + response.add(firstToken); - if (mIn.peek() == ' ') { - mIn.read(); //Skip space if parseAtom() didn't do it. - } + skipIfSpace(); - if (isStatusResponse(firstString)) { + if (isStatusResponse(firstToken)) { parseStatusResponse(response); } else { while ((token = readToken(response)) != null) { if (!(token instanceof ImapList)) { response.add(token); + if (isSizeOrExpungeResponse((String) token)) { + break; + } } } - - /* - * TODO: Check for responses ("OK", "PREAUTH", "BYE", "NO", "BAD") - * that can contain resp-text tokens. If found, hand over to a special - * method that parses a resp-text token. There's no need to use - * readToken()/parseToken() on that data. - * - * See RFC 3501, Section 9 Formal Syntax (resp-text) - */ } response.mCompleted = true; } @@ -106,9 +98,7 @@ public class ImapResponseParser { int next = mIn.peek(); if (next == '[') { parseSequence(parent); - if (mIn.peek() == ' ') { // Skip following space - mIn.read(); - } + skipIfSpace(); } String rest = readStringUntil('\r'); @@ -121,6 +111,12 @@ public class ImapResponseParser { } + void skipIfSpace() throws IOException { + if (mIn.peek() == ' ') { + expect(' '); + } + } + /** * Reads the next token of the response. The token can be one of: String - * for NIL, QUOTED, NUMBER, ATOM. Object - for LITERAL. @@ -532,6 +528,12 @@ public class ImapResponseParser { symbol.equalsIgnoreCase("BYE"); } + public boolean isSizeOrExpungeResponse(String symbol) { + return symbol.equalsIgnoreCase("EXISTS") || + symbol.equalsIgnoreCase("RECENT") || + symbol.equalsIgnoreCase("EXPUNGE"); + } + public static boolean equalsIgnoreCase(Object o1, Object o2) { if (o1 != null && o2 != null && o1 instanceof String && o2 instanceof String) { String s1 = (String)o1; From c5cc62b57002a578487b395bb8a4d506775505c1 Mon Sep 17 00:00:00 2001 From: cketti Date: Thu, 10 Nov 2011 05:05:05 +0100 Subject: [PATCH 06/39] Removed AutoSyncHelper and use API 5 methods directly --- src/com/fsck/k9/helper/AutoSyncHelper.java | 115 --------------------- src/com/fsck/k9/helper/AutoSyncSdk3.java | 39 ------- src/com/fsck/k9/helper/AutoSyncSdk4.java | 41 -------- src/com/fsck/k9/helper/AutoSyncSdk5.java | 18 ---- src/com/fsck/k9/helper/IAutoSync.java | 26 ----- src/com/fsck/k9/service/BootReceiver.java | 3 +- src/com/fsck/k9/service/MailService.java | 9 +- 7 files changed, 3 insertions(+), 248 deletions(-) delete mode 100644 src/com/fsck/k9/helper/AutoSyncHelper.java delete mode 100644 src/com/fsck/k9/helper/AutoSyncSdk3.java delete mode 100644 src/com/fsck/k9/helper/AutoSyncSdk4.java delete mode 100644 src/com/fsck/k9/helper/AutoSyncSdk5.java delete mode 100644 src/com/fsck/k9/helper/IAutoSync.java diff --git a/src/com/fsck/k9/helper/AutoSyncHelper.java b/src/com/fsck/k9/helper/AutoSyncHelper.java deleted file mode 100644 index 23e6b5907..000000000 --- a/src/com/fsck/k9/helper/AutoSyncHelper.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.fsck.k9.helper; - -import com.fsck.k9.K9; -import android.os.Build; -import android.util.Log; - -/** - * Helper class to get the current state of the auto-sync setting. - */ -public class AutoSyncHelper { - /** - * False, if we never tried to load the class for this SDK version. - * True, otherwise. - * - * Note: if sAutoSync is null and sChecked is true, then an error occurred - * while loading the class for the SDK version we're running on. - */ - private static boolean sChecked = false; - - /** - * Instance of the SDK specific class that implements the IAutoSync - * interface. - */ - private static IAutoSync sAutoSync = null; - - /** - * String for the auto-sync changed Intent. This isn't currently exposed by the API - */ - public static String SYNC_CONN_STATUS_CHANGE = "com.android.sync.SYNC_CONN_STATUS_CHANGED"; - /** - * Try loading the class that implements IAutoSync for this SDK version. - * - * @return the IAutoSync object for this SDK version, or null if something - * went wrong. - */ - private static IAutoSync loadAutoSync() { - /* - * We're trying to load the class for this SDK version. If anything - * goes wrong after this point, we don't want to try again. - */ - sChecked = true; - - /* - * Check the version of the SDK we are running on. Choose an - * implementation class designed for that version of the SDK. - */ - int sdkVersion = Integer.parseInt(Build.VERSION.SDK); - - String className = null; - if (sdkVersion == Build.VERSION_CODES.CUPCAKE) { - className = "com.fsck.k9.helper.AutoSyncSdk3"; - } else if (sdkVersion == Build.VERSION_CODES.DONUT) { - className = "com.fsck.k9.helper.AutoSyncSdk4"; - } else if (sdkVersion >= Build.VERSION_CODES.ECLAIR) { - className = "com.fsck.k9.helper.AutoSyncSdk5"; - } - - /* - * Find the required class by name and instantiate it. - */ - try { - Class clazz = - Class.forName(className).asSubclass(IAutoSync.class); - - IAutoSync autoSync = clazz.newInstance(); - autoSync.initialize(K9.app); - - return autoSync; - } catch (ClassNotFoundException e) { - Log.e(K9.LOG_TAG, "Couldn't find class: " + className, e); - } catch (InstantiationException e) { - Log.e(K9.LOG_TAG, "Couldn't instantiate class: " + className, e); - } catch (IllegalAccessException e) { - Log.e(K9.LOG_TAG, "Couldn't access class: " + className, e); - } catch (NoSuchMethodException e) { - if (K9.DEBUG) { - Log.d(K9.LOG_TAG, "Couldn't load method to get auto-sync state", e); - } - } - return null; - } - - /** - * Checks whether we can query the auto-sync state using - * getMasterSyncAutomatically() or not. - * - * @return true, if calls to getMasterSyncAutomatically() will return the - * state of the auto-sync setting. false, otherwise. - */ - public static boolean isAvailable() { - if (!sChecked) { - sAutoSync = loadAutoSync(); - } - return (sAutoSync != null); - } - - /** - * Query the state of the auto-sync setting. - * - * @return the state of the auto-sync setting. - * @see IAutoSync - */ - public static boolean getMasterSyncAutomatically() { - if (!sChecked) { - sAutoSync = loadAutoSync(); - } - - if (sAutoSync == null) { - throw new RuntimeException( - "Called getMasterSyncAutomatically() before checking if it's available."); - } - - return sAutoSync.getMasterSyncAutomatically(); - } -} diff --git a/src/com/fsck/k9/helper/AutoSyncSdk3.java b/src/com/fsck/k9/helper/AutoSyncSdk3.java deleted file mode 100644 index 7fc636199..000000000 --- a/src/com/fsck/k9/helper/AutoSyncSdk3.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.fsck.k9.helper; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import android.content.ContentResolver; -import android.content.Context; -import android.os.Handler; - -public class AutoSyncSdk3 implements IAutoSync { - private Method mGetListenForNetworkTickles; - private Object mQueryMap; - - public void initialize(Context context) throws NoSuchMethodException { - /* - * There's no documented/official way to query the state of the - * auto-sync setting for a normal application in SDK 1.5/API 3. - * - * We use reflection to get an Sync.Settings.QueryMap" object, so we - * can call its getListenForNetworkTickles() method. This will return - * the current auto-sync state. - */ - try { - Class clazz = Class.forName("android.provider.Sync$Settings$QueryMap"); - Constructor c = clazz.getConstructor(ContentResolver.class, boolean.class, Handler.class); - mQueryMap = c.newInstance(context.getContentResolver(), true, null); - mGetListenForNetworkTickles = mQueryMap.getClass().getMethod("getListenForNetworkTickles"); - } catch (Exception e) { - throw new NoSuchMethodException(); - } - } - - public boolean getMasterSyncAutomatically() { - try { - return (Boolean) mGetListenForNetworkTickles.invoke(mQueryMap); - } catch (Exception e) { - return false; - } - } -} diff --git a/src/com/fsck/k9/helper/AutoSyncSdk4.java b/src/com/fsck/k9/helper/AutoSyncSdk4.java deleted file mode 100644 index d5c9ac89b..000000000 --- a/src/com/fsck/k9/helper/AutoSyncSdk4.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.fsck.k9.helper; - -import java.lang.reflect.Method; - -import com.fsck.k9.K9; - -import android.content.ContentResolver; -import android.content.Context; -import android.util.Log; - -public class AutoSyncSdk4 implements IAutoSync { - private Method mGetListenForNetworkTickles; - private Object mContentService; - - public void initialize(Context context) throws NoSuchMethodException { - /* - * There's no documented/official way to query the state of the - * auto-sync setting for a normal application in SDK 1.6/API 4. - * - * We use reflection to get an ContentService object, so we can call its - * getListenForNetworkTickles() method. This will return the current - * auto-sync state. - */ - try { - Method getContentService = ContentResolver.class.getMethod("getContentService"); - mContentService = getContentService.invoke(null); - mGetListenForNetworkTickles = mContentService.getClass().getMethod("getListenForNetworkTickles"); - } catch (Exception e) { - throw new NoSuchMethodException(); - } - } - - public boolean getMasterSyncAutomatically() { - try { - return (Boolean) mGetListenForNetworkTickles.invoke(mContentService); - } catch (Exception e) { - Log.e(K9.LOG_TAG, "Could not query for network tickle", e); - return true; - } - } -} diff --git a/src/com/fsck/k9/helper/AutoSyncSdk5.java b/src/com/fsck/k9/helper/AutoSyncSdk5.java deleted file mode 100644 index d6e6d684d..000000000 --- a/src/com/fsck/k9/helper/AutoSyncSdk5.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.fsck.k9.helper; - -import android.content.ContentResolver; -import android.content.Context; - -public class AutoSyncSdk5 implements IAutoSync { - public void initialize(Context context) throws NoSuchMethodException { - // Nothing to do here - } - - public boolean getMasterSyncAutomatically() { - /* - * SDK 2.0/API 5 introduced an official method to query the auto-sync - * state. - */ - return ContentResolver.getMasterSyncAutomatically(); - } -} diff --git a/src/com/fsck/k9/helper/IAutoSync.java b/src/com/fsck/k9/helper/IAutoSync.java deleted file mode 100644 index 660da060d..000000000 --- a/src/com/fsck/k9/helper/IAutoSync.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.fsck.k9.helper; - -import android.content.Context; - -/** - * Classes that implement this interface know how to query the system for the - * current state of the auto-sync setting. This method differs from SDK 3 to - * SDK 5, so there are specialized implementations for each SDK version. - */ -public interface IAutoSync { - /** - * Do the necessary reflection magic to get the necessary objects and/or - * methods to later query the state of the auto-sync setting. - * - * @param context The application context object. - * @throws NoSuchMethodException if something went wrong. - */ - public void initialize(Context context) throws NoSuchMethodException; - - /** - * Query the state of the auto-sync setting. - * - * @return the state of the auto-sync setting. - */ - public boolean getMasterSyncAutomatically(); -} diff --git a/src/com/fsck/k9/service/BootReceiver.java b/src/com/fsck/k9/service/BootReceiver.java index bbe8ea734..8f4120655 100644 --- a/src/com/fsck/k9/service/BootReceiver.java +++ b/src/com/fsck/k9/service/BootReceiver.java @@ -12,7 +12,6 @@ import android.net.Uri; import android.util.Log; import com.fsck.k9.K9; -import com.fsck.k9.helper.AutoSyncHelper; public class BootReceiver extends CoreReceiver { @@ -41,7 +40,7 @@ public class BootReceiver extends CoreReceiver { } else if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) { MailService.connectivityChange(context, tmpWakeLockId); tmpWakeLockId = null; - } else if (AutoSyncHelper.SYNC_CONN_STATUS_CHANGE.equals(action)) { + } else if ("com.android.sync.SYNC_CONN_STATUS_CHANGED".equals(action)) { K9.BACKGROUND_OPS bOps = K9.getBackgroundOps(); if (bOps == K9.BACKGROUND_OPS.WHEN_CHECKED_AUTO_SYNC) { MailService.actionReset(context, tmpWakeLockId); diff --git a/src/com/fsck/k9/service/MailService.java b/src/com/fsck/k9/service/MailService.java index 8f3330073..3d8dac3b7 100644 --- a/src/com/fsck/k9/service/MailService.java +++ b/src/com/fsck/k9/service/MailService.java @@ -4,6 +4,7 @@ package com.fsck.k9.service; import java.util.Collection; import java.util.Date; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -18,7 +19,6 @@ import com.fsck.k9.K9; import com.fsck.k9.Preferences; import com.fsck.k9.Account.FolderMode; import com.fsck.k9.controller.MessagingController; -import com.fsck.k9.helper.AutoSyncHelper; import com.fsck.k9.mail.Pusher; public class MailService extends CoreService { @@ -98,12 +98,7 @@ public class MailService extends CoreService { hasConnectivity = state == State.CONNECTED; } boolean backgroundData = connectivityManager.getBackgroundDataSetting(); - boolean autoSync = true; - if (AutoSyncHelper.isAvailable()) { - autoSync = AutoSyncHelper.getMasterSyncAutomatically(); - - Log.i(K9.LOG_TAG, "AutoSync help is available, autoSync = " + autoSync); - } + boolean autoSync = ContentResolver.getMasterSyncAutomatically(); K9.BACKGROUND_OPS bOps = K9.getBackgroundOps(); From 5eb2533bcb965777df73011c8cab94f8192e4e47 Mon Sep 17 00:00:00 2001 From: cketti Date: Thu, 10 Nov 2011 04:56:49 +0100 Subject: [PATCH 07/39] Removed code for old contacts API (ContactsSdk3_4) --- src/com/fsck/k9/helper/Contacts.java | 6 +- src/com/fsck/k9/helper/ContactsSdk3_4.java | 263 --------------------- 2 files changed, 2 insertions(+), 267 deletions(-) delete mode 100644 src/com/fsck/k9/helper/ContactsSdk3_4.java diff --git a/src/com/fsck/k9/helper/Contacts.java b/src/com/fsck/k9/helper/Contacts.java index a79f0600a..355f61d22 100644 --- a/src/com/fsck/k9/helper/Contacts.java +++ b/src/com/fsck/k9/helper/Contacts.java @@ -18,8 +18,8 @@ import com.fsck.k9.mail.Address; * A class that uses the latest contacts API available on the device will be * loaded at runtime. * - * @see ContactsSdk3_4 * @see ContactsSdk5 + * @see ContactsSdk5p */ public abstract class Contacts { /** @@ -43,9 +43,7 @@ public abstract class Contacts { int sdkVersion = Integer.parseInt(Build.VERSION.SDK); String className = null; - if (sdkVersion <= Build.VERSION_CODES.DONUT) { - className = "com.fsck.k9.helper.ContactsSdk3_4"; - } else if (sdkVersion <= Build.VERSION_CODES.ECLAIR_MR1) { + if (sdkVersion <= Build.VERSION_CODES.ECLAIR_MR1) { /* * The new API was introduced with SDK 5. But Android versions < 2.2 * need some additional code to be able to search for phonetic names. diff --git a/src/com/fsck/k9/helper/ContactsSdk3_4.java b/src/com/fsck/k9/helper/ContactsSdk3_4.java deleted file mode 100644 index aae25c14b..000000000 --- a/src/com/fsck/k9/helper/ContactsSdk3_4.java +++ /dev/null @@ -1,263 +0,0 @@ -package com.fsck.k9.helper; - -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.util.Log; -import android.provider.Contacts; -import android.provider.Contacts.ContactMethods; -import com.fsck.k9.mail.Address; -import com.fsck.k9.K9; - - -/** - * Access the contacts on the device using the old API (introduced in SDK 1). - * - * @see android.provider.Contacts - */ -@SuppressWarnings("deprecation") -public class ContactsSdk3_4 extends com.fsck.k9.helper.Contacts { - /** - * The order in which the search results are returned by - * {@link #searchContacts(CharSequence)}. - */ - private static final String SORT_ORDER = - Contacts.ContactMethods.TIMES_CONTACTED + " DESC, " + - Contacts.ContactMethods.DISPLAY_NAME + ", " + - Contacts.ContactMethods._ID; - - /** - * Array of columns to load from the database. - * - * Important: The _ID field is needed by - * {@link com.fsck.k9.EmailAddressAdapter} or more specificly by - * {@link android.widget.ResourceCursorAdapter}. - */ - private static final String PROJECTION[] = { - Contacts.ContactMethods._ID, - Contacts.ContactMethods.DISPLAY_NAME, - Contacts.ContactMethods.DATA, - Contacts.ContactMethods.PERSON_ID - }; - - /** - * Index of the name field in the projection. This must match the order in - * {@link #PROJECTION}. - */ - private static final int NAME_INDEX = 1; - - /** - * Index of the email address field in the projection. This must match the - * order in {@link #PROJECTION}. - */ - private static final int EMAIL_INDEX = 2; - - /** - * Index of the contact id field in the projection. This must match the order in - * {@link #PROJECTION}. - */ - private static final int CONTACT_ID_INDEX = 3; - - - public ContactsSdk3_4(final Context context) { - super(context); - } - - @Override - public void createContact(final Address email) { - final Uri contactUri = Uri.fromParts("mailto", email.getAddress(), null); - - final Intent contactIntent = new Intent(Contacts.Intents.SHOW_OR_CREATE_CONTACT); - contactIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - contactIntent.setData(contactUri); - - // Pass along full E-mail string for possible create dialog - contactIntent.putExtra(Contacts.Intents.EXTRA_CREATE_DESCRIPTION, - email.toString()); - - // Only provide personal name hint if we have one - final String senderPersonal = email.getPersonal(); - if (senderPersonal != null) { - contactIntent.putExtra(Contacts.Intents.Insert.NAME, senderPersonal); - } - - mContext.startActivity(contactIntent); - } - - @Override - public boolean isInContacts(final String emailAddress) { - boolean result = false; - - final Cursor c = getContactByAddress(emailAddress); - - if (c != null) { - if (c.getCount() > 0) { - result = true; - } - c.close(); - } - - return result; - } - - @Override - public Cursor searchContacts(final CharSequence constraint) { - final String where; - final String[] args; - if (constraint == null) { - where = Contacts.ContactMethods.KIND + " = " + Contacts.KIND_EMAIL; - args = null; - } else { - where = Contacts.ContactMethods.KIND + " = " + Contacts.KIND_EMAIL + - " AND " + - "(" + - // Match if name starts with "constraint" - Contacts.People.NAME + " LIKE ?" + - " OR " + - // Match if name contains a word that starts with "constraint" - Contacts.People.NAME + " LIKE ?" + - " OR " + - // Match if phonetic name starts with "constraint" - Contacts.People.PHONETIC_NAME + " LIKE ?" + - " OR " + - // Match if phonetic name contains a word that starts with "constraint" - Contacts.People.PHONETIC_NAME + " LIKE ?" + - " OR " + - // Match if email address starts with "constraint" - Contacts.ContactMethods.DATA + " LIKE ?" + - ")"; - final String filter = constraint.toString() + "%"; - final String filter2 = "% " + filter; - args = new String[] {filter, filter2, filter, filter2, filter}; - } - - final Cursor c = mContentResolver.query( - Contacts.ContactMethods.CONTENT_URI, - PROJECTION, - where, - args, - SORT_ORDER); - - if (c != null) { - /* - * To prevent expensive execution in the UI thread: - * Cursors get lazily executed, so if you don't call anything on - * the cursor before returning it from the background thread you'll - * have a complied program for the cursor, but it won't have been - * executed to generate the data yet. Often the execution is more - * expensive than the compilation... - */ - c.getCount(); - } - - return c; - } - - @Override - public String getNameForAddress(String address) { - if (address == null) { - return null; - } - - final Cursor c = getContactByAddress(address); - - String name = null; - if (c != null) { - if (c.getCount() > 0) { - c.moveToFirst(); - name = getName(c); - } - c.close(); - } - - return name; - } - - @Override - public String getName(Cursor c) { - return c.getString(NAME_INDEX); - } - - @Override - public String getEmail(Cursor c) { - return c.getString(EMAIL_INDEX); - } - - @Override - public void markAsContacted(final Address[] addresses) { - //TODO: Optimize! Potentially a lot of database queries - for (final Address address : addresses) { - final Cursor c = getContactByAddress(address.getAddress()); - - if (c != null) { - if (c.getCount() > 0) { - c.moveToFirst(); - final long personId = c.getLong(CONTACT_ID_INDEX); - Contacts.People.markAsContacted(mContentResolver, personId); - } - c.close(); - } - } - } - - @Override - public Intent contactPickerIntent() { - return new Intent(Intent.ACTION_PICK, Contacts.People.CONTENT_URI); - } - - @Override - public String getEmailFromContactPicker(final Intent data) { - Cursor cursor = null; - Cursor cursor2 = null; - String email = ""; - - try { - Uri result = data.getData(); - cursor = mContentResolver.query(result, null, null, null, null); - if (cursor.moveToFirst()) { - String emailId = cursor.getString(cursor.getColumnIndex(Contacts.People.PRIMARY_EMAIL_ID)); - cursor2 = mContext.getContentResolver().query( - ContactMethods.CONTENT_EMAIL_URI, - new String[] { ContactMethods.DATA }, - "contact_methods._id=?", - new String[] { emailId }, - null); - - if (cursor2.moveToFirst()) { - email = cursor2.getString(0); - } - } - } catch (Exception e) { - Log.e(K9.LOG_TAG, "Failed to get email data", e); - } finally { - Utility.closeQuietly(cursor); - Utility.closeQuietly(cursor2); - } - - return email; - } - - /** - * Return a {@link Cursor} instance that can be used to fetch information - * about the contact with the given email address. - * - * @param address The email address to search for. - * @return A {@link Cursor} instance that can be used to fetch information - * about the contact with the given email address - */ - private Cursor getContactByAddress(String address) { - final String where = Contacts.ContactMethods.KIND + " = " + Contacts.KIND_EMAIL + - " AND " + - Contacts.ContactMethods.DATA + " = ?"; - final String[] args = new String[] {address}; - - final Cursor c = mContentResolver.query( - Contacts.ContactMethods.CONTENT_URI, - PROJECTION, - where, - args, - SORT_ORDER); - return c; - } -} From 85f556e6c9d72b1f73f296fc7a51aa633de19c4a Mon Sep 17 00:00:00 2001 From: cketti Date: Thu, 10 Nov 2011 05:09:54 +0100 Subject: [PATCH 08/39] Removed helper function to create AbsoluteSizeSpan objects --- src/com/fsck/k9/K9.java | 51 ----------------------- src/com/fsck/k9/activity/MessageList.java | 5 ++- 2 files changed, 3 insertions(+), 53 deletions(-) diff --git a/src/com/fsck/k9/K9.java b/src/com/fsck/k9/K9.java index 6b8212295..ca4799eef 100644 --- a/src/com/fsck/k9/K9.java +++ b/src/com/fsck/k9/K9.java @@ -2,7 +2,6 @@ package com.fsck.k9; import java.io.File; -import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; @@ -23,7 +22,6 @@ import android.os.Environment; import android.os.Handler; import android.os.Looper; import android.text.format.Time; -import android.text.style.AbsoluteSizeSpan; import android.util.Log; import com.fsck.k9.activity.MessageCompose; @@ -68,11 +66,6 @@ public class K9 extends Application { */ private static List observers = new ArrayList(); - /** - * @see K9#createAbsoluteSizeSpan(int) - */ - private static Constructor sAbsoluteSizeSpanConstructor; - public enum BACKGROUND_OPS { WHEN_CHECKED, ALWAYS, NEVER, WHEN_CHECKED_AUTO_SYNC } @@ -1012,48 +1005,4 @@ public class K9 extends Application { public static void setAttachmentDefaultPath(String attachmentDefaultPath) { K9.mAttachmentDefaultPath = attachmentDefaultPath; } - - /** - * Creates an {@link AbsoluteSizeSpan} object. - * - *

- * Android versions prior to 2.0 don't support the constructor with two parameters - * ({@link AbsoluteSizeSpan#AbsoluteSizeSpan(int, boolean)}). So we have to perform some - * reflection magic to dynamically load the new constructor on devices that support it. - * For devices with old Android versions we just use the size as pixels (instead of dip). - *

- * - * @param size This is used as the {@code size} parameter for the AbsoluteSizeSpan constructor. - * @return a AbsoluteSizeSpan object with the specified text size. - */ - public static AbsoluteSizeSpan createAbsoluteSizeSpan(int size) { - if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5) { - // For Android 1.5/1.6 simply use the constructor with only the size parameter. - // Yes, that will most likely look wrong! - return new AbsoluteSizeSpan(size); - } - - if (sAbsoluteSizeSpanConstructor == null) { - try { - sAbsoluteSizeSpanConstructor = AbsoluteSizeSpan.class.getConstructor(int.class, boolean.class); - } catch (Exception e) { - Log.e(K9.LOG_TAG, "Couldn't get the AbsoluteSizeSpan(int, boolean) constructor", e); - - // Fallback - return new AbsoluteSizeSpan(size); - } - } - - AbsoluteSizeSpan result; - try { - result = sAbsoluteSizeSpanConstructor.newInstance(size, true); - } catch (Exception e) { - Log.e(K9.LOG_TAG, "Couldn't call the AbsoluteSizeSpan(int, boolean) constructor", e); - - // Fallback - result = new AbsoluteSizeSpan(size); - } - - return result; - } } diff --git a/src/com/fsck/k9/activity/MessageList.java b/src/com/fsck/k9/activity/MessageList.java index 7cb10161f..5c6d8c023 100644 --- a/src/com/fsck/k9/activity/MessageList.java +++ b/src/com/fsck/k9/activity/MessageList.java @@ -18,6 +18,7 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableStringBuilder; +import android.text.style.AbsoluteSizeSpan; import android.text.style.ForegroundColorSpan; import android.text.style.StyleSpan; import android.util.Log; @@ -2181,7 +2182,7 @@ public class MessageList 0, noSender.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - str.setSpan(K9.createAbsoluteSizeSpan(mFontSizes.getMessageListSender()), + str.setSpan(new AbsoluteSizeSpan(mFontSizes.getMessageListSender(), true), 0, noSender.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); @@ -2270,7 +2271,7 @@ public class MessageList 0, message.sender.length() + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - str.setSpan(K9.createAbsoluteSizeSpan(mFontSizes.getMessageListSender()), + str.setSpan(new AbsoluteSizeSpan(mFontSizes.getMessageListSender(), true), 0, message.sender.length() + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); From 14ff4d006e50cb5d422ddc992006661a75368112 Mon Sep 17 00:00:00 2001 From: cketti Date: Thu, 10 Nov 2011 05:34:34 +0100 Subject: [PATCH 09/39] Removed onBackPressed() magic --- src/com/fsck/k9/activity/EditIdentity.java | 10 ++--- src/com/fsck/k9/activity/FolderList.java | 26 ++----------- .../fsck/k9/activity/ManageIdentities.java | 8 ++-- src/com/fsck/k9/activity/MessageCompose.java | 24 +----------- src/com/fsck/k9/activity/MessageList.java | 17 +------- src/com/fsck/k9/activity/MessageView.java | 39 +------------------ .../k9/activity/setup/AccountSettings.java | 9 ++--- .../setup/AccountSetupComposition.java | 9 ++--- .../k9/activity/setup/FolderSettings.java | 18 ++++----- .../k9/activity/setup/FontSizeSettings.java | 9 ++--- src/com/fsck/k9/activity/setup/Prefs.java | 18 ++++----- 11 files changed, 36 insertions(+), 151 deletions(-) diff --git a/src/com/fsck/k9/activity/EditIdentity.java b/src/com/fsck/k9/activity/EditIdentity.java index 6fff570cb..931609739 100644 --- a/src/com/fsck/k9/activity/EditIdentity.java +++ b/src/com/fsck/k9/activity/EditIdentity.java @@ -1,7 +1,6 @@ package com.fsck.k9.activity; import android.os.Bundle; -import android.view.KeyEvent; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; @@ -125,12 +124,9 @@ public class EditIdentity extends K9Activity { } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - saveIdentity(); - return true; - } - return super.onKeyDown(keyCode, event); + public void onBackPressed() { + saveIdentity(); + super.onBackPressed(); } @Override diff --git a/src/com/fsck/k9/activity/FolderList.java b/src/com/fsck/k9/activity/FolderList.java index 47b346fcc..5e0155332 100644 --- a/src/com/fsck/k9/activity/FolderList.java +++ b/src/com/fsck/k9/activity/FolderList.java @@ -356,38 +356,18 @@ public class FolderList extends K9ListActivity { @Override public void onBackPressed() { - // This will be called either automatically for you on 2.0 - // or later, or by the code above on earlier versions of the - // platform. if (K9.manageBack()) { onAccounts(); } else { - // TODO - when we move to android 2.0, uncomment this instead. - // super.onBackPressed() - finish(); + super.onBackPressed(); } } - @Override public boolean onKeyDown(int keyCode, KeyEvent event) { + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { //Shortcuts that work no matter what is selected - - if ( - // TODO - when we move to android 2.0, uncomment this. - // android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR && - - keyCode == KeyEvent.KEYCODE_BACK - && event.getRepeatCount() == 0 - && K9.manageBack()) { - // Take care of calling this method on earlier versions of - // the platform where it doesn't exist. - onBackPressed(); - return true; - } - - switch (keyCode) { case KeyEvent.KEYCODE_Q: - //case KeyEvent.KEYCODE_BACK: { onAccounts(); return true; diff --git a/src/com/fsck/k9/activity/ManageIdentities.java b/src/com/fsck/k9/activity/ManageIdentities.java index 3e5d83813..a15aaaa6f 100644 --- a/src/com/fsck/k9/activity/ManageIdentities.java +++ b/src/com/fsck/k9/activity/ManageIdentities.java @@ -119,11 +119,9 @@ public class ManageIdentities extends ChooseIdentity { @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - saveIdentities(); - } - return super.onKeyDown(keyCode, event); + public void onBackPressed() { + saveIdentities(); + super.onBackPressed(); } private void saveIdentities() { diff --git a/src/com/fsck/k9/activity/MessageCompose.java b/src/com/fsck/k9/activity/MessageCompose.java index 3a282a947..d6e4e546f 100644 --- a/src/com/fsck/k9/activity/MessageCompose.java +++ b/src/com/fsck/k9/activity/MessageCompose.java @@ -29,7 +29,6 @@ import android.os.Parcelable; import android.provider.OpenableColumns; import android.text.util.Rfc822Tokenizer; import android.util.Log; -import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -1834,13 +1833,10 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc @Override public void onBackPressed() { - // This will be called either automatically for you on 2.0 - // or later, or by the code above on earlier versions of the - // platform. if (mDraftNeedsSaving) { showDialog(DIALOG_SAVE_OR_DISCARD_DRAFT_MESSAGE); } else { - finish(); + super.onBackPressed(); } } @@ -1868,24 +1864,6 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc return super.onCreateDialog(id); } - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if ( - // TODO - when we move to android 2.0, uncomment this. - // android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR && - - keyCode == KeyEvent.KEYCODE_BACK - && event.getRepeatCount() == 0 - && K9.manageBack()) { - // Take care of calling this method on earlier versions of - // the platform where it doesn't exist. - onBackPressed(); - return true; - } - - return super.onKeyDown(keyCode, event); - } - /** * Returns true if all attachments were able to be attached, otherwise returns false. */ diff --git a/src/com/fsck/k9/activity/MessageList.java b/src/com/fsck/k9/activity/MessageList.java index 5c6d8c023..91ce323cc 100644 --- a/src/com/fsck/k9/activity/MessageList.java +++ b/src/com/fsck/k9/activity/MessageList.java @@ -898,9 +898,6 @@ public class MessageList @Override public void onBackPressed() { - // This will be called either automatically for you on 2.0 - // or later, or by the code above on earlier versions of the - // platform. if (K9.manageBack()) { if (mQueryString == null) { onShowFolderList(); @@ -908,24 +905,12 @@ public class MessageList onAccounts(); } } else { - finish(); + super.onBackPressed(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { - if ( - // XXX TODO - when we go to android 2.0, uncomment this - // android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR && - keyCode == KeyEvent.KEYCODE_BACK - && event.getRepeatCount() == 0 - ) { - // Take care of calling this method on earlier versions of - // the platform where it doesn't exist. - onBackPressed(); - return true; - } - // Shortcuts that work no matter what is selected switch (keyCode) { diff --git a/src/com/fsck/k9/activity/MessageView.java b/src/com/fsck/k9/activity/MessageView.java index f969b9d55..5c62f8f35 100644 --- a/src/com/fsck/k9/activity/MessageView.java +++ b/src/com/fsck/k9/activity/MessageView.java @@ -27,8 +27,6 @@ import com.fsck.k9.view.SingleMessageView; import com.fsck.k9.view.AttachmentView.AttachmentFileDownloadCallback; import java.io.File; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; import java.util.*; public class MessageView extends K9Activity implements OnClickListener { @@ -42,27 +40,6 @@ public class MessageView extends K9Activity implements OnClickListener { private static final int ACTIVITY_CHOOSE_FOLDER_COPY = 2; private static final int ACTIVITY_CHOOSE_DIRECTORY = 3; - /** - * Whether parent class have the onBackPressed() method (with no argument) - */ - private static final boolean HAS_SUPER_ON_BACK_METHOD; - static { - boolean hasOnBackMethod; - try { - final Class superClass = MessageView.class.getSuperclass(); - final Method method = superClass.getMethod("onBackPressed", new Class[] {}); - hasOnBackMethod = (method.getModifiers() & Modifier.PUBLIC) == Modifier.PUBLIC; - } catch (final SecurityException e) { - if (K9.DEBUG) { - Log.v(K9.LOG_TAG, "Security exception while checking for 'onBackPressed' method", e); - } - hasOnBackMethod = false; - } catch (final NoSuchMethodException e) { - hasOnBackMethod = false; - } - HAS_SUPER_ON_BACK_METHOD = hasOnBackMethod; - } - private SingleMessageView mMessageView; private PgpData mPgpData; @@ -150,15 +127,6 @@ public class MessageView extends K9Activity implements OnClickListener { @Override public boolean onKeyDown(final int keyCode, final KeyEvent event) { - if ( - // XXX TODO - when we go to android 2.0, uncomment this - // android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR && - keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { - // Take care of calling this method on earlier versions of - // the platform where it doesn't exist. - onBackPressed(); - return true; - } switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: { if (K9.useVolumeKeysForNavigationEnabled()) { @@ -263,17 +231,12 @@ public class MessageView extends K9Activity implements OnClickListener { @Override public void onBackPressed() { - // This will be called either automatically for you on 2.0 - // or later, or by the code above on earlier versions of the - // platform. if (K9.manageBack()) { String folder = (mMessage != null) ? mMessage.getFolder().getName() : null; MessageList.actionHandleFolder(this, mAccount, folder); finish(); - } else if (HAS_SUPER_ON_BACK_METHOD) { - super.onBackPressed(); } else { - finish(); + super.onBackPressed(); } } diff --git a/src/com/fsck/k9/activity/setup/AccountSettings.java b/src/com/fsck/k9/activity/setup/AccountSettings.java index 9ca88f15d..762066907 100644 --- a/src/com/fsck/k9/activity/setup/AccountSettings.java +++ b/src/com/fsck/k9/activity/setup/AccountSettings.java @@ -9,7 +9,6 @@ import android.os.Bundle; import android.os.Vibrator; import android.preference.*; import android.util.Log; -import android.view.KeyEvent; import java.util.Iterator; import java.util.Map; @@ -809,11 +808,9 @@ public class AccountSettings extends K9PreferenceActivity { } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - saveSettings(); - } - return super.onKeyDown(keyCode, event); + public void onBackPressed() { + saveSettings(); + super.onBackPressed(); } private void onCompositionSettings() { diff --git a/src/com/fsck/k9/activity/setup/AccountSetupComposition.java b/src/com/fsck/k9/activity/setup/AccountSetupComposition.java index f0bed3220..47815eac8 100644 --- a/src/com/fsck/k9/activity/setup/AccountSetupComposition.java +++ b/src/com/fsck/k9/activity/setup/AccountSetupComposition.java @@ -3,7 +3,6 @@ package com.fsck.k9.activity.setup; import android.app.Activity; import android.content.Intent; import android.os.Bundle; -import android.view.KeyEvent; import android.view.View; import android.widget.CompoundButton; import android.widget.CheckBox; @@ -121,11 +120,9 @@ public class AccountSetupComposition extends K9Activity { } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - saveSettings(); - } - return super.onKeyDown(keyCode, event); + public void onBackPressed() { + saveSettings(); + super.onBackPressed(); } @Override diff --git a/src/com/fsck/k9/activity/setup/FolderSettings.java b/src/com/fsck/k9/activity/setup/FolderSettings.java index a461fd083..1dabbf0c4 100644 --- a/src/com/fsck/k9/activity/setup/FolderSettings.java +++ b/src/com/fsck/k9/activity/setup/FolderSettings.java @@ -8,7 +8,6 @@ import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.util.Log; -import android.view.KeyEvent; import com.fsck.k9.*; import com.fsck.k9.activity.K9PreferenceActivity; import com.fsck.k9.mail.Folder.FolderClass; @@ -151,16 +150,13 @@ public class FolderSettings extends K9PreferenceActivity { } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - try { - saveSettings(); - } catch (MessagingException e) { - Log.e(K9.LOG_TAG, "Saving folder settings failed", e); - } + public void onBackPressed() { + try { + saveSettings(); + } catch (MessagingException e) { + Log.e(K9.LOG_TAG, "Saving folder settings failed", e); } - return super.onKeyDown(keyCode, event); + + super.onBackPressed(); } - - } diff --git a/src/com/fsck/k9/activity/setup/FontSizeSettings.java b/src/com/fsck/k9/activity/setup/FontSizeSettings.java index b51f2da99..8760d107c 100644 --- a/src/com/fsck/k9/activity/setup/FontSizeSettings.java +++ b/src/com/fsck/k9/activity/setup/FontSizeSettings.java @@ -7,7 +7,6 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.preference.*; -import android.view.KeyEvent; import com.fsck.k9.*; import com.fsck.k9.activity.K9PreferenceActivity; @@ -160,10 +159,8 @@ public class FontSizeSettings extends K9PreferenceActivity { } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - saveSettings(); - } - return super.onKeyDown(keyCode, event); + public void onBackPressed() { + saveSettings(); + super.onBackPressed(); } } diff --git a/src/com/fsck/k9/activity/setup/Prefs.java b/src/com/fsck/k9/activity/setup/Prefs.java index 86baa13fd..0164979b2 100644 --- a/src/com/fsck/k9/activity/setup/Prefs.java +++ b/src/com/fsck/k9/activity/setup/Prefs.java @@ -17,7 +17,6 @@ import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; -import android.view.KeyEvent; import android.widget.Toast; import com.fsck.k9.K9; @@ -401,16 +400,15 @@ public class Prefs extends K9PreferenceActivity { } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - saveSettings(); - if (K9.manageBack()) { - Accounts.listAccounts(this); - finish(); - return true; - } + public void onBackPressed() { + saveSettings(); + + if (K9.manageBack()) { + Accounts.listAccounts(this); + finish(); + } else { + super.onBackPressed(); } - return super.onKeyDown(keyCode, event); } private void onFontSizeSettings() { From 07fa0c7264ae8fe33a7a277a583b23ef73400e32 Mon Sep 17 00:00:00 2001 From: cketti Date: Thu, 10 Nov 2011 05:39:04 +0100 Subject: [PATCH 10/39] Use Build.VERSION.SDK_INT instead of parsing Build.VERSION.SDK --- src/com/fsck/k9/activity/setup/Prefs.java | 2 +- src/com/fsck/k9/helper/Contacts.java | 4 +--- src/com/fsck/k9/view/MessageWebView.java | 4 +--- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/com/fsck/k9/activity/setup/Prefs.java b/src/com/fsck/k9/activity/setup/Prefs.java index 0164979b2..328e3dbed 100644 --- a/src/com/fsck/k9/activity/setup/Prefs.java +++ b/src/com/fsck/k9/activity/setup/Prefs.java @@ -265,7 +265,7 @@ public class Prefs extends K9PreferenceActivity { mZoomControlsEnabled.setChecked(K9.zoomControlsEnabled()); mMobileOptimizedLayout = (CheckBoxPreference) findPreference(PREFERENCE_MESSAGEVIEW_MOBILE_LAYOUT); - if (Integer.parseInt(Build.VERSION.SDK) <= 7) { + if (Build.VERSION.SDK_INT <= 7) { mMobileOptimizedLayout.setEnabled(false); } diff --git a/src/com/fsck/k9/helper/Contacts.java b/src/com/fsck/k9/helper/Contacts.java index 355f61d22..7be312c22 100644 --- a/src/com/fsck/k9/helper/Contacts.java +++ b/src/com/fsck/k9/helper/Contacts.java @@ -40,10 +40,8 @@ public abstract class Contacts { * Check the version of the SDK we are running on. Choose an * implementation class designed for that version of the SDK. */ - int sdkVersion = Integer.parseInt(Build.VERSION.SDK); - String className = null; - if (sdkVersion <= Build.VERSION_CODES.ECLAIR_MR1) { + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ECLAIR_MR1) { /* * The new API was introduced with SDK 5. But Android versions < 2.2 * need some additional code to be able to search for phonetic names. diff --git a/src/com/fsck/k9/view/MessageWebView.java b/src/com/fsck/k9/view/MessageWebView.java index 4d22c07d6..daf53b993 100644 --- a/src/com/fsck/k9/view/MessageWebView.java +++ b/src/com/fsck/k9/view/MessageWebView.java @@ -91,9 +91,7 @@ public class MessageWebView extends WebView { // SINGLE_COLUMN layout was broken on Android < 2.2, so we // administratively disable it - if ( - (Integer.parseInt(Build.VERSION.SDK) > 7) - && K9.mobileOptimizedLayout()) { + if (Build.VERSION.SDK_INT > 7 && K9.mobileOptimizedLayout()) { webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); } else { webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); From 8c8b3eea9ed117998079d38824c892356d703514 Mon Sep 17 00:00:00 2001 From: cketti Date: Thu, 10 Nov 2011 05:44:30 +0100 Subject: [PATCH 11/39] Use Intent.ACTION_SEND_MULTIPLE instead of string constant --- src/com/fsck/k9/activity/MessageCompose.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/com/fsck/k9/activity/MessageCompose.java b/src/com/fsck/k9/activity/MessageCompose.java index d6e4e546f..8ac87ae0f 100644 --- a/src/com/fsck/k9/activity/MessageCompose.java +++ b/src/com/fsck/k9/activity/MessageCompose.java @@ -662,9 +662,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc * it wrong! So go fix your program or get AOSP to change the documentation. */ } - //TODO: Use constant Intent.ACTION_SEND_MULTIPLE once we drop Android 1.5 support - else if (Intent.ACTION_SEND.equals(action) || - "android.intent.action.SEND_MULTIPLE".equals(action)) { + else if (Intent.ACTION_SEND.equals(action) || Intent.ACTION_SEND_MULTIPLE.equals(action)) { /* * Note: Here we allow a slight deviation from the documentated behavior. * EXTRA_TEXT is used as message body (if available) regardless of the MIME From be70120ee556528a5ecd1eab384cc0f21accb3d5 Mon Sep 17 00:00:00 2001 From: cketti Date: Thu, 10 Nov 2011 06:36:14 +0100 Subject: [PATCH 12/39] Use Service.onStartCommand() instead of deprecated Service.onStart() --- src/com/fsck/k9/service/CoreService.java | 21 ++++++++++++------- src/com/fsck/k9/service/MailService.java | 4 +++- src/com/fsck/k9/service/PollService.java | 3 ++- src/com/fsck/k9/service/PushService.java | 5 ++++- .../fsck/k9/service/RemoteControlService.java | 4 +++- src/com/fsck/k9/service/SleepService.java | 3 ++- 6 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/com/fsck/k9/service/CoreService.java b/src/com/fsck/k9/service/CoreService.java index bb7acee57..5f7c1f26f 100644 --- a/src/com/fsck/k9/service/CoreService.java +++ b/src/com/fsck/k9/service/CoreService.java @@ -199,9 +199,7 @@ public abstract class CoreService extends Service { } @Override - public final void onStart(Intent intent, int startId) { - // deprecated method but still used for backwards compatibility with Android version <2.0 - + public final int onStartCommand(Intent intent, int flags, int startId) { /* * When a process is killed due to low memory, it's later restarted and services that were * started with START_STICKY are started with the intent being null. @@ -213,7 +211,7 @@ public abstract class CoreService extends Service { */ if (intent == null) { stopSelf(startId); - return; + return START_NOT_STICKY; } // Acquire new wake lock @@ -253,9 +251,9 @@ public abstract class CoreService extends Service { // Run the actual start-code of the service mImmediateShutdown = true; + int startFlag; try { - super.onStart(intent, startId); - startService(intent, startId); + startFlag = startService(intent, startId); } finally { try { // Release the wake lock acquired at the start of this method @@ -267,9 +265,12 @@ public abstract class CoreService extends Service { // this service. if (mAutoShutdown && mImmediateShutdown && startId != -1) { stopSelf(startId); + startFlag = START_NOT_STICKY; } } catch (Exception e) { /* ignore */ } } + + return startFlag; } /** @@ -371,7 +372,7 @@ public abstract class CoreService extends Service { } /** - * Subclasses need to implement this instead of overriding {@link #onStart(Intent, int)}. + * Subclasses need to implement this instead of overriding {@link #onStartCommand(Intent, int, int)}. * *

* This allows {@link CoreService} to manage the service lifecycle, incl. wake lock management. @@ -382,8 +383,12 @@ public abstract class CoreService extends Service { * @param startId * A unique integer representing this specific request to start. Use with * {@link #stopSelfResult(int)}. + * + * @return The return value indicates what semantics the system should use for the service's + * current started state. It may be one of the constants associated with the + * {@link Service#START_CONTINUATION_MASK} bits. */ - public abstract void startService(Intent intent, int startId); + public abstract int startService(Intent intent, int startId); @Override public void onLowMemory() { diff --git a/src/com/fsck/k9/service/MailService.java b/src/com/fsck/k9/service/MailService.java index 3d8dac3b7..289b5eb2e 100644 --- a/src/com/fsck/k9/service/MailService.java +++ b/src/com/fsck/k9/service/MailService.java @@ -84,7 +84,7 @@ public class MailService extends CoreService { } @Override - public void startService(Intent intent, int startId) { + public int startService(Intent intent, int startId) { long startTime = System.currentTimeMillis(); boolean oldIsSyncDisabled = isSyncDisabled(); ConnectivityManager connectivityManager = (ConnectivityManager)getApplication().getSystemService(Context.CONNECTIVITY_SERVICE); @@ -165,6 +165,8 @@ public class MailService extends CoreService { if (K9.DEBUG) Log.i(K9.LOG_TAG, "MailService.onStart took " + (System.currentTimeMillis() - startTime) + "ms"); + + return START_NOT_STICKY; } @Override diff --git a/src/com/fsck/k9/service/PollService.java b/src/com/fsck/k9/service/PollService.java index e7e471c30..f24f761de 100644 --- a/src/com/fsck/k9/service/PollService.java +++ b/src/com/fsck/k9/service/PollService.java @@ -42,7 +42,7 @@ public class PollService extends CoreService { } @Override - public void startService(Intent intent, int startId) { + public int startService(Intent intent, int startId) { if (START_SERVICE.equals(intent.getAction())) { if (K9.DEBUG) Log.i(K9.LOG_TAG, "PollService started with startId = " + startId); @@ -68,6 +68,7 @@ public class PollService extends CoreService { stopSelf(); } + return START_NOT_STICKY; } @Override diff --git a/src/com/fsck/k9/service/PushService.java b/src/com/fsck/k9/service/PushService.java index 6be36629a..19de1ecf0 100644 --- a/src/com/fsck/k9/service/PushService.java +++ b/src/com/fsck/k9/service/PushService.java @@ -27,7 +27,8 @@ public class PushService extends CoreService { } @Override - public void startService(Intent intent, int startId) { + public int startService(Intent intent, int startId) { + int startFlag = START_STICKY; if (START_SERVICE.equals(intent.getAction())) { if (K9.DEBUG) Log.i(K9.LOG_TAG, "PushService started with startId = " + startId); @@ -35,8 +36,10 @@ public class PushService extends CoreService { if (K9.DEBUG) Log.i(K9.LOG_TAG, "PushService stopping with startId = " + startId); stopSelf(startId); + startFlag = START_NOT_STICKY; } + return startFlag; } @Override diff --git a/src/com/fsck/k9/service/RemoteControlService.java b/src/com/fsck/k9/service/RemoteControlService.java index 45d1885f5..3cfa52a74 100644 --- a/src/com/fsck/k9/service/RemoteControlService.java +++ b/src/com/fsck/k9/service/RemoteControlService.java @@ -34,7 +34,7 @@ public class RemoteControlService extends CoreService { public static final int REMOTE_CONTROL_SERVICE_WAKE_LOCK_TIMEOUT = 20000; @Override - public void startService(final Intent intent, final int startId) { + public int startService(final Intent intent, final int startId) { if (K9.DEBUG) Log.i(K9.LOG_TAG, "RemoteControlService started with startId = " + startId); final Preferences preferences = Preferences.getPreferences(this); @@ -155,6 +155,8 @@ public class RemoteControlService extends CoreService { } , RemoteControlService.REMOTE_CONTROL_SERVICE_WAKE_LOCK_TIMEOUT, startId); } + + return START_NOT_STICKY; } } diff --git a/src/com/fsck/k9/service/SleepService.java b/src/com/fsck/k9/service/SleepService.java index 1f365454d..07807d737 100644 --- a/src/com/fsck/k9/service/SleepService.java +++ b/src/com/fsck/k9/service/SleepService.java @@ -113,12 +113,13 @@ public class SleepService extends CoreService { } @Override - public void startService(Intent intent, int startId) { + public int startService(Intent intent, int startId) { try { if (intent.getAction().startsWith(ALARM_FIRED)) { Integer id = intent.getIntExtra(LATCH_ID, -1); endSleep(id); } + return START_NOT_STICKY; } finally { stopSelf(startId); From 1012ad56dddb45ee080c2f864d7a7b8f2100719e Mon Sep 17 00:00:00 2001 From: ashley willis Date: Mon, 14 Nov 2011 13:16:19 -0800 Subject: [PATCH 13/39] Merge ashleywillis' changes in https://github.com/k9mail/k-9/pull/96 --- .../k9/activity/InsertableHtmlContent.java | 314 +++++++++--------- src/com/fsck/k9/activity/MessageCompose.java | 201 ++++++++--- 2 files changed, 322 insertions(+), 193 deletions(-) diff --git a/src/com/fsck/k9/activity/InsertableHtmlContent.java b/src/com/fsck/k9/activity/InsertableHtmlContent.java index 168b90b71..ab413e19d 100644 --- a/src/com/fsck/k9/activity/InsertableHtmlContent.java +++ b/src/com/fsck/k9/activity/InsertableHtmlContent.java @@ -1,153 +1,161 @@ -package com.fsck.k9.activity; - -import java.io.Serializable; - -/** - *

Represents an HTML document with an insertion point for placing a reply. The quoted - * document may have been modified to make it suitable for insertion. The modified quoted - * document should be used in place of the original document.

- * - *

Changes to the user-generated inserted content should be done with {@link - * #setUserContent(String)}.

- * - * TODO: This container should also have a text part, along with its insertion point. Or maybe a generic InsertableContent and maintain one each for Html and Text? - */ -class InsertableHtmlContent implements Serializable { - private static final long serialVersionUID = 2397327034L; - // Default to a headerInsertionPoint at the beginning of the message. - private int headerInsertionPoint = 0; - private int footerInsertionPoint = 0; - // Quoted message, if any. headerInsertionPoint refers to a position in this string. - private StringBuilder quotedContent = new StringBuilder(); - // User content (typically their reply or comments on a forward) - private StringBuilder userContent = new StringBuilder(); - // Where to insert the content. Default to top posting. - private InsertionLocation insertionLocation = InsertionLocation.BEFORE_QUOTE; - - /** - * Defines where user content should be inserted, either before or after quoted content. - */ - public enum InsertionLocation { - BEFORE_QUOTE, AFTER_QUOTE - } - - public void setHeaderInsertionPoint(int headerInsertionPoint) { - this.headerInsertionPoint = headerInsertionPoint; - } - - public void setFooterInsertionPoint(int footerInsertionPoint) { - this.footerInsertionPoint = footerInsertionPoint; - } - - /** - * Get the quoted content. - * @return Quoted content. - */ - public String getQuotedContent() { - return quotedContent.toString(); - } - - /** - * Set the quoted content. The insertion point should be set against this content. - * @param content - */ - public void setQuotedContent(StringBuilder content) { - this.quotedContent = content; - } - - /** - *

Insert something into the quoted content header. This is typically used for inserting - * reply/forward headers into the quoted content rather than inserting the user-generated reply - * content.

- * - *

Subsequent calls to {@link #insertIntoQuotedHeader(String)} will prepend text onto any - * existing header and quoted content.

- * @param content Content to add. - */ - public void insertIntoQuotedHeader(final String content) { - quotedContent.insert(headerInsertionPoint, content); - // Update the location of the footer insertion point. - footerInsertionPoint += content.length(); - } - - /** - *

Insert something into the quoted content footer. This is typically used for inserting closing - * tags of reply/forward headers rather than inserting the user-generated reply content.

- * - *

Subsequent calls to {@link #insertIntoQuotedFooter(String)} will append text onto any - * existing footer and quoted content.

- * @param content Content to add. - */ - public void insertIntoQuotedFooter(final String content) { - quotedContent.insert(footerInsertionPoint, content); - // Update the location of the footer insertion point to the end of the inserted content. - footerInsertionPoint += content.length(); - } - - /** - * Remove all quoted content. - */ - public void clearQuotedContent() { - quotedContent.setLength(0); - footerInsertionPoint = 0; - headerInsertionPoint = 0; - } - - /** - * Set the inserted content to the specified content. Replaces anything currently in the - * inserted content buffer. - * @param content - */ - public void setUserContent(final String content) { - userContent = new StringBuilder(content); - } - - /** - * Configure where user content should be inserted, either before or after the quoted content. - * @param insertionLocation Where to insert user content. - */ - public void setInsertionLocation(final InsertionLocation insertionLocation) { - this.insertionLocation = insertionLocation; - } - - /** - * Fetch the insertion point based upon the quote style. - * @return Insertion point - */ - public int getInsertionPoint() { - if (insertionLocation == InsertionLocation.BEFORE_QUOTE) { - return headerInsertionPoint; - } else { - return footerInsertionPoint; - } - } - - /** - * Build the composed string with the inserted and original content. - * @return Composed string. - */ - @Override - public String toString() { - final int insertionPoint = getInsertionPoint(); - // Inserting and deleting was twice as fast as instantiating a new StringBuilder and - // using substring() to build the new pieces. - String result = quotedContent.insert(insertionPoint, userContent.toString()).toString(); - quotedContent.delete(insertionPoint, insertionPoint + userContent.length()); - return result; - } - - /** - * Return debugging information for this container. - * @return Debug string. - */ - public String toDebugString() { - return "InsertableHtmlContent{" + - "headerInsertionPoint=" + headerInsertionPoint + - ", footerInsertionPoint=" + footerInsertionPoint + - ", insertionLocation=" + insertionLocation + - ", quotedContent=" + quotedContent + - ", userContent=" + userContent + - ", compiledResult=" + toString() + - '}'; - } -} +package com.fsck.k9.activity; + +import java.io.Serializable; + +/** + *

Represents an HTML document with an insertion point for placing a reply. The quoted + * document may have been modified to make it suitable for insertion. The modified quoted + * document should be used in place of the original document.

+ * + *

Changes to the user-generated inserted content should be done with {@link + * #setUserContent(String)}.

+ * + * TODO: This container should also have a text part, along with its insertion point. Or maybe a generic InsertableContent and maintain one each for Html and Text? + */ +class InsertableHtmlContent implements Serializable { + private static final long serialVersionUID = 2397327034L; + // Default to a headerInsertionPoint at the beginning of the message. + private int headerInsertionPoint = 0; + private int footerInsertionPoint = 0; + // Quoted message, if any. headerInsertionPoint refers to a position in this string. + private StringBuilder quotedContent = new StringBuilder(); + // User content (typically their reply or comments on a forward) + private StringBuilder userContent = new StringBuilder(); + // Where to insert the content. Default to top posting. + private InsertionLocation insertionLocation = InsertionLocation.BEFORE_QUOTE; + + /** + * Defines where user content should be inserted, either before or after quoted content. + */ + public enum InsertionLocation { + BEFORE_QUOTE, AFTER_QUOTE + } + + public void setHeaderInsertionPoint(int headerInsertionPoint) { + this.headerInsertionPoint = headerInsertionPoint; + } + + public void setFooterInsertionPoint(int footerInsertionPoint) { + this.footerInsertionPoint = footerInsertionPoint; + } + + /** + * Get the quoted content. + * @return Quoted content. + */ + public String getQuotedContent() { + return quotedContent.toString(); + } + + /** + * Set the quoted content. The insertion point should be set against this content. + * @param content + */ + public void setQuotedContent(StringBuilder content) { + this.quotedContent = content; + } + + /** + *

Insert something into the quoted content header. This is typically used for inserting + * reply/forward headers into the quoted content rather than inserting the user-generated reply + * content.

+ * + *

Subsequent calls to {@link #insertIntoQuotedHeader(String)} will prepend text onto any + * existing header and quoted content.

+ * @param content Content to add. + */ + public void insertIntoQuotedHeader(final String content) { + quotedContent.insert(headerInsertionPoint, content); + // Update the location of the footer insertion point. + footerInsertionPoint += content.length(); + } + + /** + *

Insert something into the quoted content footer. This is typically used for inserting closing + * tags of reply/forward headers rather than inserting the user-generated reply content.

+ * + *

Subsequent calls to {@link #insertIntoQuotedFooter(String)} will append text onto any + * existing footer and quoted content.

+ * @param content Content to add. + */ + public void insertIntoQuotedFooter(final String content) { + quotedContent.insert(footerInsertionPoint, content); + // Update the location of the footer insertion point to the end of the inserted content. + footerInsertionPoint += content.length(); + } + + /** + * Remove all quoted content. + */ + public void clearQuotedContent() { + quotedContent.setLength(0); + footerInsertionPoint = 0; + headerInsertionPoint = 0; + } + + /** + * Set the inserted content to the specified content. Replaces anything currently in the + * inserted content buffer. + * @param content + */ + public void setUserContent(final String content) { + userContent = new StringBuilder(content); + } + + /** + * Configure where user content should be inserted, either before or after the quoted content. + * @param insertionLocation Where to insert user content. + */ + public void setInsertionLocation(final InsertionLocation insertionLocation) { + this.insertionLocation = insertionLocation; + } + + /** + * Fetch the insertion point based upon the quote style. + * @return Insertion point + */ + public int getInsertionPoint() { + if (insertionLocation == InsertionLocation.BEFORE_QUOTE) { + return headerInsertionPoint; + } else { + return footerInsertionPoint; + } + } + + /** + * Get the footer insertion point. + * @return Footer insertion point + */ + public int getFooterInsertionPoint() { + return footerInsertionPoint; + } + + /** + * Build the composed string with the inserted and original content. + * @return Composed string. + */ + @Override + public String toString() { + final int insertionPoint = getInsertionPoint(); + // Inserting and deleting was twice as fast as instantiating a new StringBuilder and + // using substring() to build the new pieces. + String result = quotedContent.insert(insertionPoint, userContent.toString()).toString(); + quotedContent.delete(insertionPoint, insertionPoint + userContent.length()); + return result; + } + + /** + * Return debugging information for this container. + * @return Debug string. + */ + public String toDebugString() { + return "InsertableHtmlContent{" + + "headerInsertionPoint=" + headerInsertionPoint + + ", footerInsertionPoint=" + footerInsertionPoint + + ", insertionLocation=" + insertionLocation + + ", quotedContent=" + quotedContent + + ", userContent=" + userContent + + ", compiledResult=" + toString() + + '}'; + } +} diff --git a/src/com/fsck/k9/activity/MessageCompose.java b/src/com/fsck/k9/activity/MessageCompose.java index 3a282a947..243ffd865 100644 --- a/src/com/fsck/k9/activity/MessageCompose.java +++ b/src/com/fsck/k9/activity/MessageCompose.java @@ -207,6 +207,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc private boolean mSourceProcessed = false; private MessageFormat mMessageFormat; + private QuoteStyle mQuoteStyle; private boolean mDraftNeedsSaving = false; private boolean mPreventDraftSaving = false; @@ -534,6 +535,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc mMessageFormat = mAccount.getMessageFormat(); mReadReceipt = mAccount.isMessageReadReceiptAlways(); + mQuoteStyle = mAccount.getQuoteStyle(); if (!mSourceMessageProcessed) { updateFrom(); @@ -907,6 +909,17 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc * @param isDraft If we should build a message that will be saved as a draft (as opposed to sent). */ private TextBody buildText(boolean isDraft) { + return buildText(isDraft, mMessageFormat); + } + + /* + * Build the Body that will contain the text of the message. We'll decide where to + * include it later. Draft messages are treated somewhat differently in that signatures are not + * appended and HTML separators between composed text and quoted text are not added. + * @param isDraft If we should build a message that will be saved as a draft (as opposed to sent). + * @param messageFormat Set MessageFormat to build. + */ + private TextBody buildText(boolean isDraft, MessageFormat messageFormat) { boolean replyAfterQuote = false; String action = getIntent().getAction(); if (mAccount.isReplyAfterQuote() && @@ -926,10 +939,13 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc // Handle HTML separate from the rest of the text content. HTML mode doesn't allow signature after the quoted // text, nor does it allow reply after quote. Users who want that functionality will need to stick with text // mode. - if (mMessageFormat == MessageFormat.HTML) { - // Add the signature. + if (messageFormat == MessageFormat.HTML) { + // Place the signature immediately after the reply. if (!isDraft) { - text = appendSignature(text); + if (mQuoteStyle == QuoteStyle.HEADER || replyAfterQuote || mAccount.isSignatureBeforeQuotedText()) { + Log.d("ASH", "appending signature after new content"); + text = appendSignature(text); + } } text = HtmlConverter.textToHtmlFragment(text); // Insert it into the existing content object. @@ -943,7 +959,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc // location. We only add the extra separators when we're sending, that way when we // load a draft, we don't have to know the length of the separators to remove them // before editing. - if (mAccount.getQuoteStyle() == QuoteStyle.PREFIX && replyAfterQuote) { + if (mQuoteStyle == QuoteStyle.PREFIX && replyAfterQuote) { mQuotedHtmlContent.setInsertionLocation(InsertableHtmlContent.InsertionLocation.AFTER_QUOTE); if (!isDraft) { text = "
" + text; @@ -955,6 +971,13 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc } } + // Place signature immediately after quote. + if (!isDraft) { + if (mQuoteStyle == QuoteStyle.PREFIX && !replyAfterQuote && !mAccount.isSignatureBeforeQuotedText()) { + mQuotedHtmlContent.insertIntoQuotedFooter(getSignatureHtml()); + } + } + mQuotedHtmlContent.setUserContent(text); // All done. Build the body. @@ -970,20 +993,21 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc body.setComposedMessageOffset(0); return body; } - } else if (mMessageFormat == MessageFormat.TEXT) { + } else if (messageFormat == MessageFormat.TEXT) { // Capture composed message length before we start attaching quoted parts and signatures. Integer composedMessageLength = text.length(); Integer composedMessageOffset = 0; // Placing the signature before the quoted text does not make sense if replyAfterQuote is true. if (!isDraft) { - if (!replyAfterQuote && mAccount.isSignatureBeforeQuotedText()) { + if (mQuoteStyle == QuoteStyle.HEADER || + (!replyAfterQuote && mAccount.isSignatureBeforeQuotedText())) { text = appendSignature(text); } } if (saveQuotedText) { - if (replyAfterQuote) { + if (mQuoteStyle == QuoteStyle.PREFIX && replyAfterQuote) { composedMessageOffset = mQuotedText.getText().toString().length() + "\n".length(); text = mQuotedText.getText().toString() + "\n" + text; } else { @@ -994,7 +1018,8 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc // Note: If user has selected reply after quote AND signature before quote, ignore the // latter setting and append the signature at the end. if (!isDraft) { - if (replyAfterQuote || !mAccount.isSignatureBeforeQuotedText()) { + if (mQuoteStyle == QuoteStyle.PREFIX && + (replyAfterQuote || !mAccount.isSignatureBeforeQuotedText())) { text = appendSignature(text); } } @@ -1002,7 +1027,6 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc TextBody body = new TextBody(text); body.setComposedMessageLength(composedMessageLength); body.setComposedMessageOffset(composedMessageOffset); - return body; } else { // Shouldn't happen. @@ -1048,7 +1072,8 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc } // Build the body. - // TODO FIXME - body can be either an HTML or Text part, depending on whether we're in HTML mode or not. Should probably fix this so we don't mix up html and text parts. + // TODO FIXME - body can be either an HTML or Text part, depending on whether we're in + // HTML mode or not. Should probably fix this so we don't mix up html and text parts. TextBody body = null; if (mPgpData.getEncryptedData() != null) { String text = mPgpData.getEncryptedData(); @@ -1057,6 +1082,9 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc body = buildText(isDraft); } + // text/plain part when mMessageFormat == MessageFormat.HTML + TextBody bodyPlain = null; + final boolean hasAttachments = mAttachments.getChildCount() > 0; if (mMessageFormat == MessageFormat.HTML) { @@ -1066,7 +1094,8 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc MimeMultipart composedMimeMessage = new MimeMultipart(); composedMimeMessage.setSubType("alternative"); // Let the receiver select either the text or the HTML part. composedMimeMessage.addBodyPart(new MimeBodyPart(body, "text/html")); - composedMimeMessage.addBodyPart(new MimeBodyPart(new TextBody(HtmlConverter.htmlToText(body.getText())), "text/plain")); + bodyPlain = buildText(isDraft, MessageFormat.TEXT); + composedMimeMessage.addBodyPart(new MimeBodyPart(bodyPlain, "text/plain")); if (hasAttachments) { // If we're HTML and have attachments, we have a MimeMultipart container to hold the @@ -1097,7 +1126,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc // If this is a draft, add metadata for thawing. if (isDraft) { // Add the identity to the message. - message.addHeader(K9.IDENTITY_HEADER, buildIdentityHeader(body)); + message.addHeader(K9.IDENTITY_HEADER, buildIdentityHeader(body, bodyPlain)); } return message; @@ -1155,6 +1184,9 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc private enum IdentityField { LENGTH("l"), OFFSET("o"), + FOOTER_OFFSET("fo"), + PLAIN_LENGTH("pl"), + PLAIN_OFFSET("po"), MESSAGE_FORMAT("f"), MESSAGE_READ_RECEIPT("r"), SIGNATURE("s"), @@ -1163,7 +1195,8 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc // TODO - store a reference to the message being replied so we can mark it at the time of send. ORIGINAL_MESSAGE("m"), CURSOR_POSITION("p"), // Where in the message your cursor was when you saved. - QUOTED_TEXT_MODE("q"); + QUOTED_TEXT_MODE("q"), + QUOTE_STYLE("qs"); private final String value; @@ -1181,7 +1214,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc * @return */ public static IdentityField[] getIntegerFields() { - return new IdentityField[] { LENGTH, OFFSET }; + return new IdentityField[] { LENGTH, OFFSET, FOOTER_OFFSET, PLAIN_LENGTH, PLAIN_OFFSET }; } } @@ -1199,6 +1232,20 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc * @return Identity string. */ private String buildIdentityHeader(final TextBody body) { + return buildIdentityHeader(body, null); + } + + /** + * Build the identity header string. This string contains metadata about a draft message to be + * used upon loading a draft for composition. This should be generated at the time of saving a + * draft.
+ *
+ * This is a URL-encoded key/value pair string. The list of possible values are in {@link IdentityField}. + * @param body {@link TextBody} to analyze for body length and offset. + * @param bodyPlain {@link TextBody} to analyze for body length and offset. May be null. + * @return Identity string. + */ + private String buildIdentityHeader(final TextBody body, final TextBody bodyPlain) { Uri.Builder uri = new Uri.Builder(); if (body.getComposedMessageLength() != null && body.getComposedMessageOffset() != null) { // See if the message body length is already in the TextBody. @@ -1209,6 +1256,24 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc uri.appendQueryParameter(IdentityField.LENGTH.value(), Integer.toString(body.getText().length())); uri.appendQueryParameter(IdentityField.OFFSET.value(), Integer.toString(0)); } + if (mQuotedHtmlContent != null) { + uri.appendQueryParameter(IdentityField.FOOTER_OFFSET.value(), + Integer.toString(mQuotedHtmlContent.getFooterInsertionPoint())); + } + if (bodyPlain != null) { + if (bodyPlain.getComposedMessageLength() != null && bodyPlain.getComposedMessageOffset() != null) { + // See if the message body length is already in the TextBody. + uri.appendQueryParameter(IdentityField.PLAIN_LENGTH.value(), bodyPlain.getComposedMessageLength().toString()); + uri.appendQueryParameter(IdentityField.PLAIN_OFFSET.value(), bodyPlain.getComposedMessageOffset().toString()); + } else { + // If not, calculate it now. + uri.appendQueryParameter(IdentityField.PLAIN_LENGTH.value(), Integer.toString(body.getText().length())); + uri.appendQueryParameter(IdentityField.PLAIN_OFFSET.value(), Integer.toString(0)); + } + } + // Save the quote style (useful for forwards). + uri.appendQueryParameter(IdentityField.QUOTE_STYLE.value(), mQuoteStyle.name()); + // Save the message format for this offset. uri.appendQueryParameter(IdentityField.MESSAGE_FORMAT.value(), mMessageFormat.name()); @@ -1325,6 +1390,16 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc return text; } + private String getSignatureHtml() { + String signature = ""; + if (mIdentity.getSignatureUse()) { + signature = mSignatureView.getText().toString(); + if (signature != null && !signature.contentEquals("")) { + signature = HtmlConverter.textToHtmlFragment("\n" + signature); + } + } + return signature; + } private void sendMessage() { new SendMessageTask().execute(); @@ -2034,6 +2109,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc } else { mSubjectView.setText(subject); } + mQuoteStyle = QuoteStyle.HEADER; // Quote the message and setup the UI. populateUIWithQuotedMessage(true); @@ -2146,6 +2222,19 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc Integer bodyOffset = k9identity.get(IdentityField.OFFSET) != null ? Integer.parseInt(k9identity.get(IdentityField.OFFSET)) : 0; + Integer bodyFooterOffset = k9identity.get(IdentityField.FOOTER_OFFSET) != null + ? Integer.parseInt(k9identity.get(IdentityField.FOOTER_OFFSET)) + : null; + Integer bodyPlainLength = k9identity.get(IdentityField.PLAIN_LENGTH) != null + ? Integer.parseInt(k9identity.get(IdentityField.PLAIN_LENGTH)) + : null; + Integer bodyPlainOffset = k9identity.get(IdentityField.PLAIN_OFFSET) != null + ? Integer.parseInt(k9identity.get(IdentityField.PLAIN_OFFSET)) + : null; + mQuoteStyle = k9identity.get(IdentityField.QUOTE_STYLE) != null + ? QuoteStyle.valueOf(k9identity.get(IdentityField.QUOTE_STYLE)) + : mAccount.getQuoteStyle(); + // Always respect the user's current composition format preference, even if the // draft was saved in a different format. // TODO - The current implementation doesn't allow a user in HTML mode to edit a draft that wasn't saved with K9mail. @@ -2185,34 +2274,19 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc mQuotedHtmlContent.setQuotedContent(quotedHTML); // We don't know if bodyOffset refers to the header or to the footer mQuotedHtmlContent.setHeaderInsertionPoint(bodyOffset); - mQuotedHtmlContent.setFooterInsertionPoint(bodyOffset); + if (bodyFooterOffset != null) { + mQuotedHtmlContent.setFooterInsertionPoint(bodyFooterOffset); + } else { + mQuotedHtmlContent.setFooterInsertionPoint(bodyOffset); + } mQuotedHTML.loadDataWithBaseURL("http://", mQuotedHtmlContent.getQuotedContent(), "text/html", "utf-8", null); } } - } else if (mMessageFormat == MessageFormat.TEXT) { - Part textPart = MimeUtility.findFirstPartByMimeType(message, "text/plain"); - if (textPart != null) { - String text = MimeUtility.getTextFromPart(textPart); - if (K9.DEBUG) { - Log.d(K9.LOG_TAG, "Loading message with offset " + bodyOffset + ", length " + bodyLength + ". Text length is " + text.length() + "."); - } - - // If we had a body length (and it was valid), separate the composition from the quoted text - // and put them in their respective places in the UI. - if (bodyLength != null && bodyLength + 1 < text.length()) { // + 1 to get rid of the newline we added when saving the draft - String bodyText = text.substring(bodyOffset, bodyOffset + bodyLength); - - // Regenerate the quoted text without our user content in it. - StringBuilder quotedText = new StringBuilder(); - quotedText.append(text.substring(0, bodyOffset)); // stuff before the reply - quotedText.append(text.substring(bodyOffset + bodyLength)); - - mMessageContentView.setText(bodyText); - mQuotedText.setText(quotedText.toString()); - } else { - mMessageContentView.setText(text); - } + if (bodyPlainOffset != null && bodyPlainLength != null) { + processSourceMessageText(message, bodyPlainOffset, bodyPlainLength, false); } + } else if (mMessageFormat == MessageFormat.TEXT) { + processSourceMessageText(message, bodyOffset, bodyLength, true); } else { Log.e(K9.LOG_TAG, "Unhandled message format."); } @@ -2238,6 +2312,51 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc } } + /* + * Pull out the parts of the now loaded source message and apply them to the new message + * depending on the type of message being composed. + * @param message Source message + * @param bodyOffset Insertion point for reply. + * @param bodyLength Length of reply. + * @param viewMessageContent Update mMessageContentView or not. + * @throws MessagingException + */ + private void processSourceMessageText(Message message, Integer bodyOffset, Integer bodyLength, + boolean viewMessageContent) throws MessagingException { + Part textPart = MimeUtility.findFirstPartByMimeType(message, "text/plain"); + if (textPart != null) { + String text = MimeUtility.getTextFromPart(textPart); + if (K9.DEBUG) { + Log.d(K9.LOG_TAG, "Loading message with offset " + bodyOffset + ", length " + bodyLength + ". Text length is " + text.length() + "."); + } + + // If we had a body length (and it was valid), separate the composition from the quoted text + // and put them in their respective places in the UI. + if (bodyLength != null && bodyLength + 1 < text.length()) { // + 1 to get rid of the newline we added when saving the draft + String bodyText = text.substring(bodyOffset, bodyOffset + bodyLength); + + // Regenerate the quoted text without our user content in it nor added newlines. + StringBuilder quotedText = new StringBuilder(); + if (bodyOffset == 0 && text.substring(bodyLength, bodyLength + 2).equals("\n\n")) { + // top-posting: ignore two newlines at start of quote + quotedText.append(text.substring(bodyLength + 2)); + } else if (bodyOffset + bodyLength == text.length() && + text.substring(bodyOffset - 1, bodyOffset).equals("\n")) { + // bottom-posting: ignore newline at end of quote + quotedText.append(text.substring(0, bodyOffset - 1)); + } else { + quotedText.append(text.substring(0, bodyOffset)); // stuff before the reply + quotedText.append(text.substring(bodyOffset + bodyLength)); + } + + if (viewMessageContent) mMessageContentView.setText(bodyText); + mQuotedText.setText(quotedText.toString()); + } else { + if (viewMessageContent) mMessageContentView.setText(text); + } + } + } + /** * Build and populate the UI with the quoted message. * @throws MessagingException @@ -2252,12 +2371,14 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc : getBodyTextFromMessage(mSourceMessage, mMessageFormat); if (mMessageFormat == MessageFormat.HTML) { // Add the HTML reply header to the top of the content. - mQuotedHtmlContent = quoteOriginalHtmlMessage(mSourceMessage, content, mAccount.getQuoteStyle()); + mQuotedHtmlContent = quoteOriginalHtmlMessage(mSourceMessage, content, mQuoteStyle); // Load the message with the reply header. mQuotedHTML.loadDataWithBaseURL("http://", mQuotedHtmlContent.getQuotedContent(), "text/html", "utf-8", null); + mQuotedText.setText(quoteOriginalTextMessage(mSourceMessage, + getBodyTextFromMessage(mSourceMessage, MessageFormat.TEXT), mQuoteStyle)); } else if (mMessageFormat == MessageFormat.TEXT) { - mQuotedText.setText(quoteOriginalTextMessage(mSourceMessage, content, mAccount.getQuoteStyle())); + mQuotedText.setText(quoteOriginalTextMessage(mSourceMessage, content, mQuoteStyle)); } if (shown) { From 37f480c9698884718e1e5e5ce0f6654319856814 Mon Sep 17 00:00:00 2001 From: ashley willis Date: Mon, 14 Nov 2011 13:58:01 -0800 Subject: [PATCH 14/39] Merge ashleywillis' changes in https://github.com/k9mail/k-9/pull/97. Option to strip signature from quoted text in replies. Strips signature from quoted text in replies (line of /^-- $/ or html equivalent, and everything below). Per account. --- Android.mk | 2 + HTMLCLEANER_LICENSE | 35 +++++++ k9mail.iml | 12 +++ libs/htmlcleaner-2.2-all.zip | Bin 0 -> 263136 bytes libs/htmlcleaner-2.2.jar | Bin 0 -> 107942 bytes res/values/strings.xml | 4 + res/xml/account_settings_preferences.xml | 7 ++ src/com/fsck/k9/Account.java | 14 +++ src/com/fsck/k9/activity/Accounts.java | 5 +- src/com/fsck/k9/activity/MessageCompose.java | 96 +++++++++++++++++- .../k9/activity/setup/AccountSettings.java | 6 ++ .../fsck/k9/preferences/AccountSettings.java | 1 + 12 files changed, 178 insertions(+), 4 deletions(-) create mode 100644 HTMLCLEANER_LICENSE create mode 100644 libs/htmlcleaner-2.2-all.zip create mode 100644 libs/htmlcleaner-2.2.jar diff --git a/Android.mk b/Android.mk index a17c75e68..7184bd38b 100644 --- a/Android.mk +++ b/Android.mk @@ -6,6 +6,7 @@ LOCAL_STATIC_JAVA_LIBRARIES += libdom LOCAL_STATIC_JAVA_LIBRARIES += libio LOCAL_STATIC_JAVA_LIBRARIES += libjutf LOCAL_STATIC_JAVA_LIBRARIES += libjzlib +LOCAL_STATIC_JAVA_LIBRARIES += libhtmlcleaner LOCAL_MODULE_TAGS := eng @@ -24,6 +25,7 @@ LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += libdom:libs/apache-mime4j-dom-0.7-SNAPSH LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += libio:libs/commons-io-2.0.1.jar LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += libjutf:libs/jutf7-1.0.1-SNAPSHOT.jar LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += libjzlib:libs/jzlib-1.0.7.jar +LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += libhtmlcleaner:libs/htmlcleaner-2.2.jar include $(BUILD_MULTI_PREBUILT) diff --git a/HTMLCLEANER_LICENSE b/HTMLCLEANER_LICENSE new file mode 100644 index 000000000..25c863f68 --- /dev/null +++ b/HTMLCLEANER_LICENSE @@ -0,0 +1,35 @@ +HtmlCleaner is distributed under BSD License. It gives the freedom for +anyone to use, explore, modify, and distribute HtmlCleaner, but without any +warranty. + + Copyright (c) 2006-2011, HtmlCleaner team. + All rights reserved. + + Redistribution and use of this software in source and binary forms, + with or without modification, are permitted provided that the + following conditions are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + + * The name of HtmlCleaner may not be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/k9mail.iml b/k9mail.iml index e43c002f0..7543e9755 100644 --- a/k9mail.iml +++ b/k9mail.iml @@ -77,6 +77,18 @@ + + + + + + + + + + + + diff --git a/libs/htmlcleaner-2.2-all.zip b/libs/htmlcleaner-2.2-all.zip new file mode 100644 index 0000000000000000000000000000000000000000..a20cedf53dc30f77e22a29712aac8f7decada320 GIT binary patch literal 263136 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 z%0AnWU<5S*LT6@aJr&dlT8iEn^BPbGH*}Jpsgpw^TCo7ZLBzWep%kJP#kKL}G5RbO zMH7FaOl>VU} zJ>8Q(mBHZXxA^M@=L3reNMH6EJ~3qV7!z;;c>hYdxqlvg|L;$rHW`1OvH5rh%ip2P z`}b!5Uk_jZ$B8I2#R%8W03*7$rFgx|3Csh4uJ8W`)tTx*Hmn1gZJFHLBlMIE zbhAr)c{PJAtgq%Dk_;#L{-o<2?DP^)cUXX#dW>ao)r_0H9>=mmNA@2Y4xHCM$~k*p zttCDW?3fYxPua(}|ItBq{FR(dd@8B4LID7j5&;14{I4JX|0yAFXJlU&k63v2;>D`T)h!9Dk335_%mYB9gbxmGj>oGN#=F74?bwDC>iQ73d>lOznu<@` zW@ln5h*HbrIjDDhMB%$|{aq zybBLZ%iUmE&gBsv5ShHB=}Sm|a*$w_khl{V_H*ow1-d;eNvgvf(7={%I?NdIWhI1? zWZknVh|fq%i^q@ekRThU2VMGu^6oc78cv#XnF!9tPR<|x3uZt-*6YQGl2=INZg^EF z0F}UDA~}k8k{q%peE1Gn#2H$e2bF;6V5Z|&+Y4NTxZWX`Q=TJou<77Hq{+1|vHFR@B=lVBw~Ok%8{{HUn4+as9B{%hf;=TMtHnQiZGuVAQ>%YLG!uZBEFReqPCFb zc>!N|IL{D&4CEhP#XKnGG-d0s%KJDF6FzLbPVG9JlXtC zj0||31K1sAPoqP)G@6BfaJD#~kCMcyf0=nlt%Ep^`YyYi&qJ%&{lW`Q{`F;`!zPY) zVwJYUBMv%DPGR0W=NkZ!+>AYsnjA&$%1;FPD8L82~VtFg)`uHP-OW?gP!nRkz9i z#%`(GnlrCaKdp3Ey*D}%w0qXK0XTg?lgTjCqRm`KycY-y>X@8DkPzBB;hmrM8Ih#e2y3z^0hEKn&lTR(gr4{!&+(mp-oBugI#^>pbvH{FFjexlM$ z@ONHop|28H>0cr=+*+?*qT00RXq{3e+Dz~DrIGQs0fAhqMLM=V`)lY+YI-v)iuz~@ z3X!+J&Q+=3hwEC?$UNTQonlOKYc$E$4?if#L-^v@zb9-|ofoQ`^K5JGoA-8=yrjYL0WTi=-0eu` zMSxa1;8JeXFjUeLEDa4MRd72pUQ8aZo}-Wo&kyiZ{dW3n?h>buzf;2nzYmTtG>B%h zO*+cvpOhYfT5zUv@pm8-D*+r7vPqlT zpwa-+Bd-KPD1*Xzk1^p z^Ib|NgtWfv81h@kaA|!zJNdmW2!4AcX%a`AjDCHUOfbo)3$w$4?NF*B?YY{}97YGp zpg=iViMxl;bXT;T`%&#VbOgXIfD^2Dp18*Zvve22B23iP8QS2F`#obGD$6Jo7aU1t zQ8<42v3=+_a89xuEv-@|@tSx=Wbb#-QeN*({-Quer8$tospF8X8M|GIbXIglEc=48 zTZQiN`9`e=HNXZ5+A^$m#e_gaIkrFKzSm0UKdS+slIB4};24p4P`i1p{)brWbqo#} zIOcO3S0wW8)Q;e zBwv@05|yI3z*R&|vOvKlkv+$9FZ{At9chedDfreC&G$?-h~gwTw{21ih=Hb%(hO6; zqSW4WXU_03qky5%UWtv$JR0Z(0k)I(R5B}&;ORHj4^FhGf%M0u-DqBZOH+=RD;{D z(a;G@Is*%O%%>C<@Gkvcm7zzHg7c-A*oFnaFS99sg153UE2~lwUD%b3YC2_$w}@i${&*g=s1nqE zeWWXEMSZgc(kHG(sa7X%8Mf~0=-1IhlU1!}9Bz;Vx6EtHW2nCSA0-z|1FWjCofJr} zRM}FpB#AEq((H^+RC$muCq22M%RxdF?S&(8_mNg(G zXWR!0x^o7YdmV!-S5+b$c*{1nlsICC!Q?U7iBWp%(+5ireJ#b?6)m#@DE}eXC2wPL z75m1RQi`lbC4nB(z_g-dR+F}YdXfOQ^=BhBy<*dYsN(0@qs8gYnk=egONGvfKZqZ5 z@B=-DUMsWV2nd;A+*8l~S{_Ur_uewBiyOmnsd|E;s&Lks2hgrN3`!N6KoM9{&bdjJ z^^5F3Pfj}4;a^*1xkf{A?$rrzjQ*GAbkZEF4oA}I?U5$RsOJhAY)N%nPh(^Kiilxp z@qn>aUb@m-Q)XCkaCB8yAF_23Vy@}UuD7W~kEt(kSnxm!Xgqib=@I;P4$(6t1)yTD z#&+%;^e}XwxZtQWR=0oqQ@x*Pw^0u2bEW?K+L{#w(@VsX3mjXpSK19 zjF4$vprc;H90F#5%*_&HfBu9LU$UJ>(72Og_Fv!bw3O2;>X`_QUh+ob_g+h>IRDq> zEb)gP@~kN0gQmTkQrxOu!bPv^{lxn9f!_L_5w2v8dwf*mku?4D71&>nJsJ}G7vX%& z(owW99mB`sb`mRF&^el4VS-o$37J5tahzDlthg!6Ikuo-k8YYM4C$q3iaZ{oEh3S+ zm7tM6^}x0ld!4@@Qi%DHLkGXhZk%nHoOaxMn=;oHRt;mc1yXs47 zfhc31QNse}2O%bsN#K7p7%t4u`)|Npwm}wF!B2ZHfdndCxwnkl~;y*f>S13 zUeXnuBvDX~%xq>Lz*GU_BuPG%WbLmB&$;BtY)X)0G1!``lu-69`RXii>(oJZip%)suzT`CT|Z1np8;#oGXz{Q#y z299nd`0VUuw7#hlLgdy~!%X4N#ak^OR$N~!NXZE~;BSFw;ChYYG-jQI<04BN2hTPJfY9iVIBWDde7{Ifdg_l2XpzQ?-hoz8$40RVH-C( zaC=C?ReYL0>yhtyX4u$ilZTUWndjAM8GoOtQ3PMo zj$Gj7ws0n{zdk0wpoe|~Dz316LXKU|-P4GAt;Jfr^0u&~g z@UYZ#{R<$%x@s2%qSBS|GKc7`7X!}H$({oX{2;-^$45Cbw5I#b+7m`risOAuxnE{Fr+G%pKRbO}Nke@H!PKkwSk}TIz zPK;0-+))x;*|x0?sRl|5s^kL7OVrRL`kHS6KzAHc6mieCzzh#W+3uhfbMfjw>Ny4@f+^kbCmAqRJ7kTko{GWkEI#W-Bg z=r;ks4MLGrUqbzVy+O2sEc$;LG<7X{iwwG956s8=4s9_bodDU&AZkR6u%mLHvD=_U zImxR6d}!G))pt>`&NCC{M6koq{*Xg<5i1Csh|6$fIW&wDFd_k@*LEYeXKJ0MG9fU8 zKgEtQO#m>FtG8<9mNxV>xP=n?ckQ8KcqG0Ux}yeW_C*|WGG7^u;ob8|OJM2y+4h;l zVzxG?9-eBD`Lz(_fDQP9dv|eny8U$Xb>e{j%#nj1K2>bxJQpe?JHn?lU{0Mni3``h@=Cjs(CgA8tPvH zuK8Fi=tKz-jhf&EEC4~F_J5x}UEe&-t`#DO?5n_r6gVkv(o-Dpwt>*|hUkS^V25Pl^5T{6Y)vC}`XPE4DF_t%3%=so2OCQh;bpD`nvxRto z`1WZL7O2u!J_J(=Q zu-m|#m%v>f^K|odF(cd~3Ok_WYjNqoYU6icePa%)a$<0&yD~zR7Zs3ShPcY37Yro$_A@_5%@p#8$lsg|`SB-FA+%8AInFnGc6oxT?PB zz}IraAMa}6YpgCs?U>(SacX~6YH17R?2 z_V-;zDnh7hVZ4!CTEXWRdL{XXnHCNWFhmZF?tBjux6q=3xx4O$bFiW@sfT%R;+Lc{ z5l?gOA|ZTd^V&P*2+eLmGT!$sN=t#|TeG#xl<(B6qe4*ziVFQ>vyL}M#cQLa0=!;J zaAdfU#HnyGKuIq^b$%>r(2&&-KJn*~k-6S00fA%=Ub^1p3ns*I=+Is|&V~gG*7OHD z>#8><<@@Wc1-?Br8lygoMJ(lFyAtC)n}IjFC4-`rV7EAmwEssvjMh-Sl1-4V3DBbt z9>Xh6SA#p1z}1BTtqn9Ks)XC+_!CvOP#p78DZQ?MihcWCxYjV}syFNm=5qsmBckfa z%xB;IVpE2}!)k((y!vk`k|4BCgwKm4E@PcHjNS|UXok++7iczo(v58=Rh~XzCbqE= z?4AlAK1_!>R4t$ZoCZ0!&&}srX5GNoS*1BV~A0aT0l~r|L5a$w~PLT zHZac8uEk_B@*-f7XF{{ETMH70I?QDYTi|XAH$L^c&X?Vl3*_qd6m0TX>Skw1ACH9u zmxxFF_FN@6b|LBVzk_xW>UENH$-_sTpGSv-aFPD+B?3F(JFFJI-noBPZfKisw=}v6 z6g#^0N%|;L=!{=dsIh2DtMqU_v!>?8s=tH0|Zqt$2@&9=%0s%YdD;fMlOqO zKGX+wBnsbUnUfr}aVorn@pckyEZiE6hSE(ZERs}d62?o#o-j2h*M{l(Z1x< zmNZBljew=;x;JM)oKR*qwbY#9rP;$WEywdenjwtvTjPnylbS+N?jMK46Fy*EzCago zkm+14{}>*9+jT3tLFVvZaiXg3XR7WlBrTJKv#Ai2K-Nw5iC^1LLMpeRICMF>v0AnJ zKL~dDzIUrF^hVJ@qV2!@_wdit=+@?twX4IoVsCi-kqJI(i@=mYt6 zd+ia_gG$W81|Gs6j4Clx7xu}rh%!#>L`}AB1(=fu`e^6@W;D2%X(x~wfFsS?oya&> z&z#u2_w~I35(09wqg)wf%tk%(PaCQ<$)N@SaP?asxkVvrJpGC1P|$*PFk_#dbDeAUR7*Hs&iYHS!g_heePKK;!EGOxyLL?{FLJ+wL-pEt)>R zl{wq4608artoZ23(PE4T_qE<~8+ujcOoekaSXKT!kTfZa;fbs$tl29FGZxQRxR0>t zhN)B^neiItpRc%U7hr913{PrG4U|r4?HQiec?fltmpjxF@|%~i}Gtj`pzm++fz{C#3?@r zqlc5bnGqnnu-Af7)`dBose)1OjmS^eaI&M(`PbmHAb_E64olZiybsO>e5lb|nt~6P zJM`&7o}^c(`d$YK0^*WML(s!@H6qP`9MCwgU3;7|gWh&OKO*W%fNEU#+J;|48IG7F8v`a}ggYv(7WOqff7 z!nl}GPZ@D~FIYoY?6Wk@Os`u^$cL2fMQHW7W#eC1GaQ5mC&k3Eq%cJ2S-Kug!(H;s zs@UDs<`gdJW6BsTUj@yO=>A>e46;#Xsq;Wr4$pno05#AK)jafeR`WPMRJ)S>M@K3DxbuN){?5<9GMa2Ll6vCd$X}Hg<7Pg5FsuFPfd?x8&cTs0= zyw9y{I zZ@#K^F>BSjSXZN-Ii3MbtXd$)BWG5N?yO>EWMB9>+ppz)nJ0g>wFhUbi7cYHu{F=<1}(QOK+ObuMOU#X=$JG+HK=QmPN3bTLd zgwha?jQu`S2L|k%*RKe6gijnD?^niWySXZtt1`c9=ee=fVm+vkgwx5#2*9Z1pbBCz zn|C=cdgW?d3={lNbH}XRpF2z{z@Rhd+kb|(0;*?EIu=xhW?U-grdpk)7kk=Ip^%4f zN3#U=ZSnOAb=B#5a>#e!5Q~sbX)u3-9EwjK^yk)2V zmS&Ch|5l$HKp?43+=ift9sn9!W|=l>8u27rV5reLMa(R;Lc8FTEDNj3mmw_f>XM}k z)s-sPumEL97eO>Jm#uh3bHgmZ>#s;&C`fX-k-?ba1sZoVV6`mlHL@BWZj0MOSY+`; z$iGX}`%w8-9|h2QD9b|sCN2>Aaltu6sH=f)1~(%d%)zcxcQ^_ND$VSBuJ-I@p3-#! z&Qlf`}t?;xt(i!48) zLer+Rw0YKhPxhos3X0V`P;{Z~tW_)AiJ)12FXpO;o$BACJbaeEI$%_9x)X@war4+6 z%l=*6g04~brkAQD?XNc`)JRXBH?Bt;>Sdca6uX5J+gM6jb_$P`tkZUcfSJiF_o5tY zfq=V=eS|FBSB=bm{@H326nO-A{dx#Y>>>&Ley;G4TcR_DG(WrUpT0Qt7vay#I?E3; zi!e@9@DjFHGCQHVxcHC>dMh$XZx#zzhb$H!aeIX-%soS%G@bsCxTIYwGs+O~u%%&% zRd??lsR}rzF4dj zq~`KIZBWHryz<0~Tw-vAUKZ7I-8@%J+8vo>@jY#nHV?8d{lD6xgVh)`2-`vxLte7!!i>qvZI5qD=XWs9J*Hn+x zTK{BzSQgpIzGYQXo|jz{f?ZjHc>_W zz+_ap>oSAx#=6_I`qXc_#O>B~@ZYT+7tt|T4A*Ent6*C)LBCiHei;EeY0EW1XzoO4 z2J=4M56|uM(A?K{ioZ0W^U|edeH`)}y~_2+t2qNg%dLlmdt6xNxs25%k~4ZrlB50p z81u;u((X0;7`(fu%v_IUddl}G`JIk^l!j{~sR}UNS4F#-p{2Mrge~Q?7=B5Q*4MTr zx)7aHrmz?&k2-y>Y`PQpe}aKKkK*2Vg*Tes6k|w#%)#vbDC!iLZe>H(+gN9`w`BPn z)#5#~#ZDhPrq1*NMJnmVuI3Gr8ejT|qx67Xf65&pKPVgomjF4@Bt4XRE4mdIBcAcp z%Nd?2#k;~#?_8tFV`~EFQ+yOJBvBQmJ<`C&p*NXVJmU;N^Zv;;=Jev0LJC+0nwmPNR-D0BA^1RRNvx`FO}veJMasgq{!}RpoV&?2X-;Erp>==jQbTcg z7I_Jk#q72BvOChj;TmLb&OfG^-1rD>by$bI03Lm*vKqX*sG?PDobpx*C!fAm=|r>I zbxM9-!GAp^UFbc-+5?wN_C9DJFMWg64L4bXKd=7}T36vak{2+!im&%=mHG2+l@a`p zWCl{-fxJ@o<_?O^4(?W_|C`wbs`c1^=kj(y4hzCLOM}!j9Or|#MHSSK_kY`D(91l0 zXe=X|RwN6EN0@R5qD=4P!BR0<;t8>=0VHp@a0LmC-*VxT{j-#uj7Qpef<=jO# zCL8Bh<$kNiP^g&rSUO+CRmxRma;`2HTTAdy&$#l|$9w_9Vrg{JV@6Vf@DqZT&x%>} zN?=zx9~aOxU3nLFWI)U4E@tM}2uC{Rrnn)+ZjZ}p87N@C+6>0S@CZog{YMCdU)M; zUq!z}cS0r*Q>uC0PR~JCP3q>d3TPKj221OGuEHG(<2p-^3KS!%wAFk?%=Oeli`3bj z)lVm!N`UTnps}g0ddq_o%6r?iYuQ>)Jcf9%e}~v+A>IffF4-h5^pEW0kxb7sUh15Z zRG(NEn$qwNqG3@+3U$BT_m!Adx8o(Y(n;tX*dZgvDYqpVf3;BLv}mZpOTHyR$qFnP z+dXnbNS>_i0?Y8b=yl)u<oNi7?WR4q!;sThWn{kyTy{#51k2dw+)@L`57jCtd?G6dpS%Q$DcS%A>y1NC9WXF z@&J!S=W|GmYCt6&jLC#*8_dSyh=zwS-^a0-B_!fI#(D4>?;~#N*C?A~J(MK&=vc!roY}#z5wwPqaKSn*Q+rM) zMHzc!V558l^<+(jk+Q4`J_Na%Fi z8wn%gF9$b?H8fY39SqK(Uk{oWMjv6~x3lv&OIS@{ z607`g?H+@N!TBKQw+5=7B%br^Tw>VSYik4RqgMI)D;E#Vcs6+BC9e{Fcn12b%b<`p z@ooXNPL~|6&o+C4*H@32H8f6P1fu|t(V4f`nQeCiK-z;I82v9sh$XPRBWuCSBClg$ zVAES)o0!8^)KQRrP&E99Cr;eXvD8%6W#~aw_r|ug>KayBPqxFD!IFj_=>MVblFj0O zOqF>)$O6jJ00@H^lMLRo-!g0Y;RibAudhPVuxFnHxnF zMXHIng)v_Msfc9B$mEMW`tqQvgK_U~?M1oMC-3Hu@@0y(NWF|Sf9l%47h3_+e{IGE zt?Rt)%7e+O*Hn*2MrC(P7@++7uOsY-)hD(%(D zN0ju9Cv|!b{9n^%BllHUohfH#xGSAhA{CA_as_vF+it=aH@^A;fGF{>RMT3REjH>4 z-Czk#QrZ)UKAmc6)be0_L+sv3kA$Q>I9NoysCs*eQ18akX*3e?zWu4!l?Tbzwn1J6 zb`oFJ89Cp2uY{iw9BQo@;(1dQ?JGagc^afu3hu%*)u10(9%V~JGv#*#;%mr&>mQ0D z6~a9kPbO6gU-DjRsk#o@M*6Y%7a3X#bo-4{C0<BQSPz<9T+zIcoA0sCZrA(!%Zvu-T~qVl0Q0%-NM8NWV5&Dw!jSyRYs$R(fnGt`!O0kO+`lN5OHn75D@MwZYuq3=TqXuNnJL_q8@8O?Qu~{(YKHg` zl50M6?B{XVSx~izE*hbl>ysDA4-sv-wDocUVeLi@V1RFu7rd{TSS$=k{^;@tgkwQx zKwOb`?$!t7MQhv#iRe9Ubrp7Wz73i~*nK+ss-cI)Z6DV4wA~3$<=!`f z!(^p^=Kqdq&*5XmF7e^&!rSPJb+Y!)T|KYtj-3=>{ty?vcf{H_em{)5`rYwBd@$&r zc2RxGj00GPvNpuM>MyeWs|6U2u#dT#38GE%O?Pkp(=aticDojHwo$PFDm3Zu&St_&pM(U()wR7^#j-;a^|2f3K3&N$-^aZ`_O zmHokn0Z5;`h>ZK{t@vub8EYcLAMW+!s! z)Hb|Fg=gS0)(}&+@b#^CK5RO2(bjeo(l(7_mkm(Ur|#Azn-3>Bd#^_4n#MK%I81h| z%SQ(-Vql&uzF-cdeWtFyX9_0FP3W^A@oe%ldEw?}4C8v`%_)|>{CyZ9JI7cb6|d+Q zo88?-NTcyN2vMhmp` z&289s-DQ=iuGW8V783IIGl4TYiI<8H=taH~ds-XKISI)QOADhy*qk$xX!AttT=bY= zS+FV>S`n9`3(j+rPIL1b=)_+@9k-x7Si z|AWjGW!#p@=??bW`&{GnPa_B=;wXu)O(sXAJMQu!U9!cvW|Mi|;MsEm(?{#(F+-Xn z*11NT^~mA(f(9kn`QW+9Sau#FW%La6%%YpiQN15-0Pl}@j#t{< zN#z^U{82&XyZv+16qd115RN^>=zX{lP&OV{=$~XtLzed45%@#ET1Xz+24Nx&biG}k z^`7+(iKXoEau<@qOvy- z85dLrX8uIcli2c3tkNgZAeJUtKlFjJ$mw^+dO<3mArFKlK?Cw(%cf)tN!%>@9d&|Y z_z?N+P%sO1B6mu$TlD3yYj+*P2JQyOkE@cVhZQ^=(Uz8hU!V|+_lq1g;tbK1H`BHF z)0Cp#yiRs^#)sO^1%0|CA!jEx-1&!HQ}1U;XU101h`fo7n-l7UAM}Sp0*qKsOr_K8abnw^TM%auO>37HsTif;~a% zY*)K%OQ-nJ0G+L<)C8^OLl)WSiaJj-SqO+K?Z2mkuF>|$l5_cb#bAzwg%8*>L?GeM z`*!sI03_pv`hf!Pwuzw54fA2tyXl@hI{*s~tOF;isZqP{$jobl5?&q(SK6ts!wr?2mMccZ*|fxx#=*1-u95BES3PHUEq<FLdv@rD#f>3a!9;wrIBrU@# z4o=#u?YZxOs03sT%LDBJ=HVc=Yo}@U9Eop8s;*-11mUFnG4}=cIDAXgqwO$25KKGMi|&)pXLf{Ie& zn!-|x8pv@D20Xaf+X*LDrQqT<+47h-jwyjLf$GZN*3FM#@p#!!mymF zyi(X=hh@GkEDlZ{o!+#TqPQMJC>}{BW{(LvP*a-)Yi%0~&%sdC8f}jel>@uZe?zBJJ(piN}_zoAm+2*_DR}IE=)k&(ZRJK=~(JTRH118gsWoA!u z7Dv2vuj2#MPmdYf?|J0YkraTJO>jjN0gp7TP}Ha*+Rbq~soJcy$?sv=^0^;%gAG*) zflcn%f+WRPRqD$sY*Mz(9%#k`pgi+dnV!V7&Iej_AJdPLFpz$t9O8Y8-u|xO&^%H; zAn)%|2}l63*4Xv_wj(nSW7w2p$&dH^sk;OCjDK9ku|N1a_NAoX%CyT1bf}B2<*8cN z=5?IekO4MLN)#v{xRFu*z4@xKFL4+Ax7fb4@TQ$gQbYY}5}N&iFjA~u-L;oj#fZZNz7uD zYJ}43H}aKEhGEgj`?Uy_N))ULH2}EE-4gXLkQDCxG&krRRU!$&>8cpxm=!3_6Go?- zPRg&v<|!KW&}hryP@viS>VtuR$Yt@bn`NXtP92!3a8KdkSyd06eJq8T0~)~S%a|HX zbP9b#J|!VNT8yhpB9E%`;%Jli8H8VCaB|&ARBjrMjE$f}3=43>EL1bSDIMp+vpL;) z4XtJs0j3u%c8>ad`?H`g^9lL!=BID|qRBLeF!*t3dH8m*yEMlN#Qt@r#4~)fD6`iN z-;U`=$Mr9z<2$Mnv!~>~g!(^=i9jj9PuA`^`@fydB>W4a&_e8XrOR(8B|LvcxhFfb zkR3~FBg#hmahVy_t^cKWvXfTHuCDHL4Ef)lRQhHv^a(+?E#APsU}l2pl^+^JrhOQY zONlj$|7a$%jN)!n4QVLN(#x;oA*zBQmIkS(^V{l~;$KiYVNV47L3Fj_hbW)$1WW03 zh!*61cYtRD!hOwW+D|WOm$Pg9=B5zh=%Sq5F{Nw~sSSl5iwfMu1Wp5;65Zhlb*KpF zu1&Tm;rXg$)8t=TDlJx}egnKXH+XFK2LznyB~;~%*B;8xSM!Vn!(bTp)0WP5D_yG} z*ef#$pSaUE)L&HET7hKc)fj(X!lt6sAEjIQU5*J$bO)~W*Do^eYA&F8dp;F!zeIOd zJKN2yey`{=JW;Pj-U_pZSTA}ctZ1;lp0d;j6=wD=2baIG(zUoTfT{4xHVTf@THSOI z6KchC4pt?JMJ0$!jKh0drWBtFx(X`Bpvki90|n^@x?C!5IKGySZR&T}CoF4htqcV` zc36L%XmDp>E9JfGBWsmBuOesW{GUy}8voVgYdmK=^36vo;QaU@@*i=M|7%jz{C@_; z4vjVYHAxho#~*iy==^k468WreOt4~gtd0Mb-=i#}><&i;Wm#|b5R7S;RA0Dq)8(MX z>40(qYhG6Y8F7Be<90f$R#YhJFV(aOI+{=P0C7>*X*sdu|vG34CO*BH%xo;#?OG*^Zjtb2PgVCdH`oz~8W{i&Z zJb*+U+W?ufNnOh%Ln@!xnk=h%lTYH^BEd~rO%7y=y1u4hoSq~R8U@2&H-C~HL2*22 zW~22O79SnQ`Uzc9#Yyf3G?YV9^u&VXGZOL3L_M{CDcucrm%!bB=_&#*+EK!=M@hvH zMqeR?QwZfPNR$r@geK_sL`B9Hr{1V9F)NMJv5FstYo$u`KxrWQl`U0Ee(5+yb2|i`UHHvrxKx-T*b(#~Cqrlu$ntu{eB`K$p1t>m!CG*z>mkAcA}gA%v`b*OdO`wr^7r%F z1zK#DISqYt{uO`s`3Aai=W2zA)9Cg+($C=rm?@Y?m6_$n{ZQ(5_fFSJON|@ywh+ri z*VVwtVr^mD7y<9ZDOnu9b@)5WI@T<;gKf=bXy4Mwt~Cyac?kRa(u15piyPQJGG5Ct zQ5MUm$eFHDd=d29Xxtni&b!ofl8DTUk(+ACI>wcqAx*x@2h?@hO>&x;1IvyOvmm`b zJnS!kylaS1$G)6^3P49H02~TpdY~wD&$qBm&M04iGa6M=z%I3u-A-nR++vjEIK04a z1-lGojQ;Q_2AIjoI>50GB_Zf~96~KTLnsm9-4odF-JSF{4969{*=@OQ46HZf0m88z zV{$|cu&4x6^ncr0aq~<#IY4FTk_52?p24CnF@L(-{k_83$3WEMzFD(SV)a^d$bkFK z^=O!s0~pU%iz+UqS|C&iX%l4EqXpQ20vU(lS^S3;_?zkhWPNap*jRJ4QE-Z3=mf># z7AYseXPd^(N`v{Gw45sty+lPI-_5>tOZ?mJu-u!*G>qqZDA!muKonW4uQeaf_h!4= zQ5ODj6#PR?B}eshXj^fft0ScQEcDkV{hg)czZhd;gCZd z(^ziOMR7VeY1zhq1(D8B3E^MG7lksU=GmnZ<-TgWsHQP(L{FbrbY}5kMqT>L*0uC3 z`(M6K@s+R)7q}qC0Ylwi%_7v`=qtAe&)8Wv)z5IeJrd;Z%7Ob-x%H4t!B9;XK6YH{ z5L9P?^TkoT^eDKf-#r<&0%zWm#e{f@sMGts$Jn8N54LX@t#KZ>|ElIXT$j!Y;%Q7k znA*%fy)XIN%^)uyiQqV2vJ$XI{C(-kmfMrc_pM7E9#77Wjvy{aS`kI4GG)M4g93(V z!{?hyTz4KIW=un-&vaFRB9kFC05H;M!)uYLv20k7j9}HZ^TomN)b@Sobr@EWh?7zn zisIapNVbZJS>zKmRbTF6(NlxxJhZ6>W~)*#t=J_3Ry|wgYqZzqyrDDs?rvHjg_}T& zZ0VOfW_8dS%fRfFwdj890dmBbSA&P8-@Xc+C6dij%Jl-4`I((=rhq zi9k`7NdG0U$XIm?)`X~wC+xTWyBc@a?$%Vo%H`g*&jb&CEK+ANGn>9@wrq&5gI0YN zsg23^F}tX~9OFR+w_d(*?NysgZxM*WboauaC>y=`>0E@%6tZ^rz zp1l35_UIwD-%Ag%II8GV-KA|atE@)t#Z)A5?ywJB$Hvd_-Inmm4i33!Q8ed}977r|!Enn(*qm7BEmQArK< z2!?$`i!uhnEJcIYyQv&KrHe@B%+5Yw`4> zlKgD(SwSqdWYYxUsfED4u2I=Mr zwir9aI=mlVt9ljhl0j}SD(JVVp{s5PgQ(ey*&n5O7b4{aeRncBySc1cQ;L&oyYWwj ziI-*EMbw^p!)m#g^yl=yuPoFL)}TW53XtZ$7`40K7{7u5ihZJo{jOE!0TWnA1~`4s%nN*$bXVAbxA!Pt|`j4 zny+Ps8UO?rMXhtLx%sPBg;l1X^Cx9f6y0I!s~4~WW*|Q94R(H~_JbFg_zM#~OP(}R z`g>)I+^!mT-f*i3!K&BMts6Z>38`kf9rdMfMi!2res7lpw2K$D|Ija=%V3^F1dj)* zuTnF_ryj%k>rswx1pkLpqmfMEKOzlnU;iGI(5Qa=;Qo&WrT>da+tAkeCeko`)yr=Q zCy%9^(YXI1@~YYJvTF8nsMSw{+!k4v7b7*&q2y`dtjvr*cU^IB`2QG*-IL+SQ5_Ju zZ#C$gn_k`ciFIw70-+HF$D@z=`Lfg3wYis@3vk3}^F;!ujt-g%czT527Nmz0MuC;g zFg#(udvn-ooG%!77c#YC(lP%T*AwHT2?ODcutI`F^vw6qNd-bUdTDIlB+(S3-@Yx7 zTY+>2l>CHZ7^7R|Wh4z-Y#s41;3#pOAU-;{NGaZIJdEsMDIgAWrFY^QQB=uj*dg$l zChhQM88KWGwi z*+5=r)>H_4szs@UjO2B6zw#WO7L0!hbV*5cFp$J9CaO5Cv@8VX(UDLw``yO5C8~TNLR7=V_aE06q}Yd9L`NHK~`G0 z27$iJb*^g=b0B-JEG&v-r?riBCdclG(Km){_&9re1bJ9ke-NUhRr-WkhR&rHq&F#8 z(apnm7>~O{9^s3Ocs#uUXEYbkX<7NgUXSv{Ysq?7ob#dev*HIH90@C zv&pR2JB=)}fP{4}=nfVCN(b#|R$*wCij8B?Wm`2ui8FMm%md!! z!^0HsY%f5*f?|Y+)3!sWc&;{LT#+Knrqqu{RM<)kcEPM@9Kf<-h!?=Y$2uI6r3u}y zTo=<`>DZHlAb)FG33y9n>~S#>`7{1dKgbub0t4pGW&{r)Y!wctuf{Ub{`%md{Bk>B z;JO0vo%VtC2v7gG=`E^pyb3K5XrvvUnY@u6K^a@23?1zwGPhivWMFsO^~&9#1xc*< z1mWf%XqB)LPQGRfQn&=JA$s^()cC^Q&?a+kb*^lz2;=kC=6dtFf_v>xBJB>V5Gye~ zgBqQ8I137u{z4=Hn~XOgrtjr4PPt|Rv5#(9=qYR5?)3M`+e9_uAec-eLws5KTni^(!%Mur! zyAH}?5uK!J=*il4RLs&~=^-l16ei#EIQO%EjA=c5Rqqr=xx=g|yEvroT%m$mjK2By_Biv-)Jc*At8>Jq_ zLG0rR8l)Cpj;(Sr>tgM#bgrbRptQ5x3ii7tK*|y^sc1aLtA)K_QC9^3i}_nJ<6I?2 z@qB|xcZ2|=CA)xPjQ8LCGIB0xqn!+(BAYkKd!s&OX9;W$2RVeTveteul3z6`kwedX z;gUkw=z-{K{DH=R^KU+**G~lm*g9K#jOeC(Q*iEvfwXd3bcOm~qYhwL#h(KvEV^>t z%8GyqPy??aJbM{T>HU$u=`nuQ3RABcmXP24=}z(~%6ECNe>mpL4XiIJ7y8eOi={DS zR})}d?O_%N777p||X(RVChX+#lulIvlki-CTlT6v7 z4V?t?R|bQL_ERUHV0~M4so33+u_@Myt5UMeWz%0k7T%D})W^SdrKY7v zswuN*2>Ys))${tuWnr7MFaxebe=Bbf>Xh#9IZhq9bCb?}2VF4zuDxCa&7W*M$K@)d z>BxQh{Jp)S4eT)ai)}8W9`B;Fhsbt$LocX*di8V2+1F>T)#FJL;MK#A;$1pl!+zUv zuih?FIc4e~`r=l}w?N1IrfR>S0P7C2`+G!T2&Sj^F(&CGKdrqur*T=fUF*CN zejs)M*K`p2BduGm;L2&<@L`5ZSmNf8IbiJj{?!+33IkN6_UOu~&(h-LLfhe0f6fmp zdDBg?>Qw2xihgm5a_s9jNiV0?0=28WXLfSyEI&@uf=H%-g_32m)MZLXJ2VGP*&RNeZ3N?~>tl^ZAme1pPijRR6vc6aZ=O zXIzWl(fz@q+>ovyqwN%HDg9cV-u{n~>A$v+N|_9y=-;Z5uJ33a(f@2@va)luHT(bD zLaOyRuYGsX^Rm8#RVgHkC$RGWWtGZIEii;-MJq#z$Is?LgVvIi6cG(n&x-!)fb~yC z8<0~t5Dxa=Xui5&z|;`+7rG#@@$6dIHUoWrcsS#%xjt$}UdOOvkkJw)6C67~fbAY) zgsB~bpD#du2pS$@G|+A76Wgz!0qQnum&44`gf$`OapX1E2Z-C<3siv*!z|flL)+A+ zs%Z=MiZ7V4f`m1udBK)9IV@OHsWEV}$iQDh!41mK7tL$$*H$b9jXUKxmkkmIDE`WS ztZ%!TW>GtsZQ)o1qP<=O++9bzeNPMLEGdOLsAuAJ7Z7r7*U4ZCP z)fOULF$4L>A_20TTq_*Z&~)~vY$amc6_rQIZM(BZj#sU^E_1NXHOyNayY@MA>jnC! zE@R?zs{9BV1uY*LQh(HUt&usNxf2&TG^k+au6;i$kJc>~CxcIDP8z3EqSUUwuCQX51u_L0=YG58T%) zDvokzy;2QzoNT`h+(}=r0vCL0er~sM2A%ODC{Di0Xy9~-3kyCeYBa)rsu(fL1TvSb2O!6;@s4WqDWmO=gBlPf407#>8Ta>iu zXeNXwdT6j-xLxLIN*QrGhJQF>S!5&5Jyv+|waAxDI_ZdnKZ`jYoJC3uAk; z<8IP8(2Jvor|A_|y-lOw?{VHw=-E+tOd!LndM%gKJ-SnSDrpCA*7VCT>Kj?+#7i;+ z{wWxKK*9UYn19QM&1hiX`?F2VCck`-$G^N~o26q|)nbhT`tq4ECDj{S{{R4LM~ z+zkIb4{9^rKcoz=Mbtsc;A_SuI%FEAPCBs3p7!Xy%qQ=%xswj$7jOiM5KlDAZ>H__ z;lrRfgP;B(!okD*WEDV6=*n=vrH!r7h+hC1%I&~h6T#J5EY9VrA9Zriys&pJAlf%_ zAH1q@CxjD7TmzngBn1^VTXhextS&PrJ_nl6IBeU#{n_!HX%##=c6-s9hq1^??Ug^# zV`Zww#FUHrm$N23fvNCu-$x&V-JkKAXX-nDeseFt!ui+T!PXcrf7sN)0JKuL>JffA z-Fu{eQXgmQ)e2T3%Y%|8_!fa_(hm%`U9x{$Z>o>a8I<6i#Xwb zE!$>cz{xD?cYEPM?N*QRRYnbON-CGX)*^9G$kYvgSf>!~oVo~?^ zi2rj@-Tw}ckQ|~-Wcfzjvv1V>&lr7`|3=;am(d5R%Q>uxe}k^jXP;_VAPW}Ha6b4h z8~v}UDsU=ga_TW2Fz{d1f8`{rg{t2ZdcQhYb(NLzIQdf`T{?L04m&b-Dj6n!@&N&r z2j&$$qoLQA7i$Ka+qnjIE!4BRsr8{kz6mR58vb!QXwx{Hic#Y8ze#@Uck!@>B@CMt z+O)3Pl+j35;629t077)6z_VFbUCn9xS2}jou+C&wnx-tq)vCL#EE~pO7HtNWuQjjQ zeBF?D67^=wp8p!AL8q`?fn_; zChE%To-sP(we{b)E4O_jy#c)^GwgFoQ)EVATi7Th)XNR8i`)~mmp}qB6{(t9;O;8~ z6O_AOMj0}D$B**i=P6vmr?JwBmLmUls&5#AmNVb+JHuLOtkE*|mlf@bSMD*lTIRM^ zN~+x-SywHO|Bbt11nPmAP*OBVYSq@(rJ2_e5R8Oq2eCLWuH1j5xfyv>fN|18 z^1oLtw@mqx3(dqi%yDyp8!Yn&;xd2Y;Zb&n&ZoFD3!tMn$^bFORbRts7~_8=Y^Cp+ znIUL$;&y{6?}B^WuwvI}`svzs2%;E!5cfDD?$TGVD4ldrpn|dcO?2Z9nH^kK7KkJ@ z(IzaQ5rc?1dO;dOUL27P*NX+gntV^F2}MF~@E_Dqj%G&}MS*Ox!oTfvLw$Z)3_eh__R#Xl+y4)j74G9sk-hUtE-N8Ft_Bc$( z&1T4ibpxRC)$IWezrQH-Ewb-m?bXw2wW=JCt*BS)I&4DsJ>3`2ot9X5scz282*X;6 zn2Wefuad{(aH_~Qz+BC&?*^;w@8)8^GmYw~fNc)jWJPGuZAbp7mtrA`i$4dS*J=m< z{DNZy5Zn*5YhEYW7T5RcztA|lMibU;5qLcj!zmP|%TzX@ajP=sC z%vO%fW^;|cbqu*)LkcIDgZLF{1u5hTAlP;j8MU5)(=F@i}Bd( z@_PEUx^^p;6!O7C)ztPjvIlt!cOsO;>1*})d-CkhC;pcBWV9|j!Sh#95?n@vNl!<| zA0m8S1It7cIVrjhFz!fr^_Mp{XIIC$Q5(^YjqV8@AF$B1>mzO1<4-;7%vf`o+JSHDE@t-_73Lg~%-XeaM4;J$c z2Y8DUA2tm@ndvIyr4v{rIrxLqDI}CWhf~6%K9pw_aTm zCn)V$8-Y(|795^a_8lkNp}rReFQk6H4&pvnQ$t?;Pi&^S8xJKeezjN+CFl0c9e>7Y zf_SF$1#zQaKdU&;<0;vA?gTvcxc_Y2OB8mrP!bMps)p5}-m96}??2Uu=in#z61=K7 zFfHA%=R$xb>*51f&L?r7UxS{KB%B^fp6u*av`OAruMA)l6NBO3nm=q{9=8=FXM*7| zRIb#&2hYl~m0fF&r=zIWp=!#c{EUzc&W~-x_7z-?%yGE>fpMETuDedBKsaP!>*6Vm zs0;_qHg2q`juTfW&L_$}QR(0~u_%xGk?!fd+-SLLFngAcrDAq;R#v;mo58{^1@&4DeD*i8KU4b4;W<=1htxZrwpxiIz0rZJxeCgCpVRDJEEEc95J%vBbYu{ zOP*GH3Fk&{+)PYn-Cfr8&5t1KJ9_vI~@ zX8uWoTK1IFe)pmDD6d0N)8LGa%x>dl4)3`-$@(@y^c6X}0*Y>!dIp2fTu~!sZ1$GROTNbPe;JQw(i5`af zSYh!ukADoK^Ol-dtB^0n?Y`tOdwaBO2!CO%xu+U1`As{A``H7Ro7axJ%&Ky&$Y*{M zD+h*6HP%&ILWlU-oVb=&errp6hEy)#;QF`5cpbNyfL2;~4lWxgk~e5#;!YrFKSNBx^oVMs)M@1t zB9y5Uutu=s`Tjk+On0gx%2Y@1v&Zi@5@Yp%BPG|xG={DJ-2)=)g8aOYqNQ&UVk7;u z$-n_Gkg_nCi#0sN-RlJxDeGTtB#mW8ge!stV{wJ}-UHIyEsqa?@200|EkPkkqGaLx z1Q`jcN79}VB{RXM60HxDJniU#LK@W!%`e&rijbNzp`i2%rwnm61`DS=5VHk?DlK;| z2=k~$LzJJ4218~?0qqD&w;n00bB4xzt0@|WPmmD zSnOR8ke2)ILG_+;#u8QfUO?@hYJ4B=6-`!==bhMFzdv@JD5{S3Mo_t)p!B7sA7_r z^Ays2W9$K(u-uvE?_7emx=6b@um>439S zYChhYL{&k;tRDJJ=5J$(eu^n(lL%X8A*p*+@N++j5}L>XBjN7?+rp{-G{>5MC?V*1 zCoP9gw&<1up(M^6NDz!;W~Q3@y&acZDWsOl{7bRLuANR8+u}zh^8P6A5;MCF|i{pVBVbn3$0{u9c=Dw!hPy-v)3Rm?a@!Khidgf$IB!SL5f8|MyEPp!fDd znpD}lmVujYZxk{9=pfa!P=@#PMMuYm9d9$Li^)o#1|&%}8k9y|!X%9Ew=W_6-5A|6 zYbs9OKQuzs7X12@(isHo`$}X~6GrH?Cm!g`Gya$scGaTK!G*+P9!F8w*QtH$QDKa(wB0X5gEZp59 zK4t!1)*94vooX#Wv>)}V1bnP1hHOc$czTAleN=w2X%>(7i&Io8TXd_?>PdfUp{n=+ zqsTM3AS2a>HSVlQDe{BqiET;h8K$(!R0EJC`ilRNP$VH)Z0?WNEzD8Hmw8wqeFLR# zs*{=6lG+1H;CBRp;r}szo9Gv}Pf@loMWxWrsK!BjCF!4$!GYWh(KC$L>%uYFoQD8x z(;Wm4$ae;E=SWpozvbZX<01bW4OTm?y%7;q!Xl0f^=gvO8?T{eu-=@-5AW+l=u113 z5KU5V$ca2Y+hQfg{@`c-igF9ewrH zd!dW819xwDz=y}1GZ59nnETzC`P$=*o>He^(#tYYYA77c1UWW& zh!-E@W~!5YC_MK8sfVfYI%@tx)NDxQ_dAJDHqzxDomsL}ro zj$&n)8i4-#)()5f09gM=hx`Ah%l=>E%$4T$@6i&HpKHK3JT^YUI2iHCyFK`@>y3Ft zEW~(XTyf$%W&U_d3#`cbtASe2v0q=t7lE6^q@w55A}POBCKuO3)@%;$`$2ZRLhJUw zO9!1q0cTNP_m5{gyFEX@w(&5M==IQl#-qGVryn;EpG`@@_6LDS&G~Q0F=4xYZbWE2 zSWSh~>y1VrQN^^%E~86|OvTFE7hLp7kg zody58upT_1T>|V$J1L?9I;kY*T3`TKnBddakx{)8ni_R7Q)miP=a>OQ$HmaIiTXW_ zfDwbmB*s~p@p}QFf~{N?^ZB3Jf%5(6=!jV2n#woknqgAh==+5*tB)*S$Y?D74i=kd z5Asa7S-qcTg4L&nV&jn|IVMFTVU-d%BVQwMYbe4H0c0R%j%vgLrV#(gs45ncKuhr} zj{^K6^Q-;yQC+FhBWYt8GWC(CEPsz+LY1h1swhAt8!)7`^Ijh|_lmAKKyq(--oV{1 zqbFv7X*i9U`}}UVUXuK!j~5#b--dHz_OEDex3WYS!qCfF;ko2U^|f2g;D_JNcAUKP zrg;u_w&is6A(^<)W9VXn1LFx=QOhe14I0kSZS1Kk0oEEya(W!JxT zAxC?c*lym=UMJPA#ixX6R0Q4)0>6R(K=XqS6ri1=xU$;YhVlID6+k6uFa*nAYhkF> zZ_$e)oJEs1;Wb1G8AdFXLKW6I<;ESwpvKLsSsrJ|j3JBL*U}H(%g80ZXLZ{DHX0<` zgdX8V3I%|RCo4CUd(CR#B`MW7W>0#Ox}z@Nn?VgCrz-lp`UXh!z!uH!6Qd=L?PIx$ z8lI5WHq5Y2N!>fWqQDiXlMXq3zaMS7!gnAc#U?9xXz(Rk&4iAu4(QtxNJ#x`z@FsVzK?+F! z>5@!;y*dK<8&MBZs{M?;_H`5auOITUR4{^Vi|zGsI^P7q`jT-bo~+h!uEqemg=>0V z-8f%7YSy}||7CwB5MKU$U_yu z07hgP_|NwA7`!0Vwu94t1aTaf^KV61i+gVwx~DwjP;h;yIrdX+Ggz?NRGZI&mJn_; zA81&>U(_n99?36cO-g-OGV{_|S3!1PKL$1?L55*e2E#gh9(V`y6)kVCWeemvxW8}= z82p?x%4o0XHWi3cl=cyfNWYPy(w$tbpAufU3M}I<4AeL73V=tvl;h5ya29Jmety4r zgxs{{XZKqugJx5SY&K5w+d1w)m_vVH2r~PAi8_oe2ERsF8>U)D!26W5P;4b4t8nFl zcu68$X1&uW)uo~P(BSyMiX)2w;-!E>NYNc~yW}3n%-eUx>UGr?mA&-3$VryR;C`xr z!uZE^u)G1@#Asv!gz}GP^-}21_MF+E!(UuUH`|F0wL2y<&~#{Nm}tsCQ2*#bRG}uP+V#oy>IZtpmhQEgd^9J+iA->Nt=&H!p&@K+F*m#Gsh< zt%*O-I(~j$vPN0oV`^<%JXUSJb+3gCJZpn=RSPnqMp2K-)5rlJmA2)~}#hz}4G(F{tRS`Ax^SRE> zc(E1-Tkw1?VfGF5>|YD5_(VQT8p5Z&X7*i@@{!90RYhLb4fDh(X2rn}dwuY=cBt@9 zBt=Wr&-9!+O_TczQ`9$5I0uc!uxf{IhDe*J`Q|D!2wW8nwVtUV8R*q$#^|3mb}DM9 zwohMtlL@0-l}%sBm>@QJdl5qm-#~e-;Xa643sTiuAd$k4A^_Hm4r0|ZaCGV24ohDiZ8mrFio`Jzzedm?f3V31O-3Kp0yzw8ijpi)v(dO zo7274Y<&{7eO+LBR2ns0kKdk5r$}BdvTlO(>4bFxVKx!r(A)1cpb@|}&a;^G9VsgF zMKajd#J@D+q-mmTR(*qz%^b)Ok*!($BQs$pu6s#>nzzqMbIs59w;dxJGaXC&GaT7r z$699J`0xX)Gk7Ce({_B@M_J|!Gt_}QKACff9-Q`iBG_eV|83@dNEY!U$;ZCxm~q#d zk6E^7*G^GOJ5lsL_Hm|usPpOdOEl+JJ@26AE=%Aie)=Tl7`Bh@kj*nq53O(AwcK;v zC$$DL#`eqaF{qyRz2G|P=Vp7Zll+q~;d`dOkKUS|Zk#xzh!Nc>MUcBqnvM~0AEp)- z7}!a6ic0S3L%41Tsza^o6~~Fq;$bigu^)rQElHR8mxG;!_$&6D&#`UNRSi{vH#c{@ z(EjX#YC8cMgGd@Df0CGo?&1)K(_eW_PYR>cG@^2l_aEj^q!sKdS~>?zhDA3zm>(&J z7lLC?hM}~&M*q5+?+(Vk%J2#5lU6zesqwF)5#K;0~}>( zRn6GVDhFE@Xtt^CDJtXr+&)`s7|gmq!Axt{jhXh^0d&#)^gPkg(cx5^C^DX0@F+TF z={en8%=YQWrW>uUjCv|jnD^zXN|2!!Wf@}!XgHq7f^}uI3`zj*zM#}%tS!^(!N}TQ z1x&`uyS8tHZuz6^r63OMHV|gjBOlYT$(!!j$Ki50c!7U>74|Q)saw~3Y~}+i_phne z_47#Vn?k!>W69hS)4M~k<~ zrNpI$+pviw)Iw}|N~O@aKRpUuXUynAPh;l5B3^Gqe%v;24s|yc^tY^Uf^yqDP^evM zEPR;Qb392r(FpmjWH_Q5y_4Q4901R`J4K_mvbC`a`hr7i;onKF7Gv#Wc24wOP;YA% z(SWWvT=$!H+i6cPgFdxJAv?_QOE2S!pUjOBHMjJ1!|&90K4nf`=T;loWfZML$7D{S z^~+X=z~e1<5_8>xPuUU&PI7gzL@L{fwqR`bQb%g+4mB62Wo1-U7RL7%tA=V{=oGIf zUIpz%iLsRDDT+MWNdcZ7Wb7@q38w9b+e(RSU{+Uq>2gsNW}ElU5H=8N1+iarWHW{) zw%(WXL=8qpD2Co2EL56e5Mz&(m@+FGiz7vW9(@`=^IJsC>{!g9D89@@=Q)UQg>@)%vT!gKcfwh-&iz9pExXYN)%F+lpm2e-y~NYi2b zMl`LSs(sAnJE?&&^y0#KvUEfg{q^{3TRmgCU;sQLn?|RRIJ0Z~yUqkTIAwoLyagwO zL7huC#C-y&RWjj%(VynMe{u^C{;MS03cgDTW|cc27_P;1(YgO@8GW;WynvZcS(`}$ z(5!31F`x12#|rpBpI|}vL2NwG$v)c8b^|Fv1Q2FF?q?(_=R%_x+@PvgE~B>)Y= z_Er=JJR875_%gaPOuQ$^s7vGi>qEMYCr%N-R&n0*=#(4kn~W+*D4}Q8CZk_md%mbr+2rCkGdnM0pVhw|{2NdI$H{%*efdGf!|Z-3;q#JS)b2m>8pR_V0UA1{*uyncUj?+mSW53P8f#@1+&{nOE7+5S>0yQPY0d zzWHeB*jG{#()M9o(LTsTeK@cDo^1E`z=S*ulrg?%(!PG^BkC?#zdZj_@ldJRP(YYo zXkIA4n%{j#P&_D!KOgS*4F_`w*=4=oh9CTJE2}*e2rGLYj2xnmel!3J4`2Gv?qnv6nb4$(xAkf4 zxQ%=W`~a=~I9>pDl9f0yVQvOn?ziat1Zt8DxDR*k;1lGdrcx)?Gh(aK{@H?dW!rJqR@yxMr^bXm}iH8NR0eTw^aFnRtP#*mk0}wJg zu95doo7MW~c1@pn;x)I1>pCWT7z}y5M>AaTZkNP@{}ooQk=i>oAhnj>XU@=`0)`X+ zl?8l^=fBy$H?>po+D_4M48kL8%^-9%)Y_%_#-w(*uXD>J;5v z)Afw6%``6t?jY&pyYAXB$9jQ%sPU@4nS|78(8dTeRXC+k9J#*0K?->X7Mar?V94}^ zK*S|`BCB(>{|FMXdkivU4py#>zp-7#NO z;_=*x6e0pGpOwHPH5)J}fi4liH%)2HY-oSl+(h8$`WLSx79c839(p?eL;x5x>kEVb%Y>wcT(9|d@W9Qa$JPft;uSuFsEL1Ik=e}^H^ zo)ml!}JBE+{V#U9B~w#zV^$! zr^cU8e^V^k&IcH4VqP$UWICQh3D1mS;|WZsVVT#7Nl$`FDugG=0cjO^EPue@wYu^lwm z-+JUe19F4U81OOQR(obU$|aO>WNGYabOV(Bb|gVQnJ+DG1q&NdbByj82KS_PTTzz3 za2)ROOXz2iW_&oVKLG49M%^Li8T3sWj+xrn!0S5qOW>pewWzM1$;DE)CU(u&XR@jE zJ8kEMxU(euXm{8Vx)rh8~~EVyM4e3A5xw=+)1JgL9daY zY~msBVVLhH45#Ci!HUdm2Blpa-)+#EI1|)AqR2R0+5Ke;Lp#h_z2aAZHKAJD^_zj1V@G8>oxzr^~7+Jq4kb22S%T4X%7u7Os4NB zF!N+C4Ri#zKx3s1WFDE;K-t`j(B?9I?_p#h#-{t)K#*A-U8-7yn=;$V4D7HLG8olr zCRnd50Hi%R;UllscM2CRVkBm_n#?F=FE<*jZoLk|1 zuJq7}tz=2dS6gbu30oGvUABjvc1m^JK~YO(w;CddKoy6&#L}r`TpT#sM-dWT=eo}* zC27sv)}BsA&MD+K)JI+jeh8)?u<6M0YH$L*{<3|*o8Ti|)0**$JIYJ0iAccDOpw3l zR>(@R+)t1vYkN@lT2eO5k66Xt0X_K(7H{ z`JgnB(>aKm;1n8^Hj-GICu(V7Wv70`E%+Cv_@`7u0+E#w$cw`OVw|8CrG(J-0N|uD z6j+^vZcqdw-1>O(qguhz%;1k$M2`vmq-6E65bT&HwkAL2Bb#ar*Z`V1dYAv0p^XI) zO=x1BRa)VzK#*Ms!5czm&sq@QhY8UBev=t$2woH{v9>anx)KFmXQ`HDc{1Rmi)s?v zKwN|mIu47AZLaf{Vj@H9U6c=mb%M}FYU_&r`t_8W65YCKfpW1qLOEMBiJpWzLtr+? zQ8-#&aDA^Wu~t`8%?Q&YaOur4(ms4cd~w7r@1RZ_(UMx)i%E7SuyrmZH` zR4rnR{W-Xmv)#BIh$Zx>r9hWM;K=anml6a z&Ik>yF5m-cm!>BDxO7+Mtk;aVB!pYD)n#MMcXq^OUImBhePC`VGioEV#IUMKQ%DgQ zWPOQ*q%l?vrQ~ySqxamGJjr|ZL!>m&3cD{$2?a#$r-6$hB~p|YKe(I}Tm`90igPm( zB;<)Y`Wckw7NYh1raZed;j+1eVW1Lu(L@t1r>5;_NBw+g$U|s;zkxO?bLQiYj%xhN zvDqo>fa*OMTSx?fRI6iVz-1L#~ zxwd!*Sr&Ia3lrTi3eu9NITcd?Y_i=0?}Csb&wA#)G1*r4t9t-GwOBg%Gu!$?f9;`3 z0#`iV7?#2H>dlALiFigcwB0O#8F?ekAztrkv~?q;vWB*S z^ykkdgUT2kn2LUz@FF8UFTxC#1}}zEnF1eH?RpWh<>bX$AK2$Pn*)A1VC;fo%eJE( ztvg9FcJuy#Iv2~q{N3Mggkqb%{Bxcg#p8;wjoN3YCa4rDS?aEp9H>w5_H;kokr}L4 zF+`oinr~cVHI&zR3s$26!c>Ph_4Bv0>9Bv8Kd~p_x7@@*KehFICUa}wBJZj%8z)l- z;KRX0A<-xF^sDX=*NhOfCC-@JI;EWWkGz-*tFV*8uA^uPKQ9=|?tzH>c44|K3!IB!wmW1Wi)ed1p0 z%j48kU5{J3r!COizrJ2Hd34G??+22r5kC(_=q%2G({xS0kI*mBPPemlstIF$V8jCR z+ZG#MpDEp*z!im8&>v=`NZK8q-((LKsPA=KHjTwAW;s%wn3gD&UF=6)=n-t7THZ)3W{>6%A)$6eDNJqS;G9 z(eRRNk`pO`>O2**a4OVAl|3ni7?8%M97L59peJl;M_!kp6Mvvy9bl=FMDw4hfX=Z@ zKmieN!yWYHkzr zh$zyOV`NVX)}v|yUz=qWh|>gxB<7Sdvu-7Fj%~#Z5@a$gl(lBzj3PI2aq07PF8= z_e2Xax3!0~cjes2;SJ0s9RB|3W8W@s}^s)y!A3SfniJWBu~zviq8YpQSByc7^TPmx{4jx@mK$~Q$)P1D&> zq4Z^dzojd9qD>xU-pozWIo{O@n+om|$N#CJ{N6BVQaa z!S`+x5uem^0TSeBYEjB_C%l$Qolh|M2bEAN@mn^l0+GRYn1RqJ9vHG?3{}_Z z>ww=HiJqZ0pyhYZJ)cEgYbl?pPnM)MSjy$w%Jn{l7X2{M==O|Ch?iDTE^bY?W)uO$`-iAJTVF zVGp}XI1DHO6@~7XJH`Fyg>VnS!xY{ylv~3je~wwsvc29Dswrfe#C*>Ef|xZ~-efB; z;!)bfr&e>~=pFn`NssBk4np2hLaPddf3U@jX?(e6|!mB#`6~LJqY#9P_SN&lM1qOUkJYVKjdPgO8z zc3mVkU5=?KZ3bgM&C2vPcR_n>H>*%_>Ni_6e#c|*>jt?9i0OeMmN+-dH7Bj&xG}Ou z<56bj8>g8H-c|<~4qqx+^X2`Gt6S5~>Udq?SZNX-s573R#OBb7UpNj$lyg`@RZ`zd{rvOxXGmUY>BPk#57wKo*F~hjflMkwI zWqn#*JC_gXueV*rVeNB`lj;eT@ijsHr%vzhH*ECz0wqQi(&kfSKGr-9HFn!I|Ab9i z?AJ<dk5{kvdyI6?dEU%@j(75CL|9!<^F*-lbT& zhR`wBb@M834!E24%0x(2JoCz8F$?NhG-f9|EGNQ z-!RR8&U{rZoGhH}9RDj*@d~PhllyZjw>l4Z$SiakQU?Po zqfc)KJhGX{?OD_LR#9vmWIN@@P--c%x;X71Y7AfAc-t@*wXK?6rDf}MkTF3>)7Z(V z!D6`T2|JEl`bZH}YecZ(NStclJO25@UT20t5v_-MS9|q=dH_-`Y-s4*<|}EI{=Yxv z{BQm32pq^u^;fbn|I2D&`=92L{!5+wzk3${Tdu)F-v2#BP_`zYEdsBT-=(9Rnx5`Y z(?MiXCkIN)$cin&OhP3ff7$0IE)mN{yP)J`Pcbu{#bzfuv`NXIA4eavfe)j7g8X`R zIQ9#jI!OY*P(-OzgdILt_=isi`19EaaKGKyS*Zo@QG9k1ho9}b?;1wAQy!iQ9c>jj z${|^%Bsu{U2m7lSiaR}s;guM%lIE$Y@&#D4_Cj!dZY4x@;nVSe+h?e=#TneSgKnCY5&=p=NGTS|2dMweF#$tRh!){>$e|&W-Wsjb{I*Ed~BA74E z!Df1ybM768p7t9IaUIy;%H^0A!LBN$0ZbywsUxaF@GwpVzLR7+I5S)!P4Qh1I0Uf6 zAYq}@hQ5eh)$0Wu(-tQ$2;4df0yyKq5aM6V03FnYlv>vfQlCwu( zEk`@wC+0sbmNQi2hDs~eg0@j{$hp&RB6#I(;mkWfs<10DC^ze$&0%DloSLl+P2UoG z%pC@7SQ$37p&(9D;-YM_Z7!?7WAr;NuD1~m{kpTB=2^AQciRiIvXsKe_TtAu6%A_; z1fB{UnTuYv^Qz(+7qMxJLG18w%Im)d)%+~Hs!d=^ktg*%@X@!q^5cfR?&}E;T4~Z& z`=h?^XnqBnn5Hv-(_^-cV(-$*Q5)*BY}B%SEf+B%r6N_#+S7vnq;M2xXoo)G>)Jow z9rtN%gHLByrWBnsn0B}dswb*Hj90;PVB0?Mv~Vo0xm4OGrAds{&EBy#=B^>V#hKz- z!ueyRh;DxHY{2y4==EtCkTBS=nL-h;wlCYfuvcoMg`p#$GN!npvN?!zai#aoQcJw$ z0wy&`I%Z!~=OZ|O^Oh2o zZ7=`;1rz`P{{Qh(%Q3FK$Vq@d#g{!M6WXf9h9>a8Dd}l#>Uz=J=%@ z{!en~cgvo=+5Ndk_Wj}v+)O4VLI!m|kQlbx1@NtA4zX+s45Zezc4zYa7_A27MwCQ9 zC|D9a?!O0-91-9R)P)3<5v;NvKEw+<@u<(opVeT#BC% z=8jB9yo7)-oQaY)pFvhfcO*vgo}(_kiy~IcoU9p71EWdxAQD$pNyJ>m#|oN#mR2>k zveBeL-qNOu@wE&kLuU4h$F?i`h zba7+1v=;13Lc032n+e>w6CO1gb(+Z>&oy!zwm-wJxb7g zNJoMU3AU!)MN5|Gn4m1_WEE9n3!dwXysqvC^v(tUuHkYZv-gOLf?NCkrY_@aS>F~k z!HV8g72rXH;bjObt~q)1H^>GzE1l4q**|(DU@Ow?C&Hm~17+B_8>emkRFcjG@avCi!W1IjP9CW$Q z#H&XqnC4!6_CiDsf%Y)|)I(_6kINLItxmyLq5je{=|nOEe+`*IQ4z=#*i{j9!}zUx zVT__KEETT2q2NYuDQa32JGIBL`sZci&N@uhC$Q5=$ZQQ{0oEeT3Z}hD{v*)594P!b zV@%dHu96|h3v}gZg%o_+G$@P`sndmX|HIxu?t;D9?4NEbLQ^(Wv}wc61>Wr~43r#W z3i`LwsBq-i2E=jm_gLx9_gO|wG0qqh_7DzqV4*K!nTes~wkjHA_l0tln@a?fdZqX4 zpn?aLV{B?pPLhii8ean`YTQ5fki>?B?tGSn8k2&3=*@b@l`?1Vp%rv7-C5!9;Ur2W z>ZbjxtcRvQOTU+CwT3jd+5?idSx7=EQM7Rs6n*q6hjd-{E;kP6 z8BVx7%_4kAuh^+|FM9m#WUApQU9aQ%BiZwYd_UEQE3mhW8{Sx@8WmH9+zPy&*^^V8 zuu&`AeU2qG?}vJcvW{?vl4Wsq(e|p28;n;{)A+#YNR|P&U|yfcQq&`i*^`MaBq>tP zx8yU%70P$*Kc@NjC>5PG_hR7Ikemq5VD9$)j`+wV^O-1J#ys0Bm*?p zgaz$9wS?#`yTmq72sUT6aGp1K7pv}LbTBMPNu^@j>BE?tuh+G<_xr-ERCO(OFnrA3 zmoHQ5rw{qQN5U&UG3f6KYlDlz{l1$p0KCqXYTdmZC{j#p1$l$+VV8i;zc5`UUx%rnK(1#NqZG(@9>yWJhKje8->%;$s7q(Q+1~f9`PwDLS03<){V~ z$#QF5d9N6Q(TXY$);Wa`oXL0YBaQ`3lbOf5@k=vpz|9606MTEX4xTHP)BYIUah(LA{6#pXd+Cz5?^(Xk$nK4X>Z`E^0(5q4F7^zX$w2PZW^uKUohSgnZvg?|Kd2xfYZC)o6GwU{ zMM*rujinE2a(|>K3+c*|>o8wPS(2so5OGJs*8Lf+j z+wYPl5wQ`IiB&@q2-tu!u{0|v74gY&reC`sJK8vSg~|FaQjpfdj>kP7tKCtD+nZ#? z$aK0yH@>Oyp^GFp&o4i%&_AC&BDFr7Psh5#?>j*!pLg&ewXHYEtQ=&BF&2;FI)`z7 zYX?C>=bjEo9&S^^(7=Y^bQ+_{!AgnK-RZ;o%pQ%zlHCB;X$eB>$z1gHMd(bhMIKv3 zIEzVX)8ZHnyY?CJ9;cp4vki!LQ3SD|F~_=z@@X`MxARW>WEty_pF)5sH(_$R_Vo1} z278_mSbyd?WZ+O|HaRMdNYvy{g6XDpMa~1PrCFt^+~^F(ODF zw`9$a)_t?7LM##mtUgb(V-0BPPo|~m5<7P9DscM?ojyP#$lXw4Ai`lFVYe6rgCY@r zxTPr)sGTJIRXX_rFi0~7gR|Eqj3UvO1gwAv=#`uKM9gIY*{a!(mG1}cLRg532Hswc zyv&i>`>^0@Yiid?&GHQ9NOA_2PYRy)4W;S8dTKdv5?uSB?LH0*Tv##T_e5%VfW|Wk zFv2#!W`{qWS(wF$nJ|zp?kmjzCDo1AuH$H(mWWjQ7PFjdzQfP}nTz=_l5$-vVhlFi z=M1HsyhZex*vZq5>zx4OuKrY+#qc$$%+@&It8s^sZXQ+g;ArJY)bWt0CG9WklOPfm z=~ykDwbV#8SpksNb28S=e5Xg#ZS?5I-VBWOatO0BN#{v8^Hlk){CO+vcU{HG%wfDw z+i~H~=eMjA5mhrC8^nG{g7j_)%hL+aFar7{e%M7$hf)%6^I87}m}XrOheBD&fSHjZ z!3P;qh#@m8YGBEYmbo`zIAx-Zp5AX+W)u@EX2W14lod6FUcqd`MD&Lsff%y)W5v{v zP89_IYT&?;tsPy--vtqRg;)UcXa*EWi}0N@n-1Co8=4KrDj8&6B*LeccIOl3pynML zVvRHfxxb8lny6)_Rc($iOSG-FvXOfpu7y?{4k6@!6Z$weZx418JY+Z9}d=ouTW=66h z-EZ1yXH!=8vf>~mQONJgNL4^b`!;BgI(dpi4 zyb94H7_c~l6C|rw`>XR9-cTHbEqs1;xHTD8gSGw{buC4X%}Nj+ynypKMe+lo=1WMo zWgs}@)~Zb(Pm3lu)UO=3Y~&>Qa>C*rAf@xl&=IJ;QZI6nx0q2T3*~(^ZQ@roJbF0G znPL}Z_)TZNjq8_6tRKEZ>ufBnUz7creC&kj`wAKY``#pFlzO6FndQn!2m#NAtNIH6_CIU4~-X& z(?d&+lPcgk;}`hc!0>1iLFIE=vvsv=%W5g2$qvU!?{3;f zCK3b<-2x5oBb09q$2w~kJ63~cYWN<<(poiLM400&nb{H?4^KDsH*>?D0fNWE4|FFG z8{87xcbsP*FG?v7i5?&modONzKW7C=yboax;i57oJ89+d+d7--P8ez=joP z7-s@PC2ykej*MVo$iwZ_cS#!!NA*tv7e-;@_~8&>C)S?x@0+!5?m{n5&t7M8e|4lb zB<+2_xBaQ>+d5_?fg2XG>}t2dq#7r-PNwiTbEOaG&GC-pD&1lTxT8SCiCi85qu5)@ zXLjoC;0RsV?(K+ZGm~gsE7?umIh;t#%EHE|+=ZIjl<9w5lFFt5yL|@vc>^+dWG$GT zz&rMRJr0+l-lj!boS8Yhy6JLqe*65f%gI|~ax)0`;JiD4ez)#I061ygeY)-mMubi_ zHb-@T(kCQmo2ctUJ9RO|I6S}NgqZ}_@?&4bzkUph{oY%mu6KLNsQuPIhgbGvU&Swd zk_mCP`N;i%oFqcvPw~fM2&bI*e&AZ`LeRa#6xwxqxj8wRQPf~zXZe`@DaW%_gLj(> zLlrpw_KhumczC#mN<>*2@CCfo#|H>VlQCgK>6w8YR!j733S5Og@S8_xZpBwj2ffzg zoJM;XMob=<%}7Z)CGDdGgsJQvSKl)g#sQcHbi!7W&k>fYBo~k`4=N*w`F8XbD|%o6 znoStR>7=^I+VIUDXeu3KFdEaHOZTr9KG2+2EkTzOy!=uC+dnp=Ewo2OUZ)-=$1-@6 zydDyBH;^k+fBd6A>>_6NT!c=g=VPnPElII7`(xb+&Oq8{3=UeP!j^H@h+0G!!lY8<89d0s;ba_ zZR6m8Tg$T-8Y|Ac`?1L*1jAClrX>I9hB=yHCTub&CH8hGlD~a@eV$?si7PLGU@8hF zOR#OE(fPV?cf|$d*VdZc+nCZ(YFnZ1PonG7FG-o{iqfB36`ACgS8gR+{O=>{z zU8pb?`=n`cqLXCgTbnj)UqTpLdFwArZf)I3WU>D$A zzYj?AGK~}+$<+T1M7mG7Bpu0PI_eTiVSnVQE4oltbPP%cRV$ihsS5y{5N~<4HhdM= z`YMbiT@Ui9VU5ud#=FVl76j!?G0w-}}lW)1dUFlC9?(#V2*%!%0Uju&>6NQl} zE`42QgXx)ZUF$uyG1ejuRS&&@|GO?~$7-dA9XuDB@inNrmxW%G5ydFwFdG7Z@;}5M z-6|UY;r;CUTvC38)(xpANhXcL-E^%L&SF|L@BHUnOnxyTv;7f(bGj?D?>S^l;A!7g zLyuv)yG%@l1{mT}C%I7;^;!KIo_cBLwPK9^X}YtD`xB7$A3*BKzf(mTGCJw5BA7wHp}hHLQ}zTDrQixBddwe580$ z*=K$lQKFFu$vb`n@Q#f1aIb($jbSaHI%B-YkL;@{Ve1<8VolJ>-Ya`*zWfvOWfe0in@r{L zeZ6gJ)ig$7lRY9)uk~#xWcHaR+#9%-riBBu(^-?jmE#m~V!DkDs-4G*qSwx`mPgX_ zO31Io&u}WS->5mcfmk6$>U0Mr0q&IMN0zbqb1+@-3@KJ9aPQ zhil}rJ{Ss~Ktos>wi9|P~Sk6G!T9{QVLU>A10&m0z!eUcz+EYL+5EIYjj3o{;Av# z%n8+;@gIhLHP0{cd|+0!!j=YJ5zI_dxhT`q0gR zY)1CAj?Y7~t^~c^BPxfAg9tPSUX9hp4b!aBhpbOiRz{T>Re8q?>P-NpuPAjFiqV4F z3w(#hswi&OVYRQ^_w{dRAKa@SjJ z(IJ;_pg4`APe(nOy{6FME_1BqoU6Aaui>a6K&+=EC(YwhyG%^%30@WT5&x>R6hF2Y z_9a>f=lYEKCX`M-s>l~jA8epEVnD4AvhS~!VO9C`)X*hYo>ZE<_`XpifP)?51ulT9t?McGwiy)*#mzd0! zq>#JMzYyQ{Egy-}2BG-3G5j3^yChkP6dtjrsE?M@$lZoMeo}<%@th-P6cqhWc;*3u zk>c_injM?F;D1r}jzPACOS*2kR@t_-%C>FWwr$%sR@t^~+qSJ$b!+!My?1wXpL=7^ z|2bmBj1M_7^L^gv;9xG_X_;=|YF^(S8@P`v$%iHUVwhn}+C9AEbnedvklyRj#FNSi z;_g-Q%LMdd?4Y6AaPv)8HmYRhIO0m(MT zk1c4Y5VW}`dt*ZhUEvZHmQub2Z|Gw(V-U;Bn?f=Vly7R1h5Aw=E;uwOu3p44{Ryv! zu4CBR0E9y$9yw-p#@5R~+5D->6ou0@e{SYH_vXq;#^yFhEY!&y<%L(d3%TKemXJ?Jgw#AoYT#>w7Hkfi3rr&peo7VA4 z7p@}G$PbVg*>EjpOF71g5C!ByH$XrkEB1mW@bypkMHqeet1hwY><}qJ(s6V{5R%y> zUQLn14tmAJAhBjmyWRfuBQqIG!0huLX?Q^sxa!boIbA(-Uo6V3&B1&wREMw`$9Yci zZj{VO?7%$=Z#C4WD|e6*q@}ZrMSCpczC5R0)&-4LgZT3lS2hm_>`#PC9t3SQq3+8< zp|He0p7^qcm`*U!U1I>JN~J)Nfhi(-5WL_4XfVxDmvgYw zl*dWZZbHNSPC12Dy3Qzg-Q&oswVri5lH3!4bi}l(__ft2QJ7jn)N%y9;p~Xsq|7+Y z|9F3k%c7zYdD4tJyDx;xS*hGC+$-l!TD3-TkZ*zc-`6* z#bLdXPRjj1Z@eUPvx3tv6B6yNez#p3;-y+cCS~nSOSO#}i77Sv%~Ep|BkGFf76b+? zT49(cyXv*vGTss255dab?mSp8o)g> zY6pI>5U&*j$8cfjbboR8jibHaye9dd{=i^G=;p8L_28G%e6M`}7c=3NpIRI4SG_Os zkC|{E{=bVa{GTYy%?&r4#+6*|XX8Q0=m|QfY(Ubv;vSaLlPFm0_A* z#u%J66akZv@9v$ldun^^jAGL!4PL)8juXz6_ww<}8+sP0;|iwE4z$XPm(?8}pU)5Q z&sWi0Z4n*#>HehjJ=^^60nHH6NJ7$J#+3W05;!jO&)etdj7E2O6G9kUR6;3(;~_vz zqb!mZsm)M~i3H8MM}_Hr^qa`V6NN+4s4k}=n?$FSr*r|0ko_Ezvd`?_AekimZdmWQ zd(Rm9lkOZ)!MlK&C1ZlciJ(>WcKh07Np9iT3(di+Z(qWM6QlE zpTvHTgh*k^Znqh|U73geRN4YG4rpYAkM6p{n1FG1=OKm;wMvy*LH4}&{TQ;~oLK>P z8aa?9@E)~(e|)QSf5&o(eGWy9^i!30#6ps!i9=nbleuAf$g7|Tt0-8k?3an28_+zP z)Jsnf{l*m8jMR5Jt{QcB87K?iHR^Z6CZ=Fkl6Y+pvQtr0N#|1qvjdPGvmvORa}j1V zcDz<(<)@I6*h!^mQmn+Jnn+5unCE82K2|HaPByuKzCqe(XA*f2%hobfFcq|Pu*Nby zq2X*9CfagIGl`+IXm7S>aHfWKVgk>|-qg=np0q6XOEw)iax8%=7 zwlfsu#JCtI@5jYx=5eCvKDQ1F>R+Qhn~nSu7S+n|-Xb#!2JsU8UO_H^*C)CX z;1sOgGGz!3fGKJA;lC!Lha6AOVXNMg(az3RUlvp8o4b-UEae2ZvSMclR}{S&h^Y`K z0|Fx0WTV)=%eV>PM*$_A&!NA6wKchQu?t{feITw7|3 zvCq8M8a`XcEE?wL3ANEiZ;sb#L1kuqYN)d>&J@fxq3&;I!0u8_S+EnEl%vryujNht z;mr06K51A!bpK{ylu2i4XCe>MQUfed#wN0*l44ufbJvNou+}AmI`*Wmi@x=$tIMs; zM46~92)BFF zK~`yQeM=s2LmtMizPef{$npHL-Nr!}+uFs==$_}wYqMjKRp|41!tLZwgMNlx4(-*A z$Nt>A`r5{|x~v;`t8)Q%_=Db~6@`FeulLF+b{PoC12WhDjbX+paShKYhAox+7Pb>9 z%)+*ri-&~TnMrFyDCP!AD8@FinyP-NRQrh_g<@36@(Aw!2*yMXPyK2uou64^l0cfr zir^qV`%o!rVf$m;9p$n#>MyaO*yl|tCcKmje94C0L3dk14lGaViX>XNnd$5~>Pgxv z3Jz3MTcg7hE5Xbh7y23(XIVz)RTq+cVxbR7@9n7Y9wF*vrk`ukEIn&yPe(GfY=qGOG^FJPTaI zwPx@mMd0hnzMG{w_2r0)vtGTFDnmS(?>&N9ExFv!f=azf{%E)s!^81Ro98wR2FH`^ z8mo(XEz1CF8Z23XWJ^^OD+TnLVCqmM#5N(wMOe$yAYU@i#5gmA26MgJHiNZ`#1Q-LfD`^#Ep2?we_R;iHwIdryR>W z!VP-e7<&e<>XC;WVy5melhnxz^EC+Y{;CCeujj%@RL z0Z*mkG&#mBi?)n4yOF(pId{7#MY8u`@M1>syXUaPyz#$%F7~u?c#xf=P9mGJQqyND zy60As@d6=H68;7={d(zvflp4#9`1}x4nhj*Z3WfW|{evYW10q|N&AxtH34PI8+d<#KZ?8$kIb+&5vP((Jx81uk)bA(lK=bKV+w z9tPM_?NbXD+?B~0sDmjCwtT!x9imkeUTA07E~}m@f~AMgFUjN&LGKxZ4VXy#Dob6r z$H3gEXOyzCb=f$KGJkTLK|!8* zDFpGzSr6PCLp7$l)Qbcvjb`p9G=B6#n_ok)?0^{)S1#1e?RT+B7#;`R*eyvJY8jdw z&b^Qt3M+$Tyiq?nJ%No@0$)g=py@K>|3T6R$lc@xLr8{Hs90DV8#f*FRv*EkTHWeq zMW6FU3q~=ipqVeKscQ+Y4aw?`j9mD2n6tLt?Z$ZB z&QGt?>M_3c^o*bAufai$gcZ1MioA z-;$%YNVFj8Z5(*)rp@;q-2O(;h73CB^cAIpSFC!@lnR0A7fvK@R$TCx_M;K#52b6f zCV;(!v?azAbmnpz4pmB#LJmU#SpBcqBYpkkx*Ly^R8M#T(%S}QcMD71>0!6=s66p`$|ytQQ=0r51JOP-nQDD zco&z6IUhffT>F`4;Km|=KH5+6VvSM2$vLn`z35BWZc}KPHTl*klZKhDF~7dQM@FAxTv%Ck3$(ZPz3>v`7yFLs8mMp{9XjNlzlC zw=PVXX(g%+^qppp#j_0rTj1T#BD$-)D-&aS|KI>H^6J1!`~4y(?V6j!meQQWehO7J zJw6qT1Vm=RoLQayG@H&_v)UAx1k&oJ#ma4n4HW+d!u2dUp3U+mC_Fi~3i>qzXc(*g zOv>2sGf^VFdbD)tz?FO(H^Jz*j`utn8`!`y3)s50yP(HpxDdH*m!|LW>CTjfk3x* zP*WU;nwS0*2NDE4A2?&@>%q({AEWU3XHAcxtvxIKKpyG$E~6Nv(Olq{De==?7#nzg zG?^|u!;dHWyg@E4*e&iOZ$x^Qvycdt*d0X`^@_r6NQHELOU`bnkh^Oz8rkRc$Pl#zvmW5CNo#aHm6 z;3bvrCrYL!E?C-VhG_a+;1*8S5D88LOH><2GHw0dxd(!q3nmaz%mpXWxPTQh0k}}bde%jw}r2a4Pw;c!B zc?W-uOF$@{0W0I@jL1eVX=mG{Z&G~34q!TYO$z#?6@5MXVd3(dF0>AQhK2TCUOH}D zYQwFCQ{>4*Odv*$MdK9j(+`PB^7(!ywdU`u;b1pHw}L?NC+aG~>Z@IGUDZ+vlqsCH zViX)(kS=heT-w^5`^aliWsJ{rE?VR(F3a_LG0 zxL^<+GuPSuCTe)n>N)QxM4@(fEDyBK-!mNJ?F-s60$~*-03JocF1_Wh;PGG~$b`mpXWsrSwX%-vN3cxbMiIhnaH`K!aIG=2 zqMF8}>hQM~TU&+sr&m^j%_OUy$c-Ce(su+!Cv(=geco3VP^*Nj+X8MAim_W;uWq1^ z8TW7_wvY^TM~s&`de83r>Pn1QbFubr{m(fE)m;v5f6zS)NE#Pgpf>++WY6W@jVxM< zz2(7^O?qIg2E*E#qFqXa(P6_rTHxB z?n#9O*uHXnsS>Uk5XBa{0`~J`wh<9cZ^nB4{87^)tWus+P$IfRppTaNV!W5TQo;1W zK1Nl4vUWVQf0$+ zE}i)l%*4(gm$JV7uWQtHTCW0A?dT(pV6k$T(JbFDkezF@{k+d@<^$+$0IXxq1Cr}r z%aw)H5QVn%Dt_CF9#T$3huMj`8t9_GqdzzgXk>W&9LSIZ5o zv4fA$xq<6!qtQw~x+0PyR&ch_6hj9gHS31`{-YYP1S-!;TMX^Ry=y~WYfvEZC=7C3 zI}+hZ4OzG>0iuG68VRtZIq+m_0CQ?CP+`viWbSJKnW+{TcYNlkivqe*pZdM>$%`rR zblLN5e0PB}g-=%mJ2Yr~otRS~f%Wz=9{URQTj-HDUa86!NL*w1S_=v)Uqt2wh{YnO zOY8+``dfI)vYnSk$-CwDO56Z`w+UkyT?0Z#kK#*#|<4zUhcYr z(I<))7YektmjfkuGBx$qLs*jOKhD%o06}-pR~`-op~!3W#WO{8LzhEIiWB$o0D|`6 z?pw+Vw$+8a}&(6YPb@tcO15a z?kq_&l2HqZ<%QyTO%4-f0Z$IlN8GO$fDf|Yaj@1p^n+uJ)10Ixp~P_~WS1--^V z*(-aIbV9@PPk&wi0^aQO)>OF8@2_ama+q0`9vw3#pnxzhNWv%7g;&*-v1S?kca zpcjx}k)nqOol*BO`gop)6o7>jNi*hG@Pm@&h_|v4egHR#Qi;^W&HCu;k4QMz;-QGw z8|9@$m6BLZxNfIWEojq|aQPekCQ+r#bNjXe5A%-Ox$q;WAsbXXT7@=I)d{lX;J1Mg ztqL8wU}d*Yw?8p3&&LWbqGDXy+)dsLMprV{ek2d%OVKhv2$*=VJK5$+X!s>Z?_Qiz$`*BT42>da{+zuo9cW8z&Uni+cp()2Rst}Aplo&M=^(Ie(nJ#{A!Rv& z{7ibp)E4Epm_}6-sW24zDcV#u>1W&qom;`g7S|?TdL}(aKPT;r(!0szkgK^aBT?5| zjv0wldN-Ww%HS)0j}hNJyB&Z!&_(pS!laJVSuqga7CGnAvyjk~OC!NFm}x8JfJds^ zxW2d{w=Ol{sn_j3Z$(t-?2ng6Mi+}N!ls+J-Gp%$_43m=>hrQjYT^OhRWA25iq$<4 zxHmROqpRA)&i=|Gn>h^-^L>!z33{2hvIB{Bpk`wf&Bj;WkfXXx;3sFP7CYLiSvdCx zDv=^^G77DD0k)*5aD4oFbKhf`c5~JTR9S8pQTP$nkq2{I{^f=99aSkGFujf-$g@T$ zfQB)jx#fkl!;ZuddM3PesWy#t(7e?Ew57;6rIz%p*d!qeOAo5dW%(391ikWTh`}vK z|J;F*ovbJSlAC_R!M$4C2CkwU0j+x07H!(SNy`ZGm=J3YcGY}?r4-mmVXEYjDSgcl zDPM+Z8y#O66|5LazL+)xv3)8nIWY=2k#jzI*%{bZ(vtDM;;*vl5(bY+!kW8^-!_*z zCz?U_+No5%noW^c;~(d5vN{P9EWIXX_+As3XMZg)vVry8OUAGThxjbt7#&5GKvMq!CCcjkl)LY`?HbY=hC;~arBmT83s_j z8}0B_FUM2M%=kCurb>Mqs1wx%ER-g@@8%02#PtFJ5`^low;Zf0{%A5MIt5ZwX2ix8 zHGQe=Uo50Dv?dpYgUASLO~{@OZEEsD&Psf;aOaO;z`iIfz^Fg4kLRNWC}n~TDWjTf-}L096P)n1IHEs^ATs;ZQ<|)gNMr3Q)EnMRpxz1wg8n0BE><+THj` zu*1vrK^{a9K*Q3@0fNH`0_gp8!h9gaXQ+vjT+~=}i)XW|lq=QiXlYlG-U@dDC=7-> z?-72vvQq>P`b9YAY31iiP(BTP5h|S}_(qdKDtelK@e^NuGMTvgSn8+`kn5qc0y0-m z@Hj>AAS+}Ap|0NqlS+&Gn$Y9#bb_n+IRH?xYBf8TQ_0$5V0o|lJwbAYc;sx z)?t85Qq0IUDV4nJbYpjZWq}oTUhMV)nOmdCkhoE%`D29IZznw-F?b`;D+E{n3eZ}> zSa_59W(4bzbSSe9fGAuh#6kkwL@eF96GpPmhPITd1eeefP&&hxIOn!gIw|yVuT*(+ z$4&DbYc?{rAH<-}kBG%{A8H`H^Pa%R5WZM0JKNCqbg7f+N3QnP=@ab`Zlqk@Q<1AE z4jGVB6%Kg8LJh&Sm^p{=rb*d8m9#sf`DQ=~M(71&bzdG)k3#qZ!i%AqUn}0(TbpV~rb0i4DY`00oQ+y*N3~ zRL8+FH3==%RR%~3u!mwJ(Up(@i4ZH$H{~HgLXRSYL#XDu61>Ry5Qj%&f*uY;TcqHL z6w=%E$*Ccg@SUm#v}->()dV!DHqX$bC>IWz#pjO3Qoaao)~kpfl3#ya9JeAk&(~t5 zps9eec1u0pN%IR|YX0zDnC3*>H4V=dCB#FD6xg1%W)sM`s5++TGFhZ1gt;<@%ZCI$ z1rahmN=iB7&FBKk0s-$Q;T_(_+%%n12C5J7>3$L%T?849M;`bUG(ihfX82_~cxKqC zGDQH+CiwkUy)zJFrbq9rO0-lRB#Idkd-@P ze$j*I>$tH%vLpHCKni(%Y+Ci>9}gBVaw<$ONB@>_WZ6Ot;52nHdV zhI-N(F?ZdsB{}&U_Mt2yLaN?B{TXz0;aI8UR_*c7GC9(VJ2+*`Q5cnjCd*rLcI2Mi zv)Yd#`~}Xmw6yG^2<~?Y%MeJbH;3zXdr>hUg~xqGi9t;ewlV?bJXF&{z<9;2g5P3h zIIBkowM)4ra|bX-S$JvUXlg8nMyQ~a8VG_i_o7S}F_e_fKVEld`n!0SkN=_^5B%69s+abU`Sp8EWJ> zqBT++NtM{pU0EIpsfj8gj6?)0`E!qJDcne=b$kJzcdhyKf5@T#WK#H*z|DwoUt_h7 zSMQa;;raN)>h`eNsfKAKkMoswmtNij-5#KVI!!a9t4lr*Kdc=I+e#W$pAVO6Z;)&I zmpYhPLc9ZJbd~2X!%fMfLzMSBS~9G)T`G}GGIE(IF3Z3 zf!d3)x7-d_C%HFc>)@&Nq!Dd{eYe<^C07P>3E(DS4r79_SI1!jRE0$|4^B z3jBe8lj1gkJIK~jvaWIb+5{%xAj(yI6oR|mYU&u2sM(f-@H{GlP}jVlD-bm}`%ywG z%IIMT`>X(nBygT1xIpm_asVodU`q{XOZM&Od6*49a2YS2vyI|8BoLcVnj`BRfLO^< zEcOq%^(b;fc8tq6lK)tCQHif0gR@WtysUoTDiOVa$?1 za2r&`2d~SCRF8-#m~@%R>Kzz7FOJVL!@oU^G@QA#vjA)RUF^tf^4)A6?1j;BL?LZA zENa4dvvE^tZV8Z5cIaWoGuLe6)_R6u<{EV99DXR20^wco)Yd=mja*tq(NN$HeI5H_4e8@s}(~0Z zP3-0HH~y`q=bvp10Dz$%t@Fm z=;YvR_(Sth`uR`(Ul>J_wBtG*e8|n@EnYLv8WUUJG|U0U`7A{!fZ|771szmr9Z4)P z5L4o}&e-t)vRR_wGyaX*$K5s28mM^g7?6KtaEFq6iisF{giXVo)okakKwk~YpYd#{ zgoBJoQ&#>mLc%-ZkWTnihnEc%ecfO6IQ0fa1|)HZTMeaqZnffda!C#Kqt+EmR(w!W z#^b2Bf>7a<1aS_e$!bLrP-hvX8zz6$q!}{=G7u;TIKa}pdZPtc5^GZ-YKlS4Hj29J zIDm^>$qM-L$;UMyHUOKDy{Pxh1r`y9_|IS#jWP>r8?xtrETA0Z%v1&7(5q)$txG&7 zsfo11EwU6*?zlvY3#*#)7Pcl>Tm%X|TwGu*G+orIb$AIP5poIWy3&HYt2H^AQQ*}e zvtGzE_lC9n=+Z*^Qe8MPd3j((Ae`2%A0*7n^-}c4O*dxCUuHw|$Rrz0I*^es7N&10 zW(<&%j2>V3(>nN;Qr}fh1)C+sV>DfGXPT0F+BIN7?7+W|cD<7VT@QD0*hT|tF(al) zP;>O_An+Q!fuL?6p>BYGf4Q;rTyD)RaFQ)tT0b;_JA(h6A@d(Q z?0=O+$~oBD89O+c8$14U#SLj#%5I1u|BV^+Mc4X~@>?O!(~uBUFcn%fQrE^=bx{7L ztFuL<^|_j4gQNWV*sjZN5zG=-jSjNDyz4s2YI8g}^2>;A1Rpfz?xNKiaq{!%9sltB z@NC94y+<6h8%@D(bJI}d17v`{tnEFNR(4RLHC-Pntv?f1;&8;}$rD#mNGFk6^Q94BGH z%qIbv;`=&yj$oe+-A<^G(VTz&+O-jut(oSQUiI4w!-x`mMz={;T*jk zy~iNHd#DU*xAmBduV7W zI{CArfjGHQC(9pSbyY&IT(+(Rkc?7=G-p?6xUVK;l6^RBGB&-9EMI6qk9e)!t`G@w z)BEU&3&!txY}16x7^msqA;00YLfK#ZT3uQ^TUyp7KyV=PB2muX^}B1MK(Wi-dhQvQ z+xN7|OjcZ}YCi__N?F>fd>3NhmHszjB#5nQ)N5I>2Dn_x(L<bTa6Hd=J4$}>ODO-wij z*4POnG!j}CC37}%ZpEKa{FoR7yzGHwVowNj=KpK{!(-hptK=5evHPQ~MUyC48fqoit z&g`64;r;8(up@V&xq_mrx?UzrAQ|UD0`@9s(pbMxfXd|N362de6ez;ly%kylVK{u*@ptO`Q-u_jltoAuw9)FYyXhgN_`Wtka_F*-SRNkeB%c@ z(D?uiuv#yzOERCY%kjW&V@HuhbEtL)XGAWXsYp0#%5AGn zO?*&BNFt-LJ*SZ4HqMy^K|qOG;`Z2$xDDVK`Vrc)Fa78}EKPumwt1;uh$FoWJ~yP2 zTywRgLf(wbB6-?6iQVV%z`bw9ipPdWN-uFhV9&{~n7Tj|WjL2zz@5B0QD-^CT7Ey` zW73+f)@2D%!EF%rsVX~~?Ar?xrUjNo$WR}X-YNu5K6YP$=Hr{-O^U|lXKEQ^uXMe5 zw@q+ffqfUi9`|Q~In=gv!B6P92oXHYU*i`hVH|Is?j+!r%pessY2w|VtOqDT z3ypTV!S%ZUgA>!}u{d9n>9wUNh~6jqW9C{Z;irHm%>38s;sCEC?iT%h8dzWefXbf< zW4?bYQ&Kc``0++J_xKM0&OdLiE@f@obvk5k(S6=cV+AZqI~KDFRE5HrX3Rth`Fw?? zIdE2VI_b+%7yOOIZyruB;>t=;rYTyP%MbhMwr-cOE>kYz-XZvCrCm>+zNjz_p46E+ z{6m30HUp)6|6ag!hr6hDp>nVkqaiR^x&mxwTN=aIpa=&Q&n9=_zbIshjv9Azx!|V( zp7MNY?~GX0KkZh1@$^*@q42};&ao0 zamfks^UGl3>Rj&I=sfPrN>b~RW(fiea=)aorHJwC2rFsz`Eh*Gjq*gvPeG`FbemkF z(_P{$(wfq4nnB^h<&wm@8eS`l_F4&Z2))zn*1^RWwaw7@qCs*c)Et=K^m&fgcA?SJ zP3%{LH7t^k=R+LPegI~{4NSi30qNlh`0^QV5i}I#A1o?FgekibaqOVNZWSi#xY}G+ z=@uj;lJukv*>;R4Bh7`k*nz_cLib{BLZm$-V|PuE!nN1!szpdp^^f35`go|J(2wCC zTxgd8;7~dm^-9HrOsXPDrD*4Ap*f*fSnd47YDC1|I?0>5Y{ohl>AIzYD zzLma>p}CFeKeyVIs=Vz63%n0p+&AB;xQn*A3+H8D^(>2d9jvAzF$O&TC@{$!gQB>S z__#gGVb4uW((kd9cy`B!T4^{I;q5Kg9UONq6sC6xB#|Jg&fw{Ja$_b_2M;eNufYZZ zF=?BLEK6G&^Wp2D&vR{tBH2=dg(eWnongWU8DS-p-z(fdm!`y(c4vo&?mZLBuS~*% zMe+yv(WvM2(&ZYTkEh9~$Bvtqt^eSyN50JHXWRMP9+LO_O?` zEOiVyjsw8#V8A8D9_Z1m882KhP+NU~TdJ$5cP4vDkOt5{^ml>k+i-BMj9w5c~D{=3pT?{GxiF zuA`CGjbKfdCGxCa8mLQA(J9#ske)--rmlxXvgsG(7;mi&USmn*#)C=j-o~))jOYj> zBlxdva`A`3&y2-o-!A#icM0B9Z}Wihjx69$!HxipVo7Z-)W>#y!(=sZ`YRejCp9Ci zUmMtvD44noV<#`PKiQ%FDx0=o`0O=6-tHhNNs?^Pz`fzh$o2w(?>ZH`0}(rCB-CO9 zt-^11WSys=_kix))l7dS*1@z+g3;op!)Ec9QYjCm+rL7GjyZa28aB-WC=Kk?idR*1 zbb&0Rph;gz+Qw&~hZ)76Z~%%^v;9xM+L$3|^)cb0M&V51)B74@^5|?SWM(k zvg<9Q2^ihDdU#dduI5YaNMrY&ZHMU#mZ_A446fCi62Yp){EZ3LJUYbBGv>yz*ENeQN#fL|8 z!z%OQn~|>d7Rrs!=`EP8>`A(Mf~hk9T<1T-YkX&t~D z_Upwj;)cu+)2_2r9op)Nd_=a1HwDW+9bl}KMx0j;SK`+);IjgtwwI4!D8W2XqiX3R zGiZ7XP>mY#lt6CpB851oSm8D{E0)wLs<&h9huof!(q; zAaK?G)?Q0?em4)cXWTP!-Ehj>`yTtUCGOza0A>2PXd#g%$m2f4v-U>$gkl|3cbg!T zRvCTVEIfS&bN8zrp<{wqKmuD4vhHAR19568x-R-H`xpRXJL+aiv=H*KH@r}=E_YjJ zx-chmJ@8*Vh#!oixeEnlPdwla4GgGCu5GZc6wq(nQft0aGO>s#j(p; zefB}?lio6NQqDL!m9v(f$k+f$ELxJ|MIw85&6{MDtm#b5$K&3bb-==sK3{%T@{5YQ zEvGZ}Ihe%!?nl7Ln{Jr*U%~;r=h*t5`~wgAVn-b2{J)~}9@1Z&*e&XHwz|m0btq0v zkSqv^EqX{U)^jwd-F>KgAh4~O&zsaIZ#^pypM2aaNo%!c@suu9^?07mF&*1`CZQ#C z@sgKA_PmJprF6!jK?N@ETI1l8;ms8~ad&i$OusGgjLfg<8nXg>r*Uf?`D6-kWEJlklZ7q=Nq8PH{SE$kRQ(0i@1JO(UJx1_+} z>^3;A6SA2vHboIzOWx{ObG&e1z=eq}bE3jE@Ttg8<xu{z*-(aDGQzH!mD6 z1&JM!E%!HeiQZ#w|D{h$&0Jr_%xsIANN}!m>?MwaDGx3ZKLwM0{`*t`_`NUw+_`MV zJHYwWHT$+Y7c?ex=yWZ?RsVwV_6zI3=L#|j6k@qQc{wyJ0095Lx3~Tqnew06LX(R1 zKeB}{T>NkUrHDRQ1#_C(yf7m;^MwN7Wl}!vJUnRRMyHfDu>y(t@P^)RZ`UMbNtKNB zHOkc#;Vtf$O)B;K*NBqdLW#dcV-0M;I)0FFaIkPfIugdKEy@H@J#t*3SY_3p6lM=0 zmZzh)me){c-|lxVID+Ouzx%f*TnQ_Z0{;9N0CpMtC5}wNh}{!`=0Tu5Ew27S43CYQ zRN+o)fNH8`$#OLs#}e4&PdHaeFmyc%Fi@eipMj-!GgrZytXg@cO+o}S2!`lFE!@wP zHglvmI;k**HFd2`Ag7|s41(1FWV5~-sIMk&eLY8Yjk=ECGl%*Ar2HrlhObSJs(qS{We@ zeCD1#-aw?8h*SZ|Z4hXp8BOAbxHKYFz*giqBu)Ii8IdKAXl5Qp2h{s%+_68+n$G2uQ1R?G{W{Jc(SZW3m^Uw`2}Es-&5` zvPGYt(_dRbj+-9}B&xy=@1Hg~!wiX#sznlf*%s;gZF}wBo1a`g-qdss89l%V{0xECb0?xb4zY?I`7p|b(pi)IA+cr+LiPsuY3+V z1C_2&6f2tm``!w~^t|g%VewGwcGP@B-T5w5=YQ=$iG*Uhsc;ka8g7KMYR!-r~6!a1!k(oT{p?^Er(4zUkv>-ykJ=nc}OgcKolHy$C zH-f89m2)=fBs|E-hyV`R?)O(mL;#gUDN8WIEo~a`I~s9u*sG+w|3PAvWD=9RiozV1 zRwPym4SwUO_xKRaEmkv}S8t<;ojz=lt7_xrC==xYt;43Ra?!%8WHA%Jr-QcKbl4Fuv`Rs|h^sGbZ?4pR z{e<_5Hkp0$xOlr#f;sdmUNN^84qV>LIXR)_UKpB|Yb0wsQ3yxuPA~?xz2GuEuQnl! z5hCliy9?74z-gAX_O_flwg(dn+{0^n=HNSc*q^o{`d!{@iV$?;+AEKR#}LXEcHvqq zhjHE+$eVuiN3h`88^&IjVbvnE4haA`mxRVVvg_pK)3k7O&ksJGypOkuT>EljZN{hp|}GlU67Fc#8`B6ZdI$#L`^(!`BzS!U3Fy`G|FC*Mzm9`SNzP z_3Txo&C%u1MKH&nsgwbYZk{)THp}cM1p}h-4B7#^+5>XwshJAhGp-C0lJbCNC^uGQ z_Z7XVH2WmYL&<}t#jYdI0kInw4oxSmFTBqe!_SJjuAx}pf30jdxma$zwt&aWpOt<2 zlQXjXTPs`D*1_`U^Y=eGaz)A;GFbHRKUF3?k&h&~^P~Cl|A(@73eGit)&*m0#kOtR zSV>lF+gY(~+qP}nPF8H&`Ql`<|8vf+Q&TlHdoJFax2mhV`ghS?T@UD}Bq{wSM5xH- zh?~6`XX=>TY$kKaiqO8d@5m29NR^im$0r03Eh8oLZ9Z%%>GOUsCF9_U=> zWn$tEt-6~TucLDgB=M$M>0u?0Y};RhSl81IgJWfNv*6Oxbyx{oh(<|b6m&zcZKc(h zdkF6qT@}wM1kNGnnxC}J&W(!se1I|bXNdd{Lz_=fIj!2>hq@x-;L=P%f|4X=b-tsd z8r(*lcNDd`JW}BLSNeD^)?6QnFY>lx4uS!czDN%XY>zt7jBCR(>2dKfz)v2xf$x$U z(;34|zh1z`f|cM-Jmp}Q7h(ak|G~`odMuJMj(m9?R8Nin!bI7%@3bP1@&3-X)G>Yc zT5Xx+Udw&^=6QHH6y6}d;opfLKo}+`))#2Pd^1{3_u*vTYuu}nV{@@1lB!R@9-`r7 z^T7C8^V^xyl7@oTo4*)7DE|Jb2;DIuV|2|8*z5s3i-Tde%X_NbYD?Z))A^x(dEO$9 zJxAaA`G-}urSM+#mr8c%cuFXCFErR0xK|a|c*Vt?J(?B=l{)MCh3Spfu#-j#ziqDE zEP@LU8#8OjZHPDRscn;;u}Y5W8r;1ZNo-NPqCLxjfjVb z&+U^x(}jP+FIRZa{m=NSxN4=rkw0fH-PkS~>oEmPZRkJNo9^vm%bTzN!=CuRZb+QW z=MV%xQ{f)t|L6*>r25Ie^x3vfQu5@!FOTPW1?9mi2{JQ*fM`!BK~Z4~3eU*x^H z;T4Su)MT((x;i7+mgidDWZjo-a5c|dv2O;xu7#AkcFP}@%VG2g zALvLvvLWQ%sY(X*s?!dkvceYd#@N#Z77j*6dszh_c4q47NYu5wXT6Djeo!h zljo0xNMg}~l(L6{pdv!ilpVfO!3pEqX*5Dj&`uSrg)bIdsgCUl@S|nX z8u+N^=`@UYua!^^qk5b%#NXD3NEH@^_Q)}d;u{3>Ot@hB2w}QN&(CWfxqO%fmszUl zYS(igJeGaewmlVBaYrQN^oX-mGL|`F)2R-<=%}o6cj^t%2h~fZO`@58eE`eZfxi-y z8)9mgit-Q^HxJ|~-ugun>Cy7>_qW7xZt!;+n3OD)ly@x#yaS5FJDWocI@9OeOE$gW zO0>HE@~ZAt28$(XD6T}&Br+qz9p)X+u&n!fA?N36o8;MJK0o^y>LQV~al|7c;^(JX z{qn2K&WUPZY1}v?V59{8Q8@nXsPFJe*ea!E-Y#Ow)Ymx|;jKZ^bLoMhIXfftH&5c& z-dP_T7Q0)0@*4)zbXKrV(|d38ycN9JbpecoS=g1cce|eHSF<=IyOw~kyscxifQ*t= zJgW?;6Bl!8N;@w{D#r2sAc>&1!kY|0ZhbMtn9aqK#)$REN9eV5bg1dEag-nLxwnzS zEly#&4_3|;e{HHMY5n zCwKE2iAy5Nw zhpL2z}f;DUSY?`oQVSNbeQcs}xJj=+qwbttd1_f2@oF*w+sq1xt#B$$gO|liP z%YfHSb6k1IGvtjHa?Y7UXST&BX&Qkz#JM1w&IVV|?em%H#1+=de~kMcCRR-KOY zuO|8@l25!!G9ZKU>F=vsj!y3h{`cAj1oZy|W)b|qt!)k_j&{xtMkbE`jp~B>5BSVO z=+DjRPmsxvy%N>`cd*kB?uv>2zrbB8ak939gh;{9DPEz!Aj?G7RbVA`JvY3EbFENu zka9%j!?kW?D*xygKb7*oLaUNp7<=;R$+=!0P z)m9t*WsbD_RY>y}sklc%GL=9^mNhCI2 zV&TDM3h=^dOldrS>oP-pcA`Ui+TRfhN~?vEY%qRLWl|p;l<`q4*ifphwDI|Gtlt0K zF7m&+Dw;oS^7{GyhwWniPrDkaq<&9GH6I))3Ib&&O)&@WFJ&zqCM==yNJvP4XNm?# z6)drCOm!tK!E^^ifw01pQMt5-w}-R82|_Sn#0fJmk#h-<{i~s^m&_OLSM8tcTNfvw z9he0Fe-v2Zd|=DP@>AXU|F}Sw{}g!XWtCVUxqN$)9`=eD)mg8Cx0T|j*3oGSiqzG# z3odG6SP+mI7N8zbaNYR*$(6oaO|Qep_c_#qbBCQzDs?>WC_s_;+xPYLq4tTsR?Y*2 zDH1gI6uw<9lEUFt*g*LZHn>BRVnkNu9BBzpit=u~abH*{&Qa7BeY7$*SU7>yRqBpj zyA#~`&ngim>Uj#?;cvr(7pRz07uqmx;;ES+73!gmb)KX8LZI*w)Y5v)GCA1p8zg^;f}wHz~6;1sL~+ZnggtU2!vfjFG6lS ze0|gf)m%^t_ORk#oX_oatZCN|TGSHid(18=ciwWXmiJ|bc)Sj8K98rUA+k#I1vRyG z2dd%NE-)D)!axRWvBa0xwT7{*MNPKdH{CYgH~Z3Svdvw9b3a&dovvXA zJn(7=4(n{J;lZDKSPK4K=gus2=sn2{P*Yht6<1mwtQWFu(UumvVaCPM^;$WrvV}yj zZwhOKXX5GU0r1^Z;JORMM=m_dD~X%x@Xbc#Hb|2QF$(M_PC|H zp0iJ9A_{QpT|VBmgJ?`+P)@?!dO_%iXXxp7A%Fl>MFxje?s+zNZ@y@#P_Zn;Ck(*m zFZmWPU3Q}LdO~9CEfJu^jnPkEnfZjy6uS>xNAD()T#{VX)4%4|0~BT)7$kF=5l9$Z zu8)6FI_{CS+yF1DAPg`=^9eqo)D@WF zr`wHml6=6_*|hzIKMBD~_qfwMc;2Ym;C5?YKW?^@ZjB1akp2lY{JkwKmEK0C-dtxw z-?60_W%6-NY2o-J$sIii@NK^>uSco!B5|SD))fkeH0CLqAv##wgE+-0vEsC@rlZ#%8 z|B+`pKBd7Uid(|Q1ZVn6RD3)&G#zoL>1`+L~7bP>-^U2DYGcUU^ma+p*ne189{TOGM^Cs-Q^ihy1F@uXoCo~hit4X56P>Q9!b{r z_fB&7#vZcQ1UK`Ct2&v2XU|3^oMv>1v|xn7^dhMSSxz5N!7ER|l@rwFA0mhVVmQ`( z9|^ddq)z-wmw0fgCO&Vj+;dZ#Te*HmsvDb~ z@_(FLb^L$qSxI%sIk>cs=!xDl+TB?sQ%1I?BB$*`%_qIzj!uOAQLyRKk(kLwaFd+><+{+#Ep(v0&ikn=l_k zHK~@zk|Y!`k`-K%+$1(;v0fdeO=#XlH&6ArExfk20r2OA%xg-TQmG55&2qMo2Y_wb zmQu?;uk@&=wYZe$ku(w>f48~}Tj2FsPa|7GSWQEM!+6#e&x|tp4%zvY)OGP^8%3P> zaJEO1y+a9-%o++&0yIMU>c0xwks6DLq!;nHZ$?d1@aZjJ63ni&wM%UMIy(6 z{Im68@^m@F9}e!<&^xbe^;&Cqkx#R)(W>2$nl#F>aIxx z#;!K{jhlE*r9I=%pwHFJ7opTz7S>qAI?Zj!fmNDD?`a1gG?&HN%OIo7z}7d9vF4Z% z&fs>n_*dbXnBChJ63L=AMqb((eH3x-8WYN5Fz2@N%UIH{4<70#7wfzEwPcRBbvw5y zdaGN{w(r4RaHa_5;Y}5^HxSLM;^yRwbkCoxft}eVoH3s|DGs(wB_5^Yy-bd~?OGkU3`M)9 z(O)3h@(?n4en+`}ftml4__WD2Wp@$T@T!cGy{79$v~lqDb4gpL12h8^DO?M`ya?g2_v?HyokB8FoI-t+EE`O0;*+xd zEL@Y-uM$mcR-2?990B0-L-ozdv*PO@PQs!ceKVF>{Mdd7a?H78Paa-F4mEuxJ~g~H z7VAPQkIDQkDswcqVu1ak2gy>V+BXEm$MP|P1}RrzLXTpdhJ#C0@%!)Zje>7s98thjQGKz?Hlkv#V-9Z)LQ=`M)1Te$H^hv zU8QQalTz*vU1i0l(k5o8xQ5BGor%_2B{jj_VWs+62CvyS?m}_1S}Un4j!Xy5`*k;< z`W@E&y2NEl>z^s|*KoZRWOR-)luM~m@7bVVIW(hl&hmhN$F z?r85NwHO+rZVC$TYO?Yl0fkGs3P&~zeEg2VDlaHk2OVP}^6{qaS|EwWd!&i0D&BIZ z3kTH}>U)EfOt;nG0E}z~lvI(syhfn)6wn=QfY8k_`~q6o ziT;j>?$KmH`x2pQlbOq4sLO)s>gqIk6MDuY!r^9$tjDgaTZ|f;l_LP&1k3B!!Z+q? z!At?2Q0A{DfjrDrrQqnH)P$L=X#EA@^l9MLxj6riz=q7L^l^&ox^j2Z!Caaq)n)7{ zO@d_1J~HMt7wlLCxLxUmy0z^L64R`=;eLOdj?U|@+{bvhjPV|x)CrB(xop^?q&u~m z(59}j2}?|P)@BvK9a$A^)-AL{h2Pc*{4Zz@ zwT{IMSh_a564w6Bt=cI@drE@2qWZA}F=9vDtH%qjWCHA=V&8rvr?el@I;nuZlhuNL`oJyAeX<$|emIBNYA%ZBzMG^Q zUNs3OypP}=&{Y8Da15zsI4+ye=h&)iQ~xrM-ZoBi1T)>A#KE|frD5Pp`m<&4PLdIc z^qc;ZqQ}xUyt*!>ZV>(}glrifs&LOGo;a>UQgiLC))eLm9Zacy4`4Up&I0r`*)SgJ z=J`=<3vffQw&yDa9%gX|34(W##29Z!IUBzms0{rPhb3rT*xSgzzj0eNrA2r#3%VQv z@}r($cGpO%1+ZQ{X$&rCX`0c!6`TouLAZ$5iN{8dCAJ8F1O!9X5@FNfMu@?=<|b_4 z2sx;MwL(2yI12VraKWtwxtj`91G)X=w*z%OR{(Qw^qy%`)%&9VjvKhwoK>LjrCOGP z>Ahx;W;}o$%r8I2rP%d%@=!)3*LjcnixB8zxX%o5yat3o@R<8^MXDfkT5C*>yi==q zU-f4RGfNNK|D+J|OUJdwCTF{sW2ArL+5o*4aA%14<%rq)TG;imj5$8v;u_8&KCuy- z#8Nf{J4M_aOcK(`oPs!#zSzL-3|%B%$C>+(ijTPc;lD85NN)PhqKkcBMPpkdb(9Jd z*S?(JIZmC!e1kh?{i-9X5&VAs=K7>4{NmReo>q*- zH$_cf+nv6rz@?tb6Toy+Px5l^Mk&9YA70=XQBzOmH8zAv)LTRHdPc_ail&ws8}f&K z(KBQb%dr>!ei_!#V3RF`166IZ>Bh`il-yDX*R?PKldR_~m-OE^2;a-WaDltFte}l&I2tbn%Yyh-BbC#q%;Ru@qrYvJoPjzLm$qqd z%U50&@KNXzc01TcuPJckb`yPk6Mm@-#&yEI#4{LNa(2Qq$YbWy!i?hULIh;=Ck8B5 zR zkKGlP0^;L8un9tnet)h;uKSZez9X`jRf6I@U7@^gsmI&f=PRA_!)?TmllZ9us+N(A$`v)b3(Xg7H<#L==7J4{? z6+Oii_gWr`X0aX#={6qn1v?!;?Yy@=WQ=_zW8MkS!8|&vWl@h&nf}x8I!)p*F2OHQ z?hS50__jhlaj}x{SkZd&Era_&hipK69lA1XahIU(;O-$XT-fkj&0t}-K=cIBDN7 zbl0K{3S+&>cXO9-C{CIyE}j%KG-V@fK6=E}(voAWbHuIAvEdI==dr7>)U}LQ1v{A7 z>aRo)8W=)d0wV~;9jabablKBT7*5Z<`u#ZO#I{>CGxrX7tK!*gJrgYQxA6oV&^jyO zmr?FvNrs*B-Swxhw2YLu_n(jH(o0^6XYfMJFn_Kp_^eNVcdj5cp*lLpyhc{d&3ner zZ8i@F|5O9?NJ<0cV?P7=5DKRHE3ZJpVPQP7pzUuw6;69H@F%*R_wO!0NUeZ?vsn zynzAruB#Ux-(G7Zw)(w;P2v{mTgl;!{Q!C4)aeVsE9Y6r6;tW&%O<`A_YuNV)XXbZ3dw!gw*q==HvI+RCAVKkiD=hmcW3AxksFl{xVpNGl!6~nEuxhO z)_;LA^#CZ*bh9DL)?2_^H2+msNhV!&Squ3*#VAyWe>o#+3i;vn4#&7%j z+l}~OZMy4R%Fh6>8g-osU^Pp$HL5cgEHZzadh8k@G0HU(yu@V3yv4iv0ZPq#`EqZ| zy2&-4xR6MZ`q+0(oPKiMei;+k)aOcyjI~PsMPLd5!9|Dzr6)vqx9O*rf#qV3Z1@(@ zkEf!IVEGsnggUMaTEQmfb;FetH0f&G63LS_a=F>3)!Jh)cCojRpYsR1 zY07x3`5m=Vu5#b{1m8RZj)3rMZrHRnK@WqjUd52OMZ;PwoU5Gs%Y}{6wD_MW6`PU2 zE;GwtS&3)^%8q`YHkzCJW_;dTI{6h@1qKfDNtlN%@o4VGTG0iSgd)pg!)9fYbOO;x zQ^YQaf2-H`Xf=4lnrdzz#37aH%Dt#6@zv_#!U8j`hJ z|DF$D@d(aCzAj#^{^E(@ChC-o-;(@K0%RqB` z9qIYq!K`c3-P2@-gMGoMV9a5@-tvy!_NG;7`Onh7t}pY6EM>i#Pnl7Go+u#Fp;~rG z%v`gj7M7Vs+okflt9W+6Hg zxIa82VuuG|@aXE5zc7i^2zLSP{4ff+|9m+acXJEzCh+B!@syQpW575D!Jc$GOpJ3-$eh8xS_bxN$r^gqvVpA$-zy z2|C_?sWJ#H2{btf0k2!8ddxuU^WUrb)kk`ZlnXmz=Zc|h_G9OIlnOW?p{JO)zv5_& zm~zJ-kGP&9ToZ*Lr=b&{@wm{KdA(iB%y|mK$`~++5^+RGOgtKS7SIt8qX>z+?ni~k zduqy3@hXiPdL*1?1b7{SD;=9#EG}*yK@Hd&f${u1vG;BT_R_%M+U2|qf^LJ!+tsM; zOAEC+ZDn4LU(_6FH3J&4OpbnPN<2ZDI|87GbUmcBG+xNrISL(eaq*5$D&2(negwAp z;MQa{1JB;vIfC86p~w>3v7mp*ZR%&)h6#ktf;}M2lIgiY*kiIz+|5s~uWjei7vFcf zn$3N8ET5Sb09|q4y#fxMmPexwg`o?K-vm>uV03D@-8U*y9*Q#*rdHAll3lYJbn+<& zbCxSyN4PhS`ZNe^)M13e`#l4*2N+a@d&>iMyv9CdhjKT`BEP-qxf!*5lGDC<=?+`x z9IAOTn|<4n?nt@X8pd7MoWA(tX|g^avwwki`i4}#hoF>(YBWN&(_|Ctv-`%c;98;l z8Do6qbCp%Nj*apyO|&|}mp};2Z1fyihq85~^q%x4%mHyPR11)k-?z0gf>wY&vbB38 zatOHzmCDc(8rjWb2_wj3W&+Gtdb1f_VU^r$9#1tJtuA|@r16pDIr@aJ2$SSYX@~0BxM0@(&$czMX^FND(Y|Cz{Om*oFgyg7QeTTI~ApwN{txyfM2xt!Yf-CqLP1g4Bg{?`Nt9KvX4Hl!}&C67J9LcYghc$c-DOmG?D^yH7N`Sz%79 zbnQ%(Asd4Du4p8yhl$fgA>pk2>?rEhvf-<59VP^(dY)RrCF}LdIioV@xYTa!TQ?p# z>Ro?9b-2LN#m7?VcaO2kc$Wogc9+S#Smnf=TzpHzW9*m?FB3(A&5$AMgK}JM4D?EspD=hiart+OH zn7L8-sks9_2&l$SGdd-LM?C5K>%}#mdPcS0>0|lPIbRovT!t@;v(j0e8oFCc?- zPJV6v;+>ZNNV3dm3==aDk5Qg9R-vWKc zTYA&>VNoG0_oJ#<|AwHQ!H9IQdlkD@Py+?O@gRA1tG#9ieznw1=Atsh_8*7onys3T z!@O-oy$hI}?4~o_)RCbnDh=#?4GcB>`O^jm!62GMv3D^X2aqMQ^+W&lEo_WVO)9@& z!mVd85%-!rte8{ofRsLItWuSVDXl+55s!uFj+fC`EEXpZ7xf%_kudkNc=7kW;sfOG zUt9<~6Y{cYnf7sk6w{`+M><+jB;6U5FWe{$@H^b0NKp~pd0;gGsKnAoe)orOOKLye z^g6R<38GVA_x%l^Zk9h;ZjI6;Ll)EyKK8Ig*a?TZx90>ESHYDBG7w|LUol@JXMhk# z{f^V%3spYPVt=!#?MHwG2CJj^u8+qX5DEBlnw!isJD3h|rL@@8 zZ<6~j_{T#N-dlps?(nhRTJ_-X9_ovC>c%gI+bsWpE#2KmIFjA-XTrydmoHL&49s8} zGYwa`9Sxb0bM)$mBJ<)&E7wz|ici7KEX}PxSwKvga6G|+tLQ)JBha>J&kRz5yi~z9 zzc1lg*5&8PThKDE)51)soni5=elmgIYy`;$$35d2M$ENLvU(UU!ef9odspL~f9$21 zD?iFV+yAz_+T5LSk3O((mOGJ>?Fv+8dqsj?8w>da)yRTZD{_azcKd^{=v}vw7bHJ8 z%6qp_{MHn5%+-ShVm$sKiwNnX;7qf)Ln<;mISx?P)KbaZ+qT2-Z)?m^y(=_ zTZ!wFywzt3!hb1M^{E125b0CFbUmlP;q3wrbT+}NyEavBKd!zx>@UD5BA3^Qmq#C? z4_*;bV-?P3VL&yK!Z4I#YoX_T%kbdoT$7=6%qVN=WKAL=#VX{M-MIB?=d63cpp9~9 zV3m6`G0qL^CzM4?a*8R}+M*|z*nnGOCk(Jo*_}Y+KB>4F2|KRv3P!zn&7kc2sMbZj$JHpjS5`2l%qXF1d93Iu z(0XD`%yXh`?2!s7(FMpHCdS(Eq!vC zsH+J!6~ZL4Gt)&JKa&tnLGUw zf{(e*#OG@aB3RsQ%Bb@->OFkFr`4qE93a~6;KnMl39GVHP?cZmd4+HfM5%}md0*ys zE>w>vt^f%lo}DBr2?a{F3Gu=m@`4)rO|VMgnXYKmK=cFj{9`@I{7@(RGyc1R8~QX?6!?fSdL z^{Ln9!1Uz=Vf8!DJ+ygvKot3D4HbBysNKXWgI?ByQ#%rrN+H^%;c(4iV{`B8`A#H( zEV98w3&0hK&?esSGX3oRa=#~YKOL$z^2*i0$MW@b(;4si+Rg1C(Dm0>mVT?ZSHRQr z`MT1`>)nhTIko=O%hHl>txVOmuuB#GsFx^LBxNKl0tXJJCA zuVNd#ZAN%n742kkQ$Uj;d*TA`MMYXa#x9+CuBRx)5xhwmEn13^NqEHL@#u!((3ijb z%Pgi)|A(N=z)-axo5`7{8irKOB5C88lvna^io-Wpti|vpZ%(eF7FexeJ>za|hl^pB zumkQAVAfH4Kj3s{vrKaPFmdbAd+i;Ewx|0?x0G2{9X6b@j+SB(972N1r7$O6KQ9ME zo8Xlz?2y~23n!6*2o1A>(JI>e$x^IMk_89B%{CT&F#?F1b|&s0h!;8aU|!D%&vw>v~Mzw3I>1y23Lwa77pBH2K79 zEQ9Z7Z*}%_3%iGpCJ#5+T6xH^$b^q2uzS%@+KrhtB~GY4%xdn2z$G$>rW^OFnuSFN zNDd!F3@wT|`k11S#wRG0p(lx&yQ^UEc z8>D!v8UWg+VRAjz@OX|oush2t$G9p>+}12-9ZH4-FkC5{6~o!uQF;IQ^@Q} z2b0!9FS$5aUwdEmmFs|#jlVD(9Vxu~SS+pFmd)E54s#OcIUfStGmG*ij>o&B6sB8J zRI9R3umiis$lcmQ*3Y10ky3L^?r!Eq z`-6s@V5Y6H^q@z^>u&G)Y1J$NQ+!kCZty0=WgUirSnR1<~NGSp;yAM@iM0~{7AlT?G> z&%2^%;(+Z}M765xHcmDyPXu{Q*JT%c-bZ?*BHCn; z2s)6eDB6poL>x~_bdpZPr%v?`Xv-~OCjV`_x=n?A=P2Kk$7nb@gjXmEsn5SQGdsQ+t>#b=tASb&wjwg*ZNxj(W%d3|dg`qQ!XZ6Yz@VhKR3F*ht z6rLtMyYU-+HSvk{Fm4sI&7)yBVYf@n!S`V#LJFn5Kq$S?2md`|qJKXP-e*ikDJRh4GHrS!`usO!n9;Z~~~)S;(bjO&D?p1c6`$_bMpLbtLaY=JP1&TyMl zubEu|Lo}DxW>1<}hPy#5BsyWKN-Hy|$eGi^;%Qn_O^?3!BFR}OB(}nN&$Jr0e1GYj zXChCxh01qPla_Kq<@Ej68XOr9eZuJ-8OUFysG&}bsNzE54Fx0oX!mHP-|rs;>d4o)-kJj0Z?)5yHR1Xy?&u=Xvv9h_VYmY<^3M*Vw9Zd=vY6@kqlm<$Qx1 z!vCbL4~i8>Ut|%e1wJb7j4PxhMb%!6{vX;VdU{j!ic*g{_0(NAcv|CHj9)MpM#1Q4 zp*A9eQSP)r;+=J{#cRdUhtT~B?h?UzNE0_WeJJb%I-<=JfL~rk6cSY~O@NWWm%m8nh;4;mOao3FLO4({;nj(p(C{@d>oFpooTm(Zv(686rslLB_@dupw^rKSs zksB@6VfEL*TX(ejZWZvjldk?ZX{*b>PqjicM#e2S=pL5z|8W)I-4)Ry!gkm>YfxX- zkZVwbG$j`k3ww&CaeQS=Fnj^9dmW=^ZE+Ri?k%(2o)?)kWG;$%;vP^Nc^mM?((iN4 zBq*6B2L7r-iHpb;`PDHxJrm|PgF_c>RLIsr*AamA&8eWZdE|jC4pi8zhnNZW!XZB$ zU;7t8MvMZXUN(g(eZzJ}j;YOv2tO&F4GFeIid3M?56%y>7QflcbiH#Ln9;_M&tDKi z@tMx$2n?BHdL$NhK^1`EDkgy_Z6mS9Bv%Gm{KNH|;&+Zk_t0vBf*S-_?*oU)LSoj~ z0*gXHAgGqt@2Q8G7a1x_u6K<_;xpib>i!ANL^|Sz8gpBKmeUSmQVEL7K1$aK>2E~h zQf7FjB*zS*%xR;J0npRP4~VRs;J^cSj>4>B(cjt_zZ+d3hkj{s8&DSDFqSATasq6lEX9 zo6P^F_3D;5Q*xmw!jScDA(9)QnhHL{C%J6FGyt!#d0C53}O7nt#~5&gFF`fe7yve^mkGAioVlPE!&+CYOVd zN-rfuQMxEFfT_iX*Mc(og_17nWl3yui0Xc!vxN9C_lRylfZ7!=DG+{J%{)m1F(JVi z*!W047xm3Xit0sh~i5n&NYY_E3T zlxa=Og?6m*gS*^p_5mlm_u<9BZ&vO*u*XD;-!75#jqEp~{K22o%S)`NjUoemeq4F~XL{?}Oc83Cr;>S82o89^54U+^x`f0dgkz`$X1t@cT6^8Qx|0 z7J+zQPS#gDj6!JNfB%ky1U`KT85CWz%OoFuq&9qwo;Bh>xGQ4`N-HWhaNI#nEqDcv zTip^*V8-R5CitCB$kWK&x;z5wMtY(+tS{ty5fNbA^S+-!>dE})_&~g;+5N<=aWJv# z{SGRr89~Rq257_LdpSUUy(uH8+SL+Ex$w#THuF2*eFi1V5m)$PxQT_wbIyI}gz&7} z#Mqi+UyfeBPI%A5;ZwKOBdojf82T%_i&X;w7r^FMUkifFNxh6W${63n0Wy!KZn+g$ zyc~Fxa~9H5Z`%Yw--6sa?RR(w$rssBmc;>{Z8$r%P@ESGJMH86ah!r*dCG78Pu%%W z-1dLPL2TmEZgfmu2iiXBw|o1~g-4#goPmORrpd8A0&(Vu^e?FB%nth-ykBoaiK^*C zcS6dn{wH7kf8`_C{$Kg_%-I8KApH@;Vc{a>#_GZ0^Na}2dtyQ9{5(mJbo`6w`P8xb z)UVTR(=so_wRX!gHlAu{IC=H81VvQa-5D0tWqGIaV{!41g?Mm z;Sgc6RP|&KIeV`}ZLD#&54*K0Mha zQuXBl5Fd}_8C0GICvbD4|EFf-e{q0eofa_?f4EekKRo*XAwh`sKm42E1O>ZHM%3UP ziYtN5wuEOede+1iL0$`~VzJ2u%fgH|^C+dNfGey;;nL6NwV;ZvMYle{D?-n+{z>H3 zzmm4@o*;(dRzB?=uk9OlKVo4YU2CW{^bHjCkrQatlyW)lax^Qbc3#3afUNE~WQ2wl z^GD?h{ovFo{a|$NRy!>Pu&3H+HERq%BkZ8Z(93wC2JBLFbY4A5_Ph7egjlv0a^)fK z`+*LMCw)AaTxHgQE2 z!!TJJq-p5POwi*^Y$i&7NO#)^|HPVKR!ON%P%HugmwD)_gdID0J;Ka4^{aS3s5^G- z!`J6=epMf)QL+;EXJ}FsiYX?9O6SQpUdW*af=j+A12xA@{F9EzZb>x|y)k+CvUI3f z4N@i^kX`5>y2`qKuj$|J$VQL!rQca1*xx51AODAM#DBdk;Sb3Z;0FYRg9!3JeOb2u zylfZGna75BLT{@4d;oGhD=^ZoHxz(EOYu@;@@{Bi@5$|j%^xBh3ak!DGNR<^TI-*= zHZQF^Gmn&HL1#r}WyOUxJ#V#f5&Ms3FQbJcr_jegbe1=UqmI#s2C>5HPqLXCDEKeVPv!#Ik zfZ?QF#o*7I1r4kPnw`jW44T$VKdGVL;vuMw?`cXnD2{T2VZ$S}tt%5i(Bh`2U`*i# z!Ga%&HRjB)w`lO;C$;dg)#GH*>9`l-o6P$yzg(l*tcLhVu5s@A!a~KXtZsqZwwYPi zSfedfw%dR|q72afD45aqIHOmo5~$5&j{jc(NkF#09*?qs97K*~wEB8a?+o|Xxzw92 z>5Liqs^{k?ic)dSJELk1=%6)mr&@bp4(3h2Do0Ud=q;@?=nuOsE#WXwXO8_MF3g`z z5OAT}9rN$Y*~Po-*T4Vm?&AL9t!{p}yQs<&*Njj=Gh8mFMzz!FQ@ho&2D;Vj_lDh$ z*|W@kSEnu7vdwl!F6_8oI{we^?56krx;m~X%JWR7$4&z`B?hsW>09jAU*5d(7lH4= z8P^a3T191jymZOGzf=n-$}y5k2VJZTvKjsn+-YmzF}$9%GFaLQxb4{JE#7_~|3llIv# zBo2`3FZ7W%cFrd)L3-S1IQ8wM{R!}#&!3I#iSr2rvx)J8U}Dl9rxLjSEa!dFl_x!U z(ywoEYd2vbGZP=EKL6Z)0wq6R()F$_Er-z z!5j#I@!p$pA##csIj>xX6kl%MScsYn^ibGjGWVkx^=i1jNpUMRoheGrD4cwepXk@n zm5J#x8vg3WGFe9KqYFWx0=9-Q6~YO-|JklpG2c|{=NcYHzU{`HpFlWF7Nlfglwg>? zf9Eh25>HLKlw=A1Q*`)h!e>M0z7H4+G=PT+Zf4Xn5?{XxPR`CgzI|PPL8{Ga1D+cA zOAs0KfIqkvJ<@-(fLs8gp_B1v%r?oa8igi65FOS(Q$*GUf_v%%xU&*Tp-LJg&40Ce zF^NUVqrZ%6g*cG2z(c1@bk?btk7)`K+%tC0V_eb}tlw5(FFfZgRD(uQ$Q1w~_f$}t zDnb5IdrKELNOcSdm@Ulg>}mhSP=kgu&T=GE*Pv-`sO(B&aDF92 zg6|b+RBAQqK5w0!(NC?fQK_`?EiFg`yr76 zy{ML*ErQ82qHCH~ub1%<5%+3Tq;WvwIcx;~z+T8r8@Xv`+~6~!HwC`sFR0_;3W482 z{7wPC!|}2DD|-W+@SK@qgPxra+Ip_Jq=?#X#o%^x_VZv%U%jgkc5_H`rmBx z8+8){NN@~8M;j2Qmy$|P7>kPsf>{!9@>H*liF2N;ho?pZI1;3@Eg_Gm41vwzjx~Y8 zi-ahTgAQ8HLvBHe&Q$fVXC=p2+PvYP#vfHsNA8q?|qD2~ADU$P(JP z0z=GYMzzp4W}-kot3mJb0zRXpv8mP@)iY-ntPCAZtdg-4vcSditD0rPy{e(H$9qGt z29c}!0;JTdV5`-A1xD}Z!F6gflI2R{9CV$Vaj8N;bC#~(e~^+uvA-ZwoCKBUiBYaX zL_v4L&FnzwfrRDSUi}C8!-^z~z`$f(?r7Sxc2C29cDN7=Fj8)h8A?r0^dN#l?Vviy zi9z;ddz5GfjiIw~587sg6UT+;;2jB%?WvXb^a|T)#flS7w>apRM%}JaLbmPQ@yZDB zO5)n}DR8MtvR-0p;zi{ZUi8?CXlIY;(LMaY(2L^*HOnNRyv694)D>8WLb1C9OSB!2 zS=AS!ARS=@FI-TZD9R^@n{G_rT#?@A$J+ZHz3JopUf|>tw4jdtSy6JbZ?3+J;uGkR z{&!LAA1C?9Jw`_58oJwg!G1{%6AQ27vHo?SJEgA6tdS;@6$>Lk8GZT;CAGy8VlW{S z{{j}T*dH?SZs?zWh`)~Kha$n#l{2Hz;i`eVoB_$ajU;=pPtu3EZ{DrxiV@D7^qCk2 zNoz>t&KJ0N$p%bHUO)p!g2FXt35(VzP*w{|5?%#cMN$wdq|DSf1Lchhqb!~`|EWIv zN7ShO<3j^};QNPqQzp_6I>yyRN3fFn#2YWJ9VSszpVj}Ns?UB%mqH_>@%5-%Sl#sj> zHD8z}iy|(gyQZ5++GP;clu?K38!fvBfC6=JX_8b_V}k1a%QEe&3CR|0J*QoEv$B}l#BoYynqGX$duMdW-a)(EuH}Q?0DUHh9y98!s`X)9 z%Ttx5{^nSWhsJ2`uaiNcQK)Z8S`LRxHhv%vqdKl8Csmsoo4g1nAB`0hkk1X?E^PpmUo=eR zP3fLtTE}YkAQ{)liMVAVjaHG&87ISaQ>Ngh6uhS_$AhwBBflGhUd6b9GFc6Mu(_HQ z=a)rIJ*l?BB0^>xp4@KLf7G>>E-cwK?@kPtn`^4Vb?Cqz)%~|VSION+;f0T)OV6t* zrK1f>wGm>Ag-r_A*k9`kpcfDX8R6v3I-!*qiJbm*6}6~+oGc5 z0PiB5_#Tk*Lj%6Y`P`J*e#n*{)RR{64ZtC;i*L^$@$`0IgzZZ8NH6yyHZF^lq@MPgrEp92Xjy`3z_^_Q0+kDtbhaEob zro%2D_HamW+~ebZ3hwjaARP|)aF`BZTDK`C}(mp%W8IyyOT zCZhu{L*Ku7^+9<{r_9Ygqgvy$x~iAnxjJS@`CHczjM|$;E3KvC`%;OxBqTNS3(<*- zUmkw>__czsI+?M=VhGqniDG___iX~jHDN@}G8cN03y)|dg3k&*E?(F^ar51E_3F3Z zo$_~xZ(kc#?0Sqp+WzIu?e*PF`)}^YKh5^b>*4LimpAR3+mH9}F7K|)pWM5PFIStJ z%fENteKFTJUuIXIf+HD|*bgw=WhO$-JwI(r9;5RABIFKl=go|tr?*Bv zlut9v^u_lE%ZN>&vzXFwGL4Pa4urK>666K2n8@Re%Zi(tQ3Sh9eQUF|!8t~HJGduU zSh@0?xhobsCYA9mj3-Cbiu4B)Qea~Y;!Efo5R9* zoa~`#KLSp~TqyEn#|xIRjLguG(S(cP@W;oQc&G#+lQEA7*7fd>WZ{F3@m*q(N3kJF zNuF(8C;^o@b7pf`qqbUX0kDcXjXh-n;aq9SM4em2byQ473urQ(m6!m^;Tif`J$;eXQ8F&!Tm&6JD5Enl$NMMs%JDF zB|pkN23iz);drp02Z0q?Dh^Ps$?X#g21I6avUK4&p#MIGJDg$ti43ctum!WGerU0f zGr^w}(|7%FL{6vLl$re^=4^-61oQM-zwTc5IO4)8ql`{%+a71MN1##?`L1IX$)CCm z&NyAWhd9(}f7%)EGKd5$vzNm2-(;S%Gv_1)zCLIV`{wwd2q~92An+pxtCNvNl%d`W z?!PTX#@y78V}DWNzfF6{Kj(+r_5r3cpc*&<+f`zJFrdRhVV5v*#(WblKuRR>!zXGJ zyfD>5zrVB1zA*cWdXfh9{vfz7Flakr6qk5Z&x9l1SIps6_&+1jFvz?(@j0h56m z{)WYK-!ddK}0e_XOIM^0LBN$JQO&@Y7i6Fgtv%>+wVt_pym#r+B1nU}rbdc7llXX3x#aJ|-0xZWxA6pO{waiiU$D=llkUA(Fb-%_j)iYUupd;bcJ zlBK5wQ0{OXmY7N*B<$NxPA;I91u-aXJt#dkNmEH+-U|>5zHykoZC+TR4_KFQnF4@tAF5Owjd%MF6kLbH(3?0+9x@CVZpGV?a$<0Zz z6YaGJNhc~`X(?Q2&kn~0(+@VB>D|x_(a~niLKTu-0T0q5`3;b~ThPhHGEB&=jSI)a zLnlv!DPnRc^6rEnNcIyyG{6^01N?xXyd<9dCu?GF7GX^s1y1P1kCernO(_0F^Y|a- z)21$z2$SgBEb^<;3SL(#)OBXw$YdU{IIa|XGRp}We;G7#;}8u8SIKi-p10(ATb_61 zc~_qI;x%m3jvgANU!DQQEt`)IZcG--1mbfGZrniuYW)38Pu}F*X^nfpq zvL(4OJybaTt?NXw!f$?4qe`f5#U-dV&aX;wm5VP+w&pU7K%l^PxO`$br=EoyB0pPy z8RKPYO4W2?aTV)<4Adoq?vME5&!Qd$Fk6TVVZjNah*e4X%%SUqr>XDaK9qL@5fo6dj;TE>q+n_h>4~DP!26G=o z+M|nqTM(i$0EgFgNASe{D%JIkINWWP)gdPO?lNX$9-Wk~#xuMKo%|V&R2bhbO)xUw z9Z{R#A1~7Ax^sHeF{6}QLr#(8#WF7 zbv91#1G0%E7-d6D24ZtAesChd*A-vG_C~t^XXsV z4HwcvllYNmyD48O6xhS-0J|J^&wl+J$7xcW*w{`>>GHqd8NDpYa*`G}XYY4e7LwS~ zNE(esqj^cZrBb5ulgW|f(bX0+3GUUJ=({z`K*YP;8%1&OVSh_n7PxWAh6D0Ite-6s zrvgMve64|WMzaVGFMHD&oaYyGZgz=+92PoG#BQO7B8G$}nhOB;64p7sq1Ob{1&#~s zN_Z6*Ww^xOqxciwEd&-h{se9mtXzGLQ4HTd;r0(fDee6&+^@7=3Z@azUIP)+TpMXKd^eef}d>Rgae{3$Wk3eq2R#e)T!!J#_&>Q zXInBq!!8hxhAZo8%b*Of@z4I2Di8Jo`~%Yy;ve|*@Q=lwt9`h>yoa;b7@blnZxJ(- z2RoysA=1n;ibA9le>tAT@Oh3tJn)%8r$h7%!tabIn#mNVjnw-5dDmL4Glbvh*%2XO z1UV%Tpc(SUCkOKcc3Sy6@Vwny=d>{*+l?b@41(Y;p+Y8s`OQn%xvwO|T;DvDCE_IC zXO^L|UFiFxs}enIX92N}Y=>L&eyGr|Oy@T0SuLk8#N$&`R71C~bb+v33)hHY=WN0f zn=P)C^7xoy;mWA+?J$L>3U?R-qSLaX zq|3pQc{3Mu+E}vhxU?kBY(>E?DcJ7lxNvAAKCR2yz{s`-0|Jo=D8R%@Tl$u)zFMz;CBOPYq(*hT<2gpAh0Mgd$juQV&WbAs22)e3l$jZLaFSD?jc~1wp}p z(U49J^D4JB_03@O84N~fzA7KngK*%gTw76fv^z}G(F7qp%~vcce(bl2*1>N=nbR3! zgUB&BhkWC52GYLd68KEC_Lq4~YtM-Y$10OK6NPN6ja4dPse2`&eoTbiT~z%MX;&#h z3p8OT9CgTaLR!iMw|c_ zBH|bO26gqBfxe(Z-hc=pn%~}FumlXzLYPo05vZ^iqb|ireoW`kaAYeqF&i5|YvPu= zgGhw009AAww$zA!Ws;KlVjQ@F9F)VM>A-Aa8lM})FLkeDEA%9~NQgigHBr*@YF%5D zWb>e*h`A%^C@FJmrq<=Gnt~BdLry20i`mCFC-l3k^^CV?JQAqR4VsplLe(C+5|^S2 z)uJ7{s|~u;58t#Q$XF9f0~PH82J;~(P~EeueHZBQl>m^Lf^FFbX47yv$1!>=l)J5T zQ0)#MFbLZO^Sjzi>`DtueZpI$6IPxtW-qXcRm^6*b9?_T``T^}ZcDm_^(EOE(3*Nz zTbj2TQA9>FSSm(g!bng=Zj`tj-N>r=QjS_Q7&XaGaaWpu!v+DQr5yL@kDiUIfQ_l= zG(G$&Ep*P!==s&W_2`h9`;>9V?lgOVwxWvDk+*Hm)hR9Uv$DoMX~lk9Ohv!lbR8LJ zpITM;ilU_Ka#IVOLn20h9MO_wNc}46gnEj$ zsH<5~+H3Q^FfI0)uCO-LCcUnL2F3*i9)#NAsyu~i9j@|6A9;c`RWhnzy>7vJU3r;< z2&s9ztdeLXav+YWquFP+^4&Hg5~(T?93(--wmPz;qIv2RjmWA~ zjfvvFeMMGB(zofe^LQ47jfp>>MVEWE|J1(xr&iORa$nr7B#jdgr!V);{RpESOz`wR zB1=}5hST}lW@T`;-Xd~QuJdlNgPZmmW=AN+%Wr)}M|@=cG@B=JnnQtoLdIAS*@Qth zy!Gkw^A%ejwyf<#J3Cdttrop01752E@Fa@hfGIgBLZNuIjCQ5(WRp~-NA{At!dBU- zxC0KCGH8KLNh0JH_sL|MD15wFv+x$V0SbH?$CV^V*cjtz&ij>=(=z&WYvG5C#N$8D;Fv4sj5t zeZzxC`C!}jJnzBLensmtL)Fc%W$F>f9JceoH>tbMzGP;?9UtTa^8gxM4#NX+f^C?{ zj2Rhsx!Oo*ZExmW18DJ?i?%=#{L6$MvK6rwyp-y>&tQK zpYmQ~f4Q5TPMTyual|JJiyPK((g=0dU;^Y-O2yIti> zb6cF|2l$<{%cg_P$;+LR?OlmGOWk?;NSAa^)+-(4Q5N)YyC8spd;9BTEdhufF_~U{ z)d__tW(jBN$jhWph=Z9638(MmUqOs&ci0Lf+E((3KXA+a^u1H$*E?w$92-PUhAQU0EtBO5*Qb zN!lwc$Q%djow`)m!jnpSOckz$E~H$MySJ6~qgqKURB(%)Y9uG?cunk+-ZItV$zDb# z6OU$ty(&|bhC6wF_3Fjm!U~t*6C1CQZY!olJ9Cg%F87qAdVZwPoV$4K0S$#|;A4VQ z)20e?y47gY?OzG(Y|A9ZcXV}h+(}2H1AIZW%4I>Z3qk0x4I@W;y>ZygZ>hR}9lNu-e;vEMx_=A;K_U|0f}i_=E1~VO zOih+5%9RUfRLr)u5)%@yEa5F@D#Oq+$2A8(P@XT@-S~6UKCW*3@|myS9~>U`G_I<| zYJ{Q5bjs_|=;*@8V$!zKj!}o-71lno582`$O>AY}!PPyHm0B*B*%ZAj`{6cw((d4R z&5mIAq@Of$X1(2t^&5lI+MHLI&rLG2m`Yt{24Y2!=24l#zE+s#itRu*d`Vl9w!}C{ zGjFW0$a!>Va_{`|ax92Q_HnQB3FLrAMjtL+CROH7b_&&zhfY1_lhBDEZAaPjsS%g| zkj!VYwChUBCn{r0?Qu~|(~427vv<|>?ozEOI?WVr7gV3?y1G*X3#`1A?1HS92_+!y zt2|vqx?>U^9|NC4+A-{SGl@tDpA4m7MT%F(8eP4jdhN*uHkVt$J>88%S(BG8gRQmkXLvRT->hNvCQJ5&T`> zBO|gb)4nD-5;j3P1hJ6BxXBb|SrXMyqA^vIWpgTyofKL*z8(P2C(7vh5--vm8cS4T zb}Q=;N4YK{QEEl?Ff+6wx-Iz$uzuf_`n|5Rs{j2g2lNI+UnEppLN_Q0O3R3v)3fX( zCQ0j5eN&l)<*ITuQ8LS+U?7QUTtAEqh;z{nF0~VtD|poV4&y_Z*EV11RJo&xT_w@Q zd(`fA`ij)xN^jfV!}hT%1GNu3-R>iGr&SGyw&}<$lp?eFsjMNx%siSPsj193-vY8I zn0BX!D^S`?yCT|?N6KKfu^U4!LE1I-Tf#K!2Klb)07=P{l6|L`FeAOd``Ka=m+eBL zo^{I)PDmM<%3Y&(rd+KF)hPXC20Mx5hRM163DrGm{IlgWdnG5s`DwVv5KnjOH872oXsgGrw6CW%4(x zqRjthRTL7~tcpSfn^jQ=VY4axfqF_6 zVMH2~E7|fUP6+-eUgp(ON9iOcHbv%Kr>0Zvl+Jc1267@&me(8Z^195b9l^0i~c{f-lWCd7Tup`4UMh4blXBougUF}e#7#;5F zr@*_?3GqZeR?DZuD>-bIFN{vfO-qUWsPJ)f#E>ZHW}Lu=_g~8R0K3d)=^o_c9h!r# zN>2*zRWcDt1u?h?3mJ-+PrC%Haui$zniXDif^LTMB)=?|G(jwimU~bQxsV`MjchW} zQ8<}wh!iZiX`gsu^H?P=N7hE0@b=R3E-$sa<^!i%O>+j5HQ8((laPGj2}u31@Kq_I zz^Eh;i36prM(hoG{tar__#$WhE9Iim5G32N9b+dH&t-}^9i%Geii|bPf1<)W;OOvS z2c#M4l#lAF!hmBduvqwmo==Ci!MY(U7+A^?#Q~G&3pC7Y>Bw%djeOZsQVA-NjB0AY zvRtaXUZsg?h~O#7=&H6YS&*vK8cgk~dR`dZQZ}>@6s^m8nZhPUx|sY&ey*9X9A@nM zkLLbgz%>LLmfW9Yw<1?Ih!tH?tcu(_L$`Nd?}$RXcmgsh&n9TgXB8=qqb(U+xjD@1LZXxK6Oh6fj?<>2FfPz; zmxlX@8jH}JDuN!Hp@Q93E2QCk_Gv{6y>?HnuuR5&UR8nSndo{-BQ(WrrEj@Msl|MB zKlYBh#{&r|TE5&;GC{Hhu&30BM<5AmfU%0;QLj zzf@MLadZK?itT-~bk17$@k~pG-U*A=LESCoiybh1WYzi+(TQbkdqn`>Xxv5)c_I-oUfaat za#f3itNW;G-h!f{=GnV4e8{fq8dph^L$h0i1v(~aLXsBlO7@Wx?gK+i+^ma!iZT?h z(vzwTlq&6TUT%nME>&0+*)EC_EY(`+Xeje}~MV15L(4 zbV9f0ur*vdSK8L@C=f|eqEt1Pww2QUEuwc}+3^(HAuW)IV_HYUZIvL$5z^&qK^`Eh z>I;iJ60!=U?aI{R&`1zd(r?y>d8UjV-9>>8XbfqC$K>Z?e%*7UhzqvYaR4y62(dd7A=^Bi(nS*vY#lg z;JS@h#XQq9zw8I6HjL7)nzzlA<)v465O=!7^HrULfqbOrxt+{mdLpp1>2c$H(VMBa zEB#6o#X+Yut5c7rH&nHCif&CkP80%{4uew2i5w`Qt|bK|4PO2BD}NQG1;-{-P6u^&@8c5iFTz`d==n6AduJtaSaXPen&c}RfB3JxvQ zf$k=Jm~qyd@?qMO@~KplIe2ygZSbxt{xo}py=_4EtXXRnGnbX=j08nGRc*P+JC^*Y zN_rf$51k{=3|e*QkXDMZupX3L@FdOLgf*MwUnW}dWDT|=Gm)28VcfI?J}iC;K&frt zLRz$3+;1$>MUpJi;+)$O9`M$Qv?xk9j93QgUC?r0k-enOTeswaNFWr`TTvX&L{`Zj zti8u`Q^^#pmbpc~`Qvh$Rm@aOUJ8$N`PZ&g01%rKSFc;@PeTZ)3_&lgq*LXIzsflw zrK4h-#?`agXuBm#1*b7KNXua0mS$C%)K!-$Nf3Q)kSnfLvZQLw%g-NAJ{h{h%bak$ zl;&8)T9r#=n`UOz3s?F?O2tLux+?xbkS_SPG8LT6siv*^(h#b+EEbN%&Q;fRoIGb{ zq!XStp4>!BXH>l?NFEv8BorNoLMR2k#3ZbIr^>62w)KABp^<$-vALFd>T9kE+BnGF zmWq#~^p8+cmtqzu+tz>;GKC^C*{f<0Il>ff%C<=@=-3E_OejwlDbZnjmFS?SkX2{>o7n9@)$L>-J`=tkE96wvPe?dch%f$+s>m-&p^3&dmg>6Ze`p~$2`flJ#a8$ zsccr%eR>(OyJjZ9)*NS^1B<*h3tG#(HOhh(Ky=)be7ZPs4A+j7cF)2k*>M?n z)Xbxb#j9!^5J06=*S2}|m>8c@p5$M`*WRk)R|Y+sn(9 z2uB6ss54;A1iu*j_(!~~P%N#xWP~RPk?)b^gKulAsA>|-^}2Gs$!y^-g0M06^HQc? z0s};)c#*}a`m(|pCM7G^{5}n%Ds{JLs=@(4`lZt@#Tgx~nUMS~9z0U5f%%nVHw?^LL`7+pL2ff>x z2C{&}?u9E~j!^IzPuUEpRIXZs4Y!o6UCm?pU_rrEZrQ5-UYj%VvdTKmoHx6h>B;4` zD(&6MJo356&__Pf&LE&^(!@&=lgQn@SRz0ajMxQd%fi=`=ZcCzs6Y zMT0^vk~c}Yd+bI(QGv24shgTNp3z~VO5v@EpsjbKF4 zjSk6885CRuCK)&>lOw{B@3Uq9TJxboyX5g!BDwj&lXwusyZZJ$0{UxNx$A> zdEF|m;WP+H+9h>z-shEfVU}GjOd`}>Sz}w35vIDo(p{l+3i_QwB4>BctJnv83n@{P zU@B%wNT4@XQ$d^2f;#M4J*FYlR77&y#0N&Yuu&Qrter*R`yzx}+RwUE*66 z4K^=k3ykRgR-?x7f)ff;-_ltg7F6B#DiOeLhnFvhS8=fV9vk6(E!}}qd8eS(ww`KQ z2#k7JTb>uZ8!`u3 zO!qG+@hw@8jeo^GN9t%8ZC2g_*SGNx=>{~@Kt``mbPa@Ds7>lfnq^u<(Pd+_pWHDdLCMGnpP=F+dL|~@Mq=Ml@MJ=l{rLS zRQ#SPQNwCxk{iFPg2R{kHLjNMnkb4i(FTes3YHmH^;km7orb4Gs8?d(S^j_%mOy|h z+_0#)u93_CYG^wxV!m4zUT3hbmYDb(ZzEWm6Z~seRAO}De?)Ll`X9;pmjNVz$kLWB z6<%}yJH?NBL$<|tSoxMdLQEw{3=vg;Zv^THak<@Kmq_6GvY4K-%HR^rp}U8V}?u=S~G0$2}$ z>XI}(pM@7y_mN1EhXzmKa-h~-eZiW8xkUT4^#&rzW6T+`ZI_~*cF%N$Tjxk2bp+|){RopLUJQ((R>a`J|n*khW$ z5n1aE*Lk~z6?H!_(Z(db7+)2UNH=a|0RyXQWR>a!$^ajt>cz5SwW^Sj#3ypcfSdtL zK*1=v;>S{4`HGZ7t|={NtyF7YDdMTplJp4bjKhh)jB>SnLwl>8u2umOH`npJA*D+t zY*jnR!r=A#K%ymyxccZQ2Q0DvglQV5fJBlLr%df4v_Q#AiEE4r8l0so7h;Vk?xd%k z@y=lHk*VseL|B6s>CDLpAuYzL_Dl3tnr4T`(^}%&zA{0MbaLGjPQv}KxH&mteVk{f zh7~|ND5!uCy-=x0@0n#&y=0zrRwypX^h@z%9cj7>`MG@Wb}`uo^-)os&|XO?Vb0`& zONORQQe`>Y5ZS_n9a=%ys0yo2PY*_Kd-$gaCF7GM2?@peQIpS5cWZSy)ux zdpzAU`N%4kUd6G3r4JUu(WVs}G`A8~ML}reY93Em%tV)sE4JG_)SpT&8&~Y|7KQw= zan&9lBNN&-t~g+AHhDmkY%UT?trfc{lXG~~5Nvpw$=G!BxGEPHuD#OHPf~^yX92k; zzXqvf05ldVTL3lsqlz>wN{Qr;mW;TCqfq20S-8i)>{l3;HQO6$qXCNyMMq`^zf@p;a_SwQRm8KXkUt^`Od&wT^ zdACciDa}YW$-Bi@y{v4$bO)lSJ17<9y|hrek!+IJN6u7nqrtQ-oK=?PLbbPvk3U($ z;Yzs(*P!&Zklb|d7=1sLp{s^=?X6X{hSVZ!S5R|0POl`d1O0Uth6_jYAyNtmHlTO6 z)C{0~Giv08Hzh{wqpcZkO;QdfgyOe@Y6hN?{a?3ptaj*BfvaL1x4f!JUsbEDw$JUB zHj^t|ph9D|_Kc)O(jXbmQ^MlQ@BC7BShf|E68`Axfqc)pWcozE5%kqhy4y z+TP_E=7XYwP679dDztB`q#zX8nETm>hHW^iNuB0)Ip=G1B2shiislynJXCVP%b`Gp z@vUI+gOcZFhtdbUyCG?KH_2W4$K z$DQNuzOWSYfm5#*fg@7;s-g$0mXA`?lZeZcIK8AyG4))PO~n!2ruI9EzKTuVPjlE8 zva%bM)92q~gqq39MEZmQhqXspG^*=}!$IwvL>n-l11zr5vJ+e=p{DTPGB>SRJQz2#N*l7pcenxm zQNzi@Fw`An^}sHgL~CmmdLBMH(vt+3^mu)uqrP1pk56Oxz9}kC@J243^oUZuq6^F9 z8+Rax;w;>-2XRz&X{J(!8UD-3xa3mAX=?3sX)bTy#5*yY&!X_Mv?nv)MD!jr4ju7d zcDZ4~D>WcUK3^hPtmH(d1nR1=o1%_Mw`TB6pt^}WNqqsYdwUjxE4&jX0Bm~axpmtS6EOa zXH8-BB&iBSOjfy~u(d0>g4Pt4uZH55=;~V3fKf_ByrLai!(VHBDpg#-G(!_#5et?0 zKw&3YyplPY8b*qnVF3MCHoX|>O}k_sSzz3ID3jW5l@g`l*xVdcA(tu9s=7qh{_jX+ z>IulcZ5FkNFyvotR(Jz>PCfRi_oM!uBt2!oy_Ex|d-J#GA&X4CaSv&PAXA74dO{s! zY5s0}!e4V}+W%ybtQwb8XQz?8(JNm!6HnqaKoN!5ofAT zt9k)#MdQSmx!i$rBFw&KMYQqHHBY6i52)8o7N@1nl}DE8UCq;7tMqUb86M{5Tgc^W zzs0dcb7j4C+&exzKKf=OqU%RWG+rJR_3Wpf)54p@B)wBucxE>OiWndwmQgmXrSC65 zkyTd(X%q>cX70t^@K!=vF+NUUO(+oK&Fs4BL#r?rE>+S!1+J>IB=>6Fm46uE`AMGaNAt;l9J09AdjyU?MEq6O#)WpN~QdcCiqQq?d(QHg>{SG=*Etqrf@xdV(_L# zF0dZAyRO^Q>^5z)R|{;@S0b$Wf&1veX4RCNbPJUzE4GPodsBB6S8aX+M2UEDo>dVgI!v{S*&0HXRjaB7KkbTvt!x|~g-b-QormKh5 zYz7^@pEun=$sT<&_e*;{P2uBe{%|^_l=`lrzlFiGHn-m3u)MnLSuKuC|$u}Wgj3K2I6J_X4@>{YMySO5SDFIBrbptv4tlY&w$|kBSLuG@E zT=`azecmlFEvL)ice|m8&eKx3REK&Zzf;p{NV*I)kra(0f`*v0@GeDFvv_h<#1c9@ zI}}gLRg{Wwqi@P^2s)cei7OFuq$2sQBsJOlhHMfBq*|uNONI3Ip`pTywx?m8X0rfD zfPKno#rlY0eV1<`!CJZg=^lHt1%{B_3uwF_Snev@B)g zmv8^%SJ<$^ru%->xMN$6I^NR;CYCB20lUxKkhpBX?#LDGR_11tcc7v)&8}7oANaEM zbBoa9!Pd`Nkj@e~A6+Klu!b|#I`hwc`m}bi1v5HafTZ%!Cl2@SaDh64Fn>Fnhub^* z2#6E~NG(*Pz$a>Xt=V{3yX@Fb%?h9s8T4puj5Woa<1RmZQ0?|#c^kcuth zWRLWlwa&7ZKRyX#Vyr*Qps}KV=v9r~!k7dY+0Q>U8rB;m+ounQZqMmD?STb+Yk2(d z`Fjs!Cg4VmMuDNoUz{$X>aghS!PacDeE~EFIKgW<#>3%a8AUtFBgEdz(ODSeh%foo zAN3^t=RaS)n2j#~^`TM!b6CIg>(Frr=T6>FKi+mHFK&Bdxd=Quf=3MpzC464q^I!x z0eM)LX5;5Y%)bG?sFr-_Fasrg@uPfLE8%(+G%x*W925MG?!Ov(!X%PSfk3iSWNHmEAgo)Lo?|yDRja#z#4|8);YAoO z!W7e@_`oPq7FnWsau(~6Q|TO*E-t8=;n`Gq8eWE@G`_$`%ZM&KvLf&SW(0)?c^pS0 zKNX9SRiRu2M(dMO<9y`TtZ5ofhPAYnk8r6b{(?e)R|k*796Ab*4y^Y-S#K%OpIbhl zE1HqkI4BT^rtv%^OHDwWCJ2!*>>gq864#G?3R4(AF}N20NKdli(9h z5Im8dBU+FV248xP z-L|{ULAUL=-G1xgP!MhF4d)npPaZyd(K@+=^>jFk9-e)AIREf$`RlV^o4>wEvVXrA zrB3kX!{I)ZI351miyuCJd+0oW7|mZke&jrO{Nn7;`{i@%{g6<3>(Reo4avgkcYChg zdbaTbYye_FoxeR8CcT2ZTfYp8^=J1x@U3+??6^*M&~sX^hc+F()9$yuPJG(B%aBBg zSV9tgaDS2xt%-j!Nv7jy;oQmmaXfVHz;wRHl0R8*NHLr=t6@EfK^A20aCvM|A2;~6 zXZ@Iy6?5Wzn>iWcvCN;|3;Z;^yc1-@(dQbhHhg9s;WM12-5*o2YAW1sG!JuIp|hgM3F^t5OQxm$&%7$Ubz+s>zaemCS$cr&jndvxe3<4wiE` zs-eXHC<^iGgUhGm?K;x~QTnd~)d878l{dg?x73489?uI=b8 z*a*VfuEZAzb@iPc>#BO5Nr@&&4*BHm^Jl~Qi}0e3t~OsnqK?tVv${2kV$$OJLUN;J z`Sd^a^gk_U{+~L^q!yDx9=>^o{Im{YH~nLrV(rulr@%j;+fN_;2|s8%voIr~D!{to z3Q`+>0yOyw1L0NT5{0s4SZ55deh&=_SfV+NvmC=#_P0(*hbqaQ^>>FCWQ%ANPW|&) zoDS<~L%79O>@B`Pc3@c{dBd9F{TqtjrO#%I54*GMT_*Q)6k>Kq_R`AJWhk{-fZ3J? zwxh4JH&0$|6S(_ZX_zn51#Fx^N!k)`#)}}D1s_z5$!*l(IPn=4xurn)LdO(7Nmenh zX>tOfIM;fT>|DV=n>Be_=L6Rp{vvamZHARuW<<(gf319fuimP!EhFe8@$)ItN%4eo z<(-}V(h?AmO!Fd-oJ~C<^W@u%XNOJ=As%Rnws7Ct2JrV0vr&ByKj!rvYp-~ENuPd# z$y!Z@Fq2S6SyeLErz{z%bi4NCRc*KCz+d{mkT!4y5v#>^?Y(j;wPu;Mh%XqM`Oo6* zG^8(SWQ-M0=rI=eunbQ4r*W8B<5>y2|Bb{w|+qCQA@jD{Cy+OC^J9kV^ z(Q!AFhpE5YCe!|f>i7hc`y*V8XOlmT`mF15v`pJf0qem~LGmd>@{Up}f=!c&rc*c( z#_44<3Kyp!5)QYE@dF+0+_(3f9f}uAc{2o|@y;DfT4+1gUw>^$WhN873^u%D350D* z2V{G*#LVa;8-n1f(;CsM%5#Yi;TUkIk`G;EfV}$7D#?fy(d8l{QSDz>o`PjpNL1N{Z z2Ei;Jtzz;*kl3%rF4dEj(7XMUjFi9r`bi$`&V7c%JvIwl`RM+3K57!x+6!RBT79UX zsN0}oeP^#$ThT8?j%`xs_!luO@KyaRcMPSmd<4=K^sc(5VMvPXBylQ*qX6`usMK^L zh9Z+5(1kS|S`M4oYl!$DDiC?F0CgEn@8Op5ks|=wk0;xHlAHu5NwV`3$U_SdhGvU! z40{cKj#9y-zAGd2zO!dT69Gu~ci`o)esA0G8hSu+%Z+Hb%D5e^PTn)gVki?Z44=)x zGM`1wN9Qm?nGx{K9H6l=a)Ali3=!O>$#~TQ!1whX(hzoiP5s#a5;SjKUx=JS=%{j&(nUVBA$+VEjt)j)r_h4v_LI@LCQp{~eCy|_LlstVl-O$c0B~_fsV&ZgRjOHUoFr#{ z>-o^_4?14E*=ctj*F{ZIx97DTc;LCND?o zxJH2wLf3Az;GdK8VR!d3n)^f+BSk<6-)su!i#)=4w7Va@R*jvEFD8*QL>TvKm#}K0 zCOnbeT@0OF{G6gZ%$I|OIltax>1~isueSa{N`s7qvf$4BKkCOoa?{^H1gh`Wv)oT} zvM8MTpLqAb0?)`wBM-1k%7cqJj250q zfqd{BPKB^e|AA8GKmM`0t9A0f)Jakn`v@yg>LFc2^ud(0jLVA+b;S@$JuZ!@Y6$QO z#RmkKB*6E`j@iL##$1#3KIyE(;snb0GctEkdjH zeTyyyhiK~x`V9OiqVy@q6P5w7Aw0#K*sv8?7RdbgC^CinfEWba=|23$J4a!If?W}x zG|5Mw>)3z#11Vha{*{T{AcR1n;I?qf9t~uSCL#97^jJWkf@X0F zb*3j-GJ~a$fmb!Dv6uv8A$&Ho2U>5QKB|>^IKL>I^Jd}vqVTEFq-KE2E_IUN!o!mp z2u-Rd4g=>0C&J%Jt%H#R zLrWC?NFNi4>FA8+X43@K@jA6kpCQ_`G)2|DWp*bvJmO{IJ* zW3`h45&-vAM^~-z6i!LH{|#euo)a!||*X zu(Q&mix+PnT)uqQ$sQaJ-X4B_>OFt^{?m(xA07qnZ)b<@?-$Sh{d)TT^!4Y_xZDvw`6T~6UeuK09y?YjWsXmB?ghvn zVo5QE(RuCQc}#T_K;=+)JZ7cQRg5h2G5!;=mQ@G9Y!rVYo{bosAuR{;yM{^?kOiOs zCFwm_NaRh4{V^~kLWhqmi7?TP2oRE$mvrR;!=P(1!POUpS@t2k1c)`scFyLim|q+||L^!Oe;gV7mwVmC zAnr$e+Z|PV-9kVAKHkgT$7$}Jepm6O?R4Bh-?KOJ9J(PMRnbI3B%we`y-QBnGzEpA zvh{9mmy@KC-${l_D=K+&n6#-$DxgDMeJQAA`ToqxJF80vaUzP&vut(Ya3;$B`u4cd zuNl@wO|egivleW-P2%5hn8R6jw8VoK>K6bpNfhRA+PCWQWTF_FXq^fC%(nICbl0|q z)`nZAqz287(^tSnXP;!fKf;`(O)@&IDgGFZXK4V(A2nV>74wj>(#R2so3$j7p@p(Y z$+c|5z!7gn;E1e=ot_kZ;5{3|xsuH9)Dse><6PDbUd72W@>A~r^D2!&8 ziXrt$TGXsoNHCvBv=(!cm*twm=&;2Aqf^6{WP4!F?xNE`YEh`jLNgH6m|XfeMi+qR zm)r~BKzvm^=jGkCrux2X6NM@!n2{W|=PdYCllPp3e?Ib4yfGC(;6>>iY7SV>a(@mh z@XlhCCHp_O@O9xfSady4n7}-qP%8yI)g4fSC1M3P(}hG z=q$Gnj!1L_%wijU$8;9qj580jng}!C{rwcs{^rGT1_V=%{g*-L!wyV7N|6dB5bc`9 zE57wH8xe^p5MS2=@CpFG&0=5=C{*I-`l@bG_2p$omH_=+U$s+IeVqEp3(3d&ioK%Z zD_9;d)$p$zdl5_Y$09pspV>hQ7nBq(0_*Y3#Vm)@43PW6$MhE#z14voXp9c3t3GtI z%_Of?mI3miYk@z&csThttlj15RFKGgY@}DUG~Q`pW*LmLuwn(}K?SEEQKp(Qg(x@L zHn}^OBoZsI*oIyl(%VW(v$p}Xc3Xkwg0y%DTUGWmNk_{&xg>Wgk4bPGK1XbB-WFc0 z(sh((I<E&)t&c}+lVZy>|*;86G^ z&VPwV*9D{xtc^h!*Y1v^BHHuu=!Ew>Tk<)2GguvM(q;(je0F_Yce<|9DLC^z$3)TB zMYVz;&jaQIR39(==tiWkp~{7w?se!#)+0<(eto*s7Scz zL|CuHY%RuuX~d(? zd#YG7C!=@xHn`&dH{T55pqcdOR@IZ{>qzR!h1=O znGQ%$s^wcmK{7KebY64}MIXj? z;L{(Uf`4b%?U5ktH*x zaWbLn0vPfWV90ryTk#?vU=R4`Y+OAxrvXlPd^F2V+tw!WjNV7rKJ(7eX{PIV-EPyd zd+wk&K;uu(?e+#ec;XG5PJdA0Hgo*y$oX4%&7^C+W}F^*CdKhFKDo?<$f1@W)(qcyx#JNc2UChFObD`XU| z3DN>fgrXeu;<0}zv0H1xxTsTNx)wEqmDNy!@xJiSXQyNkssf5M!fO}uNW8F^NV4^F zI44*E34>@2QHoiHR2(RJR2;U?idHGM!a0{RxGiIr5Elr(y=!VF=#9IkU6P^)t+J?3 zlo}7=koHJ^cjF#-YkH6oL0M`#o2%0Eb=#!MwUuqo<3)HWHR;S0yWnOm8ufOB3YewQ z{Bks|sp^PLRCtnbDJUftKRLq1KVlWcegGN@wZd|vKtb=_MMv;)M3-eTDY6FY!3~eAkTx4 z?nfu+&(}OlKuDqtyXJJ-HO{naj?-Z#_M-^z6nK+|7k-*sw0f9X+lLR1c0_b1oi$jj zfCP#$GDH6bgd8paY$J%5qH~<{L2s;|lLPB;f@z%4b)1-7@m|&NG_+1ZeBA|+cjRXu z!hD2sG&+k~*)mPi84eMvoX*l{lFq`#7|@hYp*%Y3H7zkt;%ff=hk56g)9>wDk7$M_ zIFQfdf@dUzM~Y2>#RO2HTI!l>qkd^jz2p5+yv!|Sa!aCM#Z0ZJl(nJMQSin~4 zkf@!(*w50sc7wdO>bqvWO5rfCb96r7vtuZu|}b}`4q*kv&TLo4BQRB~x@bf;{ZiP4N(yMuyRqbJ=1jg1LLoyRg0L)T^Gm8#K9Ssj0YOj;U~d-E~% zT8`UtyjB*4VbaLvn~dho>=S3ic=I<#BZYo;X%QG!KGRgd>hgsF^h*QqzJ5}2kiU}# zYz>Pkpm4*HJdUFYY(F1nQIz4N%izr&GhGFxP7o0F+#QT&Qy7eX!_ti(bn zX4rgYnz|~jDKkHHwRV8ZY9DfbJc<3L}_7YwlmdX<%X1;fOQ$(+}Bh z9eO(&VQ&#%k6*sR;RHY~{_GSeG|QG@MFZc7VA`t*ru}UQ<|u-NM?|^>Ox2P~dmoq7 z2i|%)^5=d%v%*hFh|(Y90%KwMqe+*AuQBhx0|MaSpl#@l zoDq6vf^nzTa&aD#=yVXD(BbEEm_{h(qE95z4sdMf98S!VH*f|AFCH9{e4!{fdHY-H zdpPjFI66FpH5XHXxuTeJ@Z!m{74JI-&!0V5@!mUlalER&d+_4$&C%iO6-C+yZ{i?e zURpS6E_e{BQITm1iP2z`Hi(dV06^OMv^Xeaj?&wC$UP#f-1ciy>Cg7TBg}t*(+f+c z!f-9`ZmL5S*;h%bbVavFckRa5&wVv@aSEqAj3S}BHnG!tBs(d-+Y{O^)CrNHagR%> z`~@*g?ol0zED>N#ZSA1pH2b%iSfF}rRssA30;Hdf{g2f!-KJLo6LH1Dl5Ua(r81=( zp_?5k@dlbEeAEZx2`;M@^0R588n9d!S&UA!TUF_+<#HGSY`6qKz0E=7vj0NrHjCa^ zWnfx%eDig02^Lj zofC|mHYRO=_rea?p{L82z-8g!xQO8_7+OzX9}*78A##m!m7V;}+oON}cY-ofQ&2`f z=(d->!;O3^f(fvrf1jv~-0|igmftlh!}jcMuWdX1jiNGch)B&6YV>;559#6rSfNuC zhqWrTFFRKmwT?G9!*|!8;VGMkr5}W=j`H+mr9`%!^H2>L1ltj1gD~P&VD<|yE}_4;H3{S{n5{g8zhev<0YQ8SM761liQ{^`Md-Dj54}E6Dkk)` z-40L~d}(()r|mTdZIB%Ly$TPL=l^{5_i!*t*QRCZb^5)2S8_1voQ=H?{d3`9g0`wm zLQ%5({5c96tA?I zw4Od~S`WfAd;*6N7k(_$Q#hl&US`v#g2r+vqOG$?7h%LMpve*`3(BId?%y7w$=etQZ{kY`Yc=>9Wb(70Bd6-O|8iFG0 ze=ad4-A;rV{3R%NPbN|`cxqvBoG;Q@y2Ark=MB}Lr@Dj-q2 zGg%VbTw~))Fj6=C5NELBJ6;<)Mta(Y&XJzF?Ou=cwBPosSNz|^XLRi)80~=r|Jl-( zK1$N*A`HZm&qF0j6%L1|t;ElB61>rJVJog3JPZAlD#}3wB}UMAnP(zVGOkuk&($E= zmuS|^@Z)lp-~kvdy^JyQ*oN%wwm%TBk+48Lo>nNe1S?&_aF#Ese4~~s% zYVbYz!(h;Mdwtj`H_OuV-B7)bKWw`E?T_bnx}Y0=f6$?fs^_?jQT5&bSC)UaKG9;Y z>%m#LSpJ=$J08r!d2t6$Iqk@3??WX2$FD7TTYy72FtX&h#IuG{VO z`-6d;qU1RJeSVz0f7eMXQM$^J;8i+1v7LX$! z_k+b`pCFyg{SP5paGTaEOgoGhJZMM4@6Qnonp&XJ&LlWH<5XH!Fs`Ew6O|HN|F1cM z6E4S|zxci>c7PdlJa5ChxxO2!wfs0$MggeU{_hwCGSf}7{a){UI^p-DW-IPT#g6`c zi~>Rb>@>~4>k-%UfbrXd%`SPnDI!-H1+Jr*?^P@2SHw(h6d#rN20cD~G17iB=O?qh zaqCv%FQd8Dgn#@ry}FAAK)j1Qn%#m&LH79ypWxl%%I(zLmXU_oEz3f)!IK%ezY-rW zGYlJ>OX=lie(m75$RE$o}H#e7Y_EVvQLKfIgaOhBw;-E@D}>aU&+mR&3-$a zOAUI>4*V|nl0!f@a}`9hqe3VF2<>nXhN2Jt_ykiwDL`CO=|uTe6ek&TuSlk*J+ja3 zQ-pN-x492X2e5&EZOh)5kWNceNK==?z(i7j$D)gPo#MuKO8CpXW%oXMEf~cK{ICbM zjn>H>i+5rXH_|YH#lO!6zrPRo*G@<67QA25ETJFu+L>x7-&xH~1csCU|JJW#qFZ{Xm8 zvfFh$uhZ;%eXrB2x~u2-)#1bI>2)4_c=_b{C;#&};(DD2kAJ@yzx$LQem-n`8y(Mj zV^Y7{x1DyO#IqV0!eL=wts_6pB5Bfq-n+;4vwy#cet&$t30Vb*m% zc5=UZf|uvo^roZvr_cVw-}7%Uy+9_)1c0Ihd3C@i_rg-BiZnHIf z>iYiN9#u|pAYojc>d)iFYj^x^eE!u_{qDv2Xz_a#EM6z?=bs|JqREX}MVb{kfhNfN zdg{L)6TW)FJAXf>&4Zfgj;vmhd)@qqKPI@#CU`Il6EATpCwLk!#=bhgu|NOSe!h5p z@ip`7KOQW9fBdL%Kk)PLG)^yvOwu}df-U}-)f>%fkNFscr};EIJ*%8me>tAD%BVkt z$3HNCBh2?1=4Z}gFdw(8cgSganMGl0!2S_?Rn7~^XG7l9Mx)V>P3?MfH26CSs$x5X z^T&_P>??IKOz+mtX5ojpQ_c4#a0JklZ@+(j?tm=$RdVU?^TFlshYfi%!$bnNUHjL3 zhIci?x8K6)EWm@v!7+5=$3)+3q8%=mc5=Jj8B|U*rfN7LnM>5^&fdSfaDSiw;(nd3 z^?3RFlV8rq^WQFO2hY$e?=?2{V^VK6sZ2xU#ooXkw5#{dvoK7w)%yabH26HWze*IH z{}u&@c*OVx8rW?24T9ju?t9H?_Wtfl1imH9dZQm(^HHXpR}%2}V!@@zSp zWz(6iO>lqt_`>_wr?2AJ?;<{v;2HTJlASJ=6Pc$3$6h>`!Jux zy=uh>ELt|n@a<%_$d)N4GAys-EO_$!^7+4Cf7L$izw3O4eR?{YzlboYFl)_x^U-&W z3o~XvNW8N}Hs#?=<&gY!)Fdv1I(*3E;^>V0uS3URY+f7%-!pWq*X`JDr(d9=UrY5bZ)5WeI_BEx1u~Sx6gwiJ)swu}@jG)xw{OdVb?Q{P*Gbm5 z=7z;{dm4XO(k-Wpm&Cb1t+s<-dS0I-@UXqE-S?{YoaZmzKKtA4Ir-Yu86CIddYyjZ z>}=Kvq`Tsqf(o=*hS?1{xQRw&9HZ^8D=-k zVaCTdxu53rUY-Af?3^2~uAR>E+=-b$mzR^wtesV!DF9}XNpuV||7+pdw$H3y)rX{IiY&8jIt0!JXykX+FZiZqZ*lX*XeY$*g_I3$AEz(%OfQB z1{g<)7t=dUH=J8EcltkAK}@+W1^sb>wut##Bhg+@pk`E2gF)&jdzJ3b^2)QjHD04|y0btP>=j+GjF7noC3J2|$`^jzDw&x87G%6RvRhwNv zun5a7I!^*@p>K@~DqQ0nOZn?Xq6jRm2-K#_+g}l&4eQ;MXC2C{!!*R3kYnl6b``3Y z-WuhG=a}G@=gd8t&Vmo&!g>=g@!kwctia1bI+)q*ZiC?m@63_7K^g|LB+Obc9r@I6 zWb|fD_ShZ3;_tRw@MhKsXd{gb8Yv4)Q5DL`09tncqeH)*$iN(L@X2uo(p_$E;jJ>B z;<{IFAYb=7phDEoaU|=>fHBm*``}A`G->Se+%5IQS=$qkIQUn$i@TzK5oYl`6dhPV zy(pypIHd1HS6+~J&1TcwAFtFOcWr<0al>DX8?Xh2t&ZD!IB?xwW8geGZnQg&-FVP> z=pH|4JH39_ec18bmY>c1g}J-RBinx1XnRhl(La3T zK5~yAb-E8aPWz$P%HuSjMUl^Dmi=1Mtxl<1?d!~{;|>OHE0~617LuNh(l`JHtdZCe zDL@jOJzxbY=e1kvQD<$B61?7Vv`jA>Bg}_3nY7xD>-JmFcs|9e|H8DG#L+AZmb1K( z#PD|(9=wqX@%dDG*NVmUC|nxm!m!fMZe>5YbcZ+MSg&cP*~Lx@cZ?GnPr6!>fsFSp z-jaIfmhBDpGwW@fSTw#f%p|V6RR&zTSs4bn0eEAw^jJzn@}l-+ya zryrv5(%c>`W3e*Ysu1MUy(#%D0=&X>7Th~R(?P|Ui((cn_I1N{+vaB6_SeCEW!-W9ZN+U7 zX-_YG;WtB?3Mc14+3D=u4=zFWjb_1RWl_9y>}{CNN%rwKVR}AO%xr35OziPyd3uWX zOTgYg%d3lqiO4AN7RY4|94xLZ>?G0#7lvazu{5V)l*lgl{CP4>?l)1SK7MtliI)rx z;qZE=IgS_MkiodPxF~8O-atG!X7$(K{f61NE(n#EoqE{}2XS&Kk_46}`G~)@?qI=v znn#0SoFb5vaCZXuCsc|uV47zX8?8VnLW0%@2QDudtSfYh5t560D3bts#>P+si`z2 z8Xhb%Z;_6;`mCJ&)^*z;B{yBW2kYBydL6IZbzS%k2=8^d;rZpuw`@R;-S0bY=YLHc zt}~u4^YM30Gu-b0T*o2zD6CghelJX`^rNDhpcKTEiyFUswrmY2I<$sMGs@9~tdeG> zP`GH>j9a64e7RmCAqZ<8C$Mvkt)T@nKFOf8y>qp7?x&W2n4V_v+)q!*9hlj!wZKQu z!o?|w3PW0;8IhkL(M)GqGkyzgVWq3Bv&`DFYW#l9-K`)a52D%PLv8EJR`wzuhr?|N z;(@ng-M1t#e~ zQroq*X)lJNoA<2}p0LwGi@am~iO}F&odzL?W&{J%ORC~#RkL=iU5c(h>^~_8yfjpF zXxl17_`|Bv#JRhca#QJ_q{&(uM&uQ}8(|uTmIRuhX*Rxh&-&{x%O*ue z58%l0;mC(mH7TM@gJa#f!#eBy`O~mo$7$iep*REaI-JMnp=d<`;T9lV4TQ@;011$e zfdFivJ)}o|_v$`qO8bm;?q(Dm1e&7w;G<2xC5+$-0|NrkGg&6HkAlL^=>w@ir@+rBrnYWLFxh>y_3b3dOp zQy+GrIqpYaHXI{^Rx!$=tsORPPcS(sPFrzVX#TH=pCaTL}z@|}3H{bBNGf!C_-z}kRw30|@k z0ve#MT(6ldv*~vI!(>>$Cu&HYgGHyb!&tF(K$hrz_1#%KTWr_wKqGrry^hoK1qUUD zM6Q8T7ovV*b@dbL$r7XkKBmjlWdP%;iSg8S?mMtyDccN8xDX=FGW90OGsPNlanZ_> zR!pv^J8_y`v)u#+T;Hve|E)Uy*!f1lJI%HYB@}ouJ?l1?$ry(J;8eqnxEOji2T>5V zBzjhfF+=o8=!UgF$qBIpZgjd|RX2}MPor>EWm@6^fcS!Bz%Q34!x$#0zm30dij<-E~sjm&!Xm|bA;`W$IoV2 z9xlRE1B_D%N5~KLUC}RC)Fl8JNI&EoyxrG2!tlbHw|B3yL%JMc`-Qe@Utpz^b@N5W z%60Kk3qJ*6f(8Akrl5n82rh~@xj#>~>rzRe)^S~B9w(R4bjTLX`)5y79&jI?+^e_h zd-b|BhsS;t#EVyWttt_6@;wXB7rR^2**M%Q?VcemFYTeF$(@iAb;?{#?KE=$7DPaJ zoViw%D#j*F7iG4^lqWdPAHvHd4RH}$Mp!r)6Y=Q4=yJJ8ajQrr0{S|ru9mM?lPQ|`>Sl`*O8)Uax%;w5+B)vL>r`wDcDw=ut^f%aj9o)>x^$z&&p4D({ z+xlX`_UP=&03Z2yFJm+Gv+(5-XCB)H{(~BxD9k~4SdLIk9fk5vyv4gvu^F@1NJtzc z{sT*j?7F*KcmtvJ^;FK=xiYS+CW@hEQKAz2+eCx_WDy}^HPid56`(-+Hsr5>{Ce7# z!TpyA|BK4e+akJfFH2&Vb-v`Oo9=GNOb>iR{hnbNH6v<{6w^ zR}fnbuN0$LBxhVkbZUKE4eAqEK4h>%6Twk%uRuz`O53#@PN4ft`UBd|!hIqLtlGtM zw5C#wvvotByv0j1v<)0fK^wdRjzE-cj*h1O;xvTsLtB2H9W7H_*6;)1)h8hau!dvQ zKo*4pQkU+^#Xf>k$t!;mM!Q$^K)#2!M$~p|b216|6CuC@ED1kB2uLq?nc?G$(mhzY z%LKnELM?gvCMP!?l9$YC;?#CU)!mxtbCB0|*5Om3VTMsOp=3h?E~UZ2{M(YzL?Y7{tp(o?ar}HYmher5(iw$u zaeS^9oD*OKAW){Hczw47L6tN4sexkat)Iexh>ooG^aU)Yv^DF%()#tE^m`Y+A05)~ zJ^23W3H{!O@6X@U@3=PKJf`0REYILf;QQgP^!pUPzxbVgpTYNskLdR^`2O@E{r;i$ zWz#Jrn}7&Xr^&eG{XjjQ(I2~XA+DKgSf-h>dhtOuJLJWYV0lT68H&d@WpfBX<8p+( z3BbzQM{Ni@Jye`PG_}I2qY4>b3=Ctxx(s2Jqj7PR`68t{uO6Ufab2l$!9{Ps3VGRsAV@5dy{a%a)=|TG_3_B>_#28X(Iv z0vG#V(HGj0ohDxN^XcVeyFRS%9N049icxN}CCwMGDwBvpOuP}I2;X^s5`}RQ$t~dT z;nf!fxA?62_98@j8D4Fr;RH5_=~E1qKKG+NtFyb6{hCI&{V@Gl{a&%RPva~{JHx$t zYX*|&avWx@ESaUV96n-Tr#OaIfZApBz73{xe~h}a-7SpONx33o;?E+Gq29{RDC!=4 zf@7uAx$Cy?c5VD0&r4fh_RRxe3uP!%ED__w9cwk^7Vt))4<~``dfJ+F>rBo#e)Zz* z(AXkgZMAjpaI{$V^v zf+D52mG*$e(hGa)JHufe@4cz((=RZUE*HoEY5gZ-pi6lAR9Xb1ic5Wv9?1-y{7H z#Ii${VhCL1%G4QxlZt_{cgB9QcV=v5)A*uJW{JEfl)Ymy{VGv{@#Q2JSTSh(MuV55@M)SXK3o}orM8HaM4cEJ zDqUO0v?4|As&3^J-YQI*L0^kHG&)~P;3`iA+ICiT5JWG$7Zr{qNxaBR$HY~ATRW?i zTl={$yCx6=B5o5ukyp(zzW?hltM~=9oCjz^{%L60NOY^`iApoLCMm~wjnPXA(~v>q zOU_&P&QVb|psxk;#!WxZVR!vCV#5uA=dD7o%&@PC+hSW%xE}>Kwn8{QU0S#ZwvEf* z`q^^Pt_Wvp8;C!^v#qfltR~ENP+v6+RMB0Zr6F>L)knL)_t{bZrvjH2pG$0E_FC=h zP?T#Dr$>~Y2>`tyiXnR4#80yjew7L{LDB$bI7ErDpstWa2bRkn*yuu`KmFP1?l8*L za6Z(FQZZH`$<>HsgjttFidCw0ta36P7sX-IT~~f0L8sKavN)y7x1Xe1WErljM+()~ zovipErDGCheMA724P(*~fbQ=gn>m7o=mL}``doU9rySW^W?bZr+Ldy#*X&18vKlFy@Iom|F@xf)k{=ARd7uol@xm>TZoqaP=*=9f_} z!T`>*6IKH=E08Z$0TTX2;q#8yYQ)WoFbVorX@Wc;w{FB$;79h__>0zfmdaq^CmfAY z`*rY;f2{;B1@leg{45?R3Af>A7=8#-`mKyGn*UF391Cjx?^rl6Vk&DUc52R~cnex4i#dV7bd5Sq($lZ!0Vy`B7q>6&%J$=HjY-D46u!KHh zVu{SUKZvwp1|Ly~K+)k%5a-SOf`n->eIUkf7%4F9a&4|`4mspg zU6NpzB*!clgG4YMCUjIn9EZRCw38-4ca+5UpqI{tot!0hRMgAB9G z5^(?TjFN4Hz)#w3gn4WPI?QF8AYk>h3Fcc&KzaXe18C?5JHJAIpVR+L{RK=V$#0)U z_5x{FDmnhx_%vwsR8WMwl)=HNQ3L#?EfRzya@-B#1~5+;2kv0{L_&(}5$Cp(fP!Qd zzJ*m3n=YTKRYoK%8tdOEpbLq!^@#<}kNFlOPDm`A8#^jg<;44CV49htc7;&v@Izj9 ztoM4oSQ3e!qLPw?HbrRS3gd@EH(*?5KcqG9x56|l2tq-S4hz+CwIChBU#WbEU?RlF z2AP%^mBRLL-ujCUsW`N4g>7RBqT@P=F8m8x?#uR?JIixTL!W>P zfSJo{u4Tyf+%cCtdU`nRuMD1RYHKqBnzb0K77q6O!Aq>Vvnmud=}p(~uWp;iCmm2U"); + .append("


") + .append(getString(R.string.app_htmlcleaner_license)); + wv.loadDataWithBaseURL("file:///android_res/drawable/", html.toString(), "text/html", "utf-8", null); new AlertDialog.Builder(this) diff --git a/src/com/fsck/k9/activity/MessageCompose.java b/src/com/fsck/k9/activity/MessageCompose.java index 243ffd865..fad33edcb 100644 --- a/src/com/fsck/k9/activity/MessageCompose.java +++ b/src/com/fsck/k9/activity/MessageCompose.java @@ -47,6 +47,11 @@ import android.widget.MultiAutoCompleteTextView; import android.widget.TextView; import android.widget.Toast; +import org.htmlcleaner.CleanerProperties; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.SimpleHtmlSerializer; +import org.htmlcleaner.TagNode; + import com.fsck.k9.Account; import com.fsck.k9.Account.QuoteStyle; import com.fsck.k9.Account.MessageFormat; @@ -842,7 +847,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc mMessageFormat = (MessageFormat) savedInstanceState .getSerializable(STATE_KEY_MESSAGE_FORMAT); mReadReceipt = savedInstanceState - .getBoolean(STATE_KEY_READ_RECEIPT); + .getBoolean(STATE_KEY_READ_RECEIPT); mCcWrapper.setVisibility(savedInstanceState.getBoolean(STATE_KEY_CC_SHOWN) ? View.VISIBLE : View.GONE); mBccWrapper.setVisibility(savedInstanceState @@ -1515,10 +1520,10 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc private void onReadReceipt() { CharSequence txt; if (mReadReceipt == false) { - txt=getString(R.string.read_receipt_enabled); + txt = getString(R.string.read_receipt_enabled); mReadReceipt = true; } else { - txt=getString(R.string.read_receipt_disabled); + txt = getString(R.string.read_receipt_disabled); mReadReceipt = false; } Context context = getApplicationContext(); @@ -2357,6 +2362,12 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc } } + // Regexes to check for signature. + private static final Pattern DASH_SIGNATURE_PLAIN = Pattern.compile("\r\n-- \r\n.*", Pattern.DOTALL); + private static final Pattern DASH_SIGNATURE_HTML = Pattern.compile("(|\r?\n)-- ", Pattern.CASE_INSENSITIVE); + private static final Pattern BLOCKQUOTE_START = Pattern.compile("", Pattern.CASE_INSENSITIVE); + /** * Build and populate the UI with the quoted message. * @throws MessagingException @@ -2370,6 +2381,79 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc ? mSourceMessageBody : getBodyTextFromMessage(mSourceMessage, mMessageFormat); if (mMessageFormat == MessageFormat.HTML) { + // Strip signature. + // closing tags such as , , , will be cut off. + if (mAccount.isStripSignature() && (ACTION_REPLY_ALL.equals(getIntent().getAction()) || + ACTION_REPLY.equals(getIntent().getAction()))) { + Matcher dashSignatureHtml = DASH_SIGNATURE_HTML.matcher(content); + if (dashSignatureHtml.find()) { + Matcher blockquoteStart = BLOCKQUOTE_START.matcher(content); + Matcher blockquoteEnd = BLOCKQUOTE_END.matcher(content); + List start = new ArrayList(); + List end = new ArrayList(); + + while(blockquoteStart.find()) { + start.add(blockquoteStart.start()); + } + while(blockquoteEnd.find()) { + end.add(blockquoteEnd.start()); + } + if (start.size() != end.size()) { + Log.d(K9.LOG_TAG, "There are " + start.size() + "

tags, but " + + end.size() + "
tags. Refusing to strip."); + } else if (start.size() > 0) { + // Ignore quoted signatures in blockquotes. + dashSignatureHtml.region(0, start.get(0)); + if (dashSignatureHtml.find()) { + // before first
. + content = content.substring(0, dashSignatureHtml.start()); + } else { + for (int i = 0; i < start.size() - 1; i++) { + // within blockquotes. + if (end.get(i) < start.get(i+1)) { + dashSignatureHtml.region(end.get(i), start.get(i+1)); + if (dashSignatureHtml.find()) { + content = content.substring(0, dashSignatureHtml.start()); + break; + } + } + } + if (end.get(end.size() - 1) < content.length()) { + // after last
. + dashSignatureHtml.region(end.get(end.size() - 1), content.length()); + if (dashSignatureHtml.find()) { + content = content.substring(0, dashSignatureHtml.start()); + } + } + } + } else { + // No blockquotes found. + content = content.substring(0, dashSignatureHtml.start()); + } + } + + // Fix the stripping off of closing tags if a signature was stripped, + // as well as clean up the HTML of the quoted message. + HtmlCleaner cleaner = new HtmlCleaner(); + CleanerProperties properties = cleaner.getProperties(); + + // see http://htmlcleaner.sourceforge.net/parameters.php for descriptions + properties.setNamespacesAware(false); + properties.setAdvancedXmlEscape(false); + properties.setOmitXmlDeclaration(true); + properties.setOmitDoctypeDeclaration(false); + properties.setTranslateSpecialEntities(false); + properties.setRecognizeUnicodeChars(false); + + TagNode node = cleaner.clean(content); + SimpleHtmlSerializer htmlSerialized = new SimpleHtmlSerializer(properties); + try { + content = htmlSerialized.getAsString(node, "UTF8"); + } catch (java.io.IOException ioe) { + // Can't imagine this happening. + Log.e(K9.LOG_TAG, "Problem cleaning quoted message.", ioe); + } + } // Add the HTML reply header to the top of the content. mQuotedHtmlContent = quoteOriginalHtmlMessage(mSourceMessage, content, mQuoteStyle); // Load the message with the reply header. @@ -2378,6 +2462,12 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc getBodyTextFromMessage(mSourceMessage, MessageFormat.TEXT), mQuoteStyle)); } else if (mMessageFormat == MessageFormat.TEXT) { + if (mAccount.isStripSignature() && (ACTION_REPLY_ALL.equals(getIntent().getAction()) || + ACTION_REPLY.equals(getIntent().getAction()))) { + if (DASH_SIGNATURE_PLAIN.matcher(content).find()) { + content = DASH_SIGNATURE_PLAIN.matcher(content).replaceFirst("\r\n"); + } + } mQuotedText.setText(quoteOriginalTextMessage(mSourceMessage, content, mQuoteStyle)); } diff --git a/src/com/fsck/k9/activity/setup/AccountSettings.java b/src/com/fsck/k9/activity/setup/AccountSettings.java index 9ca88f15d..f3acb7d15 100644 --- a/src/com/fsck/k9/activity/setup/AccountSettings.java +++ b/src/com/fsck/k9/activity/setup/AccountSettings.java @@ -93,6 +93,7 @@ public class AccountSettings extends K9PreferenceActivity { private static final String PREFERENCE_QUOTE_STYLE = "quote_style"; private static final String PREFERENCE_DEFAULT_QUOTED_TEXT_SHOWN = "default_quoted_text_shown"; private static final String PREFERENCE_REPLY_AFTER_QUOTE = "reply_after_quote"; + private static final String PREFERENCE_STRIP_SIGNATURE = "strip_signature"; private static final String PREFERENCE_SYNC_REMOTE_DELETIONS = "account_sync_remote_deletetions"; private static final String PREFERENCE_CRYPTO_APP = "crypto_app"; private static final String PREFERENCE_CRYPTO_AUTO_SIGNATURE = "crypto_auto_signature"; @@ -152,6 +153,7 @@ public class AccountSettings extends K9PreferenceActivity { private EditTextPreference mAccountQuotePrefix; private CheckBoxPreference mAccountDefaultQuotedTextShown; private CheckBoxPreference mReplyAfterQuote; + private CheckBoxPreference mStripSignature; private CheckBoxPreference mSyncRemoteDeletions; private CheckBoxPreference mSaveAllHeaders; private CheckBoxPreference mPushPollOnConnect; @@ -241,6 +243,9 @@ public class AccountSettings extends K9PreferenceActivity { mReplyAfterQuote = (CheckBoxPreference) findPreference(PREFERENCE_REPLY_AFTER_QUOTE); mReplyAfterQuote.setChecked(mAccount.isReplyAfterQuote()); + mStripSignature = (CheckBoxPreference) findPreference(PREFERENCE_STRIP_SIGNATURE); + mStripSignature.setChecked(mAccount.isStripSignature()); + mComposingScreen = (PreferenceScreen) findPreference(PREFERENCE_SCREEN_COMPOSING); Preference.OnPreferenceChangeListener quoteStyleListener = new Preference.OnPreferenceChangeListener() { @@ -726,6 +731,7 @@ public class AccountSettings extends K9PreferenceActivity { mAccount.setQuotePrefix(mAccountQuotePrefix.getText()); mAccount.setDefaultQuotedTextShown(mAccountDefaultQuotedTextShown.isChecked()); mAccount.setReplyAfterQuote(mReplyAfterQuote.isChecked()); + mAccount.setStripSignature(mStripSignature.isChecked()); mAccount.setCryptoApp(mCryptoApp.getValue()); mAccount.setCryptoAutoSignature(mCryptoAutoSignature.isChecked()); mAccount.setLocalStorageProviderId(mLocalStorageProvider.getValue()); diff --git a/src/com/fsck/k9/preferences/AccountSettings.java b/src/com/fsck/k9/preferences/AccountSettings.java index 13c4d089a..060833cc2 100644 --- a/src/com/fsck/k9/preferences/AccountSettings.java +++ b/src/com/fsck/k9/preferences/AccountSettings.java @@ -65,6 +65,7 @@ public class AccountSettings { s.put("quoteStyle", new EnumSetting(Account.QuoteStyle.class, Account.DEFAULT_QUOTE_STYLE)); s.put("replyAfterQuote", new BooleanSetting(Account.DEFAULT_REPLY_AFTER_QUOTE)); + //s.put("stripSignature", new BooleanSetting(Account.DEFAULT_STRIP_SIGNATURE)); // added to version 2 s.put("ring", new BooleanSetting(true)); s.put("ringtone", new RingtoneSetting("content://settings/system/notification_sound")); s.put("saveAllHeaders", new BooleanSetting(true)); From 22e61b987ef6e1da7dc1430298a5ac0477b2f5a0 Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 14 Nov 2011 14:23:29 -0800 Subject: [PATCH 15/39] Add javadoc for getSignatureHtml() and use StringUtil.isNullOrEmpty(). --- src/com/fsck/k9/activity/MessageCompose.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/fsck/k9/activity/MessageCompose.java b/src/com/fsck/k9/activity/MessageCompose.java index fad33edcb..0160e8bee 100644 --- a/src/com/fsck/k9/activity/MessageCompose.java +++ b/src/com/fsck/k9/activity/MessageCompose.java @@ -10,6 +10,7 @@ import java.util.regex.Pattern; import android.text.*; import android.webkit.WebViewClient; import com.fsck.k9.helper.HtmlConverter; +import com.fsck.k9.helper.StringUtils; import com.fsck.k9.mail.*; import com.fsck.k9.view.MessageWebView; import org.apache.james.mime4j.codec.EncoderUtil; @@ -1395,11 +1396,15 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc return text; } + /** + * Get an HTML version of the signature in the #mSignatureView, if any. + * @return HTML version of signature. + */ private String getSignatureHtml() { String signature = ""; if (mIdentity.getSignatureUse()) { signature = mSignatureView.getText().toString(); - if (signature != null && !signature.contentEquals("")) { + if(!StringUtils.isNullOrEmpty(signature)) { signature = HtmlConverter.textToHtmlFragment("\n" + signature); } } From 9201d16659de89d7d184014f923ef5208829f9ed Mon Sep 17 00:00:00 2001 From: ashley willis Date: Mon, 14 Nov 2011 17:28:45 -0600 Subject: [PATCH 16/39] add MessageFormat.AUTO so that text/html messages are created only when necessary. --- res/values/arrays.xml | 2 ++ res/values/strings.xml | 1 + src/com/fsck/k9/Account.java | 2 +- src/com/fsck/k9/activity/MessageCompose.java | 18 ++++++++++++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 7089a8471..d90e51f8f 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -677,11 +677,13 @@ @string/account_settings_message_format_text @string/account_settings_message_format_html + @string/account_settings_message_format_auto TEXT HTML + AUTO diff --git a/res/values/strings.xml b/res/values/strings.xml index 7b0409b04..94a4449a7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -568,6 +568,7 @@ Welcome to K-9 Mail setup. K-9 is an open source mail client for Android origin Message Format Plain Text (images and formatting will be removed) HTML (images and formatting are preserved) + Automatic (plain text unless replying to an html message) Read receipt Always request a read receipt diff --git a/src/com/fsck/k9/Account.java b/src/com/fsck/k9/Account.java index 3a891c286..fc324a2b8 100644 --- a/src/com/fsck/k9/Account.java +++ b/src/com/fsck/k9/Account.java @@ -191,7 +191,7 @@ public class Account implements BaseAccount { } public enum MessageFormat { - TEXT, HTML + TEXT, HTML, AUTO } protected Account(Context context) { diff --git a/src/com/fsck/k9/activity/MessageCompose.java b/src/com/fsck/k9/activity/MessageCompose.java index 3a282a947..c25279a4d 100644 --- a/src/com/fsck/k9/activity/MessageCompose.java +++ b/src/com/fsck/k9/activity/MessageCompose.java @@ -75,6 +75,7 @@ import com.fsck.k9.mail.store.LocalStore.LocalAttachmentBody; public class MessageCompose extends K9Activity implements OnClickListener, OnFocusChangeListener { private static final int DIALOG_SAVE_OR_DISCARD_DRAFT_MESSAGE = 1; + private static final String ACTION_COMPOSE = "com.fsck.k9.intent.action.COMPOSE"; private static final String ACTION_REPLY = "com.fsck.k9.intent.action.REPLY"; private static final String ACTION_REPLY_ALL = "com.fsck.k9.intent.action.REPLY_ALL"; private static final String ACTION_FORWARD = "com.fsck.k9.intent.action.FORWARD"; @@ -280,6 +281,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc } Intent i = new Intent(context, MessageCompose.class); i.putExtra(EXTRA_ACCOUNT, account.getUuid()); + i.setAction(ACTION_COMPOSE); context.startActivity(i); } @@ -533,6 +535,16 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc } mMessageFormat = mAccount.getMessageFormat(); + if (mMessageFormat == MessageFormat.AUTO) { + if (ACTION_COMPOSE.equals(action)) { + mMessageFormat = MessageFormat.TEXT; + } else if (mSourceMessageBody != null) { + // mSourceMessageBody is set to something when replying to and forwarding decrypted + // messages, so we set the format to plain text. + mMessageFormat = MessageFormat.TEXT; + } + } + mReadReceipt = mAccount.isMessageReadReceiptAlways(); if (!mSourceMessageProcessed) { @@ -2243,6 +2255,12 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc * @throws MessagingException */ private void populateUIWithQuotedMessage(boolean shown) throws MessagingException { + if (mMessageFormat == MessageFormat.AUTO) { + mMessageFormat = MimeUtility.findFirstPartByMimeType(mSourceMessage, "text/html") == null + ? MessageFormat.TEXT + : MessageFormat.HTML; + } + // TODO -- I am assuming that mSourceMessageBody will always be a text part. Is this a safe assumption? // Handle the original message in the reply From 44cc1930d5a82313c77553599adb734764426291 Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 14 Nov 2011 15:30:09 -0800 Subject: [PATCH 17/39] If we auto-config a Yahoo! account, set the spam folder to be "Bulk Mail." --- src/com/fsck/k9/activity/setup/AccountSetupBasics.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java index 81773b8ba..243069c30 100644 --- a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -225,7 +225,12 @@ public class AccountSetupBasics extends K9Activity mAccount.setDraftsFolderName(getString(R.string.special_mailbox_name_drafts)); mAccount.setTrashFolderName(getString(R.string.special_mailbox_name_trash)); mAccount.setArchiveFolderName(getString(R.string.special_mailbox_name_archive)); - mAccount.setSpamFolderName(getString(R.string.special_mailbox_name_spam)); + // Yahoo! has a special folder for Spam, called "Bulk Mail". + if (incomingUriTemplate.getHost().toLowerCase().endsWith("yahoo.com")) { + mAccount.setSpamFolderName("Bulk Mail"); + } else { + mAccount.setSpamFolderName(getString(R.string.special_mailbox_name_spam)); + } mAccount.setSentFolderName(getString(R.string.special_mailbox_name_sent)); AccountSetupCheckSettings.actionCheckSettings(this, mAccount, true, true); } catch (UnsupportedEncodingException enc) { From 58d20a501a37880ffcd185932fb76d3a7c2f77a9 Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 14 Nov 2011 15:41:37 -0800 Subject: [PATCH 18/39] Set the IMAP namespace for Gmail during auto-configuration. --- .../fsck/k9/activity/setup/AccountSetupBasics.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java index 243069c30..fbb14d26a 100644 --- a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -193,9 +193,16 @@ public class AccountSetupBasics extends K9Activity incomingUsername = incomingUsername.replaceAll("\\$domain", domain); URI incomingUriTemplate = mProvider.incomingUriTemplate; + + String namespace = null; + // Gmail uses a special namespace, otherwise everything ends up in the "[Imap]" namespace. + if(incomingUriTemplate.getHost().toLowerCase().endsWith("gmail.com")) { + namespace = "/[Gmail]"; + } + incomingUri = new URI(incomingUriTemplate.getScheme(), incomingUsername + ":" - + passwordEnc, incomingUriTemplate.getHost(), incomingUriTemplate.getPort(), null, - null, null); + + passwordEnc, incomingUriTemplate.getHost(), incomingUriTemplate.getPort(), + namespace, null, null); String outgoingUsername = mProvider.outgoingUsernameTemplate; From ab46209b538210ea6c4b7d81e27342504d1df58a Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 14 Nov 2011 16:00:27 -0800 Subject: [PATCH 19/39] Updated zh-rTW translation by Jeff117077. --- res/values-zh-rTW/strings.xml | 1259 +++++++++++++++++++++++++++------ 1 file changed, 1062 insertions(+), 197 deletions(-) diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 7d8b579ff..b249fe0a0 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -1,199 +1,1064 @@ - - 將會從電子郵件中移除 \"%s\" 帳號。 - 移除 - 帳號設定 - 新增其它帳號 - 預設帳號 - 根據預設,從此帳號傳送電子郵件 - 帳號名稱 - 內送設定 - 設定內送電子郵件伺服器 - 電子郵件檢查頻率 - 您的名字 - 電子郵件通知 - 電子郵件到達時在狀態列顯示通知 - 外寄設定 - 設定外寄電子郵件伺服器 - 顯示合併收件匣 - 帳號設定 - IMAP 帳號 - 此帳號的類型? - POP3 帳號 - 加入新的電子郵件帳號 - 根據預設,從此帳號傳送電子郵件。 - 已經新增 %s - %s 不是有效的電子郵件地址。 - 電子郵件地址 - 輸入帳號的電子郵件地址: - (您尚可新增 %d 個帳號。) - 手動設定 - 密碼 - 設定電子郵件 - 正在取消\u2026 - 正在檢查傳入伺服器設定\u2026 - 正在檢查傳出伺服器設定\u2026 - 正在結束\u2026 - 正在擷取帳號資訊\u2026 - 使用者名稱或密碼不正確。\n(%s) - 無法安全地連線到伺服器。\n(%s) - 編輯詳細資料 - 無法連線到伺服器。\n(%s) - 無法結束設定 - 帳號已經完成設定!\n\n正在預取電子郵件\u2026 - 7 天之後 - 從收件匣刪除時 - 從伺服器刪除電子郵件: - 永不 - 可省略 - IMAP 路徑字首 - IMAP 伺服器 - 密碼 - POP3 伺服器 - 連接埠 - 安全性類型 - - SSL (永遠) - SSL (若有的話) - TLS (永遠) - TLS (如果有的話) - 內送伺服器設定 - 使用者名稱 - 設定帳號名稱 (可省略): - 帳號已經完成設定,正在傳送電子郵件! - 設定電子郵件 - 輸入名稱 (顯示在傳出訊息): - 根據預設,從此帳號傳送電子郵件。 - 每 10 分鐘 - 每 15 分鐘 - 每小時 - 每 30 分鐘 - 每 5 分鐘 - 電子郵件檢查頻率 - 永不 - 電子郵件到達時通知我。 - 帳號選項 - 使用者名稱與密碼 - 密碼 - 使用者名稱 - IMAP 優先,其次 SMTP - 驗證類型 - POP 優先,其次 SMTP - 密碼 - 連接埠 - 需要登入。 - 安全性類型 - - SSL - TLS (永遠) - TLS (如果有的話) - SMTP 伺服器 - 外寄伺服器設定 - 使用者名稱 - 帳號 - 帳號選項 - 您的帳號 - 歡迎使用電子郵件設定!\n\n您可以使用任何的電子郵件帳號發送電子郵件。\n\n只要簡單的兩個步驟,即可完成常用之電子郵件帳號的設定! - 新增帳號 - 新增附件 - 新增副本/密件副本 - 電子郵件 - 取消 - 來自所有帳號的最近訊息 - 所有電子郵件收件匣 - 所有電子郵件 - 撰寫 - 撰寫 - 繼續 - 偵錯 - 版本:%s - 刪除 - 放棄 - 完成 - 刪除設定 - 編輯主旨 - 清空垃圾筒 - 資料夾 - 转发 - (無主旨) - 新增資料夾 - 資料夾 - 標記為已讀取 - 標記為未讀取 - 由於尚未下載附件;因此無法轉寄。 - 密件副本 - 副本 - 某些附件未下載。在傳送此訊息之前,將會自動下載附件。 - 必須新增至少一位收件者。 - -------- 原始郵件 -------- - 主旨: - 寄件者: - 收件者: - 副本: - 引用的文字 - \n%s 說:\n\n - 主旨 - 收件者 - 複製的訊息。 - 刪除的訊息。 - 放棄的訊息。 - 載入更多訊息 - %s (%d) - 移動的訊息。 - 儲存為草稿的訊息。 - 儲存 - 開啟 - yyyy MMM dd hh:mm a - 正在取得附件。 - \u25BC - \u25B2 - 顯示圖片 - 選取 \"顯示圖片\" 即可顯示內嵌的圖片。 - 無法將附件儲存到 SD 卡。 - 將儲存到 SD 卡的附件做為 %s - 收件者: - 移到 - 新資料夾名稱 - 下一步 - %d 帳號中 - %d 封未讀 (%s) - 來自 %s 的新電子郵件 - 新增電子郵件 - 尚未傳送訊息 - 確定 - 開啟 - 偏好設定 - 只有某些 \"Plus\" 帳號才有包括 - 允許此程式連線存取的 POP。如果無法利用 - 正確的電子郵件地址及帳號登入,則表示您可能沒有申請付費的 - \"Plus\" 帳號。請啟動網頁瀏覽器,以便取得 - 這些郵件帳號的存取權限。 - 讀取 - 允許此應用程式讀取電子郵件附件。 - 讀取電子郵件附件 - 重新整理 - 移除帳號 - 移除 - 回覆 - 全部回覆 - 重試 - 儲存為草稿 - 搜尋 - 傳送 - 草稿 - 收件匣 - 寄件匣 - 寄件日期 - 垃圾筒 - 錯誤 - 正在載入\u2026 - 載入訊息中\u2026 - 重試載入更多訊息 - 連線錯誤 - 正在傳送\u2026 - 檢視/隱藏詳細資料 - Unrecognized Certificate - Accept Key - Reject Key + + K-9 Mail + K-9 Mail測試版 + 谷歌以及幫著遛K-9的小朋友們。 + + + 作者: %s + 更新日誌: %s + + + + 顯示附件 + 允許該程式讀取附件。 + 顯示郵件 + 允許該程式讀取郵件。 + 刪除郵件 + 允許該程式刪除郵件。 + + 關於%s + 帳戶 + 高級 + %s + K-9帳戶 + + %s%s + + 新郵件 + 除錯 + 選擇文件匣 + 選擇顏色 + + %s%s%s + + \u0020〔%d + \u0020(正在接收%s%s%s + \u0020(正在接收郵件訊息%s%s%s + \u0020(正在寄送%s%s + \u0020(正在處理%s%s%s + \u0020%s/%s + + \u0020(下次接收時間:%s + + + + 下一步 + 上一步 + 確定 + 取消 + 寄送 + 再次寄送 + 選擇 + 取消選擇 + 回覆 + 全部回覆 + 刪除 + 歸檔 + 標記為垃圾 + 清空文件匣 + 轉寄 + 移動 + 繼續 + 完成 + 刪除 + 忽略 + 保存為草稿 + 重試 + 重整 + 檢查新郵件 + 寄送 + 全部文件匣 + 重整文件匣 + 標記全部郵件為已讀 + 添加帳戶 + 新郵件 + 搜索 + 搜索結果 + 設置 + 打開 + 帳戶設置 + 文件匣設置 + 全域設置 + 刪除帳戶 + 取消暫停的操作(慎用) + + + + 帳戶 + + + 閱讀 + 標記為已讀 + 共享 + 選擇寄件人 + + 標記全部郵件為已讀 + 標記「%s」中全部的郵件(包括K-9中沒有顯示的文件匣中的郵件)為已讀麼? + + + 添加星標 + 移除星標 + 複製 + 顯示詳細訊息 + 隱藏詳細訊息 + 選擇本文 + + 標記為未讀 + 移動到 + 文件匣 + 顯示/隱藏詳細訊息 + 添加抄送/密送 + 編輯主題 + 讀取回條 + 要求讀取回條 + 取消讀取回條 + 添加附件 + 添加圖片附件 + 添加視頻附件 + 導出設置 + 清空垃圾桶 + 刪除 + 清除本地郵件 + 選擇排序方式 + 逆序 + 關於 + + 設置 + 帳戶選項 + 文件匣選項 + + (無主題) + 無日期 + 無寄件人 + 正在接收 + (正在接收%s%s + 正在加載郵件\u2026 + 連接錯誤 + 郵件未找到 + 錯誤 + 正在寄送 + + 再次嘗試加載更多郵件 + + 再加載%d封郵件 + + GB + MB + KB + B + + 帳戶「%s」已從%s縮小到%s + + 正在壓縮帳戶「%s + 正在清理帳戶「%s + 正在重建帳戶「%s + + 您有新郵件 + 您有來自%s的新郵件 + 您有%d封未讀郵件(%s + 您有%d封新郵件(%s + 於帳戶%d + 郵件沒有寄送 + + 正在檢查郵件:%s%s + 正在檢查郵件 + 正在寄送郵件:%s + 正在寄送郵件 + + + 收件匣 + 寄件備份 + + 草稿 + 垃圾桶 + 寄件備份 + 歸檔 + 垃圾郵件 + + + %s(草稿) + %s(垃圾桶) + %s(已寄送) + %s(歸檔) + %s(垃圾郵件) + + 一些郵件沒有成功寄送 + 請檢查您的%s以便獲取更多訊息。 + K-9在試圖寄送一些郵件時遇到了問題。而且更加悲劇的是由於技術上的原因,K-9不清楚這些郵件有沒有成功的寄送。因此收件人可能已經收到了這些訊息。\u000a\u000a遇到問題的郵件保存在寄件備份裡面並且被加了星標。在你取消了這些郵件的星標之後K-9將會試著再次寄送這些郵件。長按「寄件備份」並點擊「寄送郵件」以便再次寄送。\u000A\u000a「%s」文件匣有可能包含關於這些錯誤的細節訊息。 + + K-9警報 + 由於沒有網路,同步和寄送操作被暫停。 + + 沒有其他郵件了 + + +感謝安裝K-9。K-9是Android下的開源電子郵件客戶端,其最初的代碼來自Android默認的電子郵件程式。 +\n +\n\nK-9改進的功能包括: +\n * 利用IMAP IDEL進行Push mail +\n * 更好的性能 +\n * 重新裝入郵件 +\n * 郵件簽名 +\n * 密送給自己 +\n * 文件匣訂閱 +\n * 同步全部文件匣 +\n * 可以編輯回件地址 +\n * 鍵盤快捷鍵 +\n * 更好的IMAP支持 +\n * 保存附件到SD卡 +\n * 清空垃圾桶 +\n * 郵件排序 +\n * 以及其他很多哦~ +\n +\n請注意K-9不支持絕大多數免費Hotmail帳戶,以及,和很多郵件客戶端一樣,在和Microsoft Exchange溝通的時候存在一些詭異的問題。 +\n +\n請到http://k9mail.googlecode.com/提交錯誤報告、貢獻新功能或提出您的問題。 + + + + 版本:%s + 啟用除錯日誌 + 記錄額外的除錯訊息 + 記錄敏感訊息 + 允許在日誌中顯示密碼。 + + K-9 Mail for Android + + 全部郵件 + 全部帳戶的最近郵件 + 全部郵件收件匣 + + %s%s + %s + %s + %s + %s + 加載更多郵件 + 收件人:%s + 刪除 + 標記為已讀 + 標記為未讀 + 添加星標 + 移除星標 + + 收件人 + 抄送 + 密送 + 主題 + 郵件內容 + --------原始郵件-------- + 主題: + 收到日期: + 寄件人: + 收件人: + 抄送: + %s寫到:\n\n + 引用本文 + 您必須添加至少一個收件人。 + 未發現電子郵件地址 + 一些附件沒有被下載。在這個郵件寄送前會自動的下載這些附件。 + 由於一些附件還沒有被下載,因此無法轉寄這些附件。 + 引用郵件 + + + 寄件人:%s <%s> + 收件人: + 抄送: + 打開 + 保存 + \u25BC + \u25B2 + 歸檔 + 移動 + 標記為垃圾 + MMM dd yyyy hh:mm a + 附件已經保存到SD卡:%s + 無法將附件保存到SD卡。 + 選擇「顯示圖片」來顯示簽入的圖片。 + 顯示圖片 + 正在接收附件。 + 無法打開%s。找不到可以閱讀該文件的程式。 + + + 下載完整郵件 + + + 當前只下載了部分郵件的訊息。如果需要下載全部郵件的訊息,請在帳戶的內送伺服器設置中選擇「在手機上保存全部郵件的訊息」。 + 全部郵件的訊息都已經下載,但是當前沒有額外的郵件訊息可以顯示。 + 從資料庫或郵件伺服器獲取額外的郵件訊息失敗。 + + 文件匣 + 新文件匣 + + 新文件匣名 + + (推送) + + 來自這個寄件人的更多郵件 + + 郵件已複製 + 郵件已移動 + 郵件已刪除 + 郵件已忽略 + 郵件已保存為草稿 + 無法刪除郵件 + + 關於%s + 版本:%s + + + 顯示星標 + 星標指示標記過的郵件 + 複選框 + 總是顯示多選框 + 郵件預覽 + 在列表中顯示郵件預覽 + 預覽行數 + 顯示聯繫人姓名 + 如果可能則使用聯繫人姓名代替收件地址 + 顯示聯絡人姓名 + 如果可能則使用聯絡人姓名代替收件地址 + 使用顏色標記特定人 + 不使用顏色標記特定人列表 + 使用顏色標記特定人列表 + + 定寬字體 + 使用定寬字體顯示純本文郵件 + 刪除後自動返回到列表 + 郵件刪除後自動返回到郵件列表 + 刪除並顯示下一郵件 + 刪除郵件後自動顯示下一郵件 + + 確認操作 + 進行選擇操作時總是顯示一個對話框進行確認 + 歸檔 + 刪除(僅用於郵件視圖) + 標記為垃圾 + 全部標示為已讀取 + 寄送 + + 鎖屏通知 + 屏幕鎖定時不要在通知欄中顯示郵件主題 + + + 靜音 + 取消夜間響鈴, 鬧鐘及閃光 + 啟動靜音 + 結束靜音 + + + 設置新帳戶 + 輸入該帳戶的電子郵件地址: + (你還可以再添加%d個帳戶) + 電子郵件地址 + %s不是一個有效的電子郵件地址。 + %s已經添加。 + 密碼 + 默認使用這個帳戶寄送郵件 + 手動設置 + + + 正在獲取帳戶訊息\u2026 + 正在檢查內送伺服器設置\u2026 + 正在檢查外寄伺服器設置\u2026 + 驗證\u2026 + 取回帳戶設置\u2026 + 正在完成最後的操作\u2026 + 正在取消\u2026 + + 快要完成了! + 你的帳戶已經設置,並且正在接收郵件! + 為這個帳戶選擇一個名稱(可選項): + 輸入你的名字(將顯示在發出的郵件中): + + 你的帳戶已經設置完畢!\n\n正在接收郵件\u2026 + + 帳戶類型 + 這個帳戶是什麼類型的? + POP3 + IMAP + WebDAV (Exchange) + + 郵件伺服器設置 + 用戶名 + 密碼 + POP3伺服器 + IMAP伺服器 + WebDAV (Exchange)伺服器 + 埠口號 + 加密方法 + 身份驗證方法 + + SSL(如果可能的話) + SSL(總是) + TLS(如果可能的話) + TLS(總是) + + 當我刪除郵件時 + 不要從伺服器上刪除 + 7天後從伺服器上刪除 + 立刻從伺服器上刪除 + 在伺服器上將郵件標記為已讀 + + 在以下網路上使用壓縮以便節約流量: + 手機移動網路 + Wi-Fi + 其他 + + 下載郵件訊息 + 在本地保存全部郵件的訊息 + + 外部儲存 (SD卡) + 手機內部儲存 + %1$s 額外內部儲存 + 儲存位置 + + 抹掉刪除的郵件 + 立刻 + 接收郵件時 + 手動 + + IMAP路徑前綴 + (如果可能則自動使用NAMESPACE) + + 草稿名稱 + 寄件備份名稱 + 垃圾桶名稱 + 歸檔文件匣名稱 + 垃圾郵件匣名稱 + + 只顯示訂閱的文件匣 + 自動展開文件匣 + + WebDAV (Exchange)路徑 + 可選 + + 身份驗證路徑 + 可選 + 郵箱路徑 + 可選 + + 外寄伺服器設置 + SMTP伺服器 + 埠口號 + 加密方法 + + SSL + TLS(如果可能的話) + TLS(總是) + 要求登錄。 + 用戶名 + 密碼 + 身份驗證方法 + + 用戶名與密碼 + 用戶名 + 密碼 + 在SMTP前POP + 在SMTP前IMAP + 在SMTP前WebDAV (Exchange) + + 無效的設置:%s + + 帳戶選項 + + 壓縮 + 清除郵件(慎用) + 重建資料(最後的殺手鑭) + + 文件匣檢查頻率 + + 從不 + 每分鐘一次 + 五分鐘一次 + 十分鐘一次 + 十五分鐘一次 + 三十分鐘一次 + 每小時一次 + 兩小時一次 + 三小時一次 + 六小時一次 + 十二小時一次 + 二十四小時一次 + + 被推送時檢查郵件 + 在這個帳戶上啟用推送郵件 + 如果你的郵件伺服器支持這個功能,那麼新郵件將會立刻顯示在手機上。這個選項可能大幅的提升性能,也可能嚴重的影響性能。 + 重整間隔連接 + 每分鐘一次 + 兩分鐘一次 + 三分鐘一次 + 六分鐘一次 + 十二分鐘一次 + 二十四分鐘一次 + 三十六分鐘一次 + 四十八分鐘一次 + 六十分鐘一次 + + 默認使用這個帳戶寄送郵件 + 有新郵件時通知我 + 檢查新郵件時通知我 + + + 郵件顯示數量 + 10封 + 25封 + 50封 + 100封 + 250封 + 500封 + 1000封 + 全部郵件 + + + 沒有與伺服器同步的郵件無法進行複製或移動 + + 無法完成設置 + 用戶名或密碼錯誤。\n(%s + 無法使用加密方法連接到伺服器。\n(%s + 無法連接到伺服器。\n(%s + 編輯詳細訊息 + 繼續 + + 高級 + 通用設置 + 默認帳戶 + 默認帳戶 + 默認使用這個帳戶寄送郵件 + 新郵件通知 + 同步通知 + 您的電子郵件地址 + 新郵件到達時在通知欄中顯示通知 + 檢查新郵件時在通知欄中顯示通知 + 顯示全域郵件夾 + 包括正在寄送的郵件 + 寄送郵件時顯示通知 + 點擊通知後打開未讀郵件 + 點擊通知後搜索未讀郵件 + 顯示未讀郵件數 + 在通知欄上顯示未讀郵件數 + + 滾動導航按鈕 + 從不 + 使用鍵盤時 + 總是 + + 啟用整理按鈕 + 顯示歸檔、移動和標記為垃圾按鈕 + 滾動整理按鈕 + + 顯示圖片 + 從不 + 來自您的聯絡人的郵件 + 全部郵件 + + 正在寄送郵件 + + 回覆時引用原文 + 回覆郵件時,引用原始郵件內容 + + 在引用的本文後進行回覆 + 回覆郵件時,原始郵件會顯示在您的郵件的上方。 + + 郵件格式 + 純文字 (圖像和編排會被移除) + HTML (圖像和編排會被保存) + + 讀取回條 + 永遠要求讀取回條 + + 回覆時的引用樣式 + 前綴 (如同 Gmail, Pine) + 段落 (如同 Outlook, Yahoo!, Hotmail) + + 一般設置 + 顯示 + 正在接收郵件 + 文件匣 + 正在整理郵件 + 正在顯示郵件 + 引用本文前綴 + 加密 + OpenPGP提供者 + + 不可用 + 自動簽名 + 使用帳戶的電子郵件地址自動猜測簽名密鑰。 + + 文件匣檢查頻率 + 第二組檢查頻率 + + 帳戶儲存 + + + 帳戶顏色 + 選擇帳戶在文件匣和帳戶列表中顯示時所使用的顏色 + + 通知LED燈顏色 + 選擇手機提示該帳戶訊息時LED燈閃爍的顏色 + + 本地文件匣大小 + + 收取郵件的最大尺寸為 + 1Kb + 2Kb + 4Kb + 8Kb + 16Kb + 32Kb + 64Kb + 128Kb + 256Kb + 512Kb + 1Mb + 2Mb + 5Mb + 10Mb + 任意(無限制) + + 同步該時段內的郵件 + 任意時段(無限制) + 今天 + 兩天內 + 三天內 + 一周內 + 兩周內 + 三周內 + 一個月內 + 兩個月內 + 三個月內 + 六個月內 + 一年內 + + + 顯示的文件匣 + 全部 + 僅上層文件匣 + 上層與下層文件匣 + 除了下層文件匣 + + 檢查文件匣 + 全部 + 僅上層文件匣 + 上層與下層文件匣 + 除了下層文件匣 + + + 推送文件匣 + 全部 + 僅上層文件匣 + 上層與下層文件匣 + 除了下層文件匣 + + + 可以移動/複製到的文件匣 + 全部 + 僅上層文件匣 + 上層與下層文件匣 + 除了下層文件匣 + + 同步伺服器上的刪除 + 刪除在伺服器上被刪除的郵件的本地複製 + + 文件匣設置 + + 顯示在置頂的組中 + 顯示在置頂的組之後 + + 文件匣顯示層別 + + 上層 + 下層 + + 文件匣同步層別 + + 上層 + 下層 + 使用與顯示層別相同的層別 + + 文件匣推送層別 + + 上層 + 下層 + 使用與同步層別相同的層別 + + 內送伺服器 + 配置內送伺服器 + 外寄伺服器 + 配置外寄(SMTP)伺服器 + 添加另一個帳戶 + 帳戶名稱 + 您的名字 + 通知 + 有新郵件時震鈴 + 震動 + 有新郵件時震動 + 震動模式 + 默認 + 模式一 + 模式二 + 模式三 + 模式四 + 模式五 + 重複震動 + 新郵件鈴聲 + 閃爍LED燈 + 有新郵件時閃爍LED燈 + + + 伺服器設置 + + 撰寫新郵件選項 + 撰寫新郵件默認值 + 設置默認的寄件人、按送以及簽名 + + 管理身份標識 + 設置一個可選的寄件地址和簽名 + + 管理身份標識 + + 管理身份標識 + + 編輯身份標識 + 新身份標識 + + 密送全部郵件到 + 將每一封發出郵件複製一份並寄送到這個地址 + + 編輯 + 上移 + 下移 + 置頂/設為默認 + 刪除 + + 身份標識描述訊息 + (可選) + 您的姓名 + (可選) + 電子郵件地址 + (必填) + 回覆地址 + (可選) + 簽名 + (可選) + + 使用簽名 + 簽名 + 將簽名附加到每一封發出的郵件後面 + + -- \n抱歉暫時無法詳細說明。這份郵件是使用安裝有K-9 Mail的Android移動設備寄送的。 + 初始身份標識 + 選擇身份標識 + 選擇身份標識 + 選擇帳戶/身份標識 + 以身份寄送 + + + 請使用「帳戶設置」->「管理身份標識」來創建身份標識 + 您必須保留一個身份標識 + 身份標識中必須包含電子郵件地址 + 您的選擇的身份標識以及簽名不會隨著草稿進行保存 + + 優先顯示最早的郵件 + 優先顯示最近的郵件 + 按寄件人升序 + 按寄件人降序 + 按主題升序 + 按主題降序 + 優先顯示帶有星標的郵件 + 優先顯示沒有星標的郵件 + 優先顯示未讀郵件 + 優先顯示已讀郵件 + 優先顯示帶有附件的郵件 + 優先顯示沒有附件的郵件 + + 排序方式 + 日期 + 寄件人 + 主題 + 星標 + 已讀/未讀 + 附件 + %s + + 刪除帳戶 + 帳戶「%s」將從K-9 Mail中刪除。 + + 重建帳戶 + 帳戶「%s」的全部資料將從K-9 Mail中刪除,但是帳戶設置將保留。 + + 清除帳戶 + 帳戶「%s」中的全部郵件將從K-9 Mail中刪除,但是帳戶設置將保留。 + + 只有一些「高級帳戶」允許POP訪問並允許該程式連接。如果您使用了正確的用戶名和密碼卻仍舊無法登錄,則您可能沒有購買這些「高級帳戶」。請使用瀏覽器來訪問這些帳戶。 + + 要使用此提供者的POP3服務,請先至Yahoo郵箱設置頁設定POP3使用許可。 + + 要使用此提供者的IMAP或POP3,請先至Naver郵箱設置頁設定允許使用IMAP或POP3。 + 要使用此提供者的IMAP或POP3,請先至Hanmail(Daum)郵箱設置頁設定允許使用IMAP或POP3。 + 要使用此提供者的IMAP或POP3,請先至Paran郵箱設置頁設定允許使用IMAP或POP3。 + 要使用此提供者的IMAP或POP3,請先至Nate郵箱設置頁設定允許使用IMAP或POP3。 + + 無法識別的證書訊息 + 接收密鑰 + 拒絕密鑰 + + Del (or D) - 刪除\u000AR - + 回覆\u000AA - 全部回覆\u000AF - 轉寄\u000AJ or P - 上一封郵件\u000AK, N - 下一封郵件\u000AM - 移動\u000AY - 複製\u000AZ - 縮小\u000AShift-Z - + 放大\u000aG - 星標 + Del (or D) - 刪除\u000AR - + 回覆\u000AA - 全部回覆\u000AC - 新郵件\u000AF - 轉寄\u000aM - + 移動\u000AY - 複製\u000AG - 星標\u000AO - 排序方式\u000AI - 升序/降序\u000AQ + - 返回文件匣\u000AS - 選擇/取消選擇 + + + 1 - 只顯示上層文件匣\u000A + 2 - 顯示上層和下層文件匣\u000A + 3 - 僅不顯示下層文件匣\u000A + 4 - 顯示全部文件匣\u000A + Q - 返回全部帳戶\u000A + S - 編輯帳戶設置 + + 文件匣 + 顯示全部文件匣 + 只顯示上層文件匣 + 顯示上層和下層文件匣 + 僅不顯示下層文件匣 + + + + 簽名位置 + 在引用的本文之前 + 在引用的本文之後 + 灰暗 + 明亮 + 顯示 + 全域 + 除錯 + 隱私 + 網路 + 交互 + 帳戶列表 + 郵件列表 + 郵件 + 主題 + 語言 + + 單列佈局 + 為小屏幕重新佈局HTML郵件 + 系統放大控制 + 如果設備支持則啟用放大插件或多點觸摸放大 + + + + 系統默認值 + + 背景同步 + 從不 + 總是 + 當「背景資料」被勾選 + 當「背景資料」&「自動同步」被勾選 + + 沒有選擇任何郵件 + + 日期格式 + + 簡短 + 一般 + dd-MMM-yyyy + yyyy-MM-dd + + 整批操作 + 刪除勾選的郵件 + 將勾選的郵件標記為已讀 + 將勾選的郵件標記為未讀 + 為勾選的郵件添加星標 + 為勾選的郵件移除星標 + 移動勾選的郵件到歸檔文件匣 + 移動勾選的郵件到垃圾郵件文件匣 + 移動勾選的郵件 + 複製勾選的郵件 + 星標模式 + 選擇模式 + 水平模式 + 選擇全部 + 清除全部選擇 + + 推送時最多檢查文件匣數量 + 十個文件匣 + 二十五個文件匣 + 五十個文件匣 + 一百個文件匣 + 二百五十個文件匣 + 五百個文件匣 + 一千個文件匣 + + 動畫 + 使用絢麗的視覺特效 + 手勢 + 接收手勢控制 + + 精簡格式 + 在一頁上顯示最多的訊息 + + 音量鍵導航 + 利用音量鍵選擇項目 + 訊息視圖 + 不同的列表視圖 + + 管理「返回」按鈕 + 每次點擊「返回」按鈕時都向上返回一個層次 + + 從全域收件匣啟動 + 啟動後顯示全域收件匣 + + 顯示帳戶佔用的空間 + 關閉該功能以便加快顯示速度 + + 計算搜索結果的數量 + 關閉該功能以便加快顯示速度 + + 隱藏特殊帳戶 + 隱藏inbox收件匣與郵件帳戶名稱 + + %s %s + - 星標 + - 未讀 + + 所有郵件 + 可搜索文件匣中的所有郵件 + + 全域收件匣 + 全域收件匣中的所有郵件 + + 點擊信封或星標來標記郵件為未讀或添加星標 + + 全域 + 所有郵件都顯示在全域收件匣中 + + 搜索的文件匣 + 全部 + 可顯示的文件匣 + + + 遠程控制K-9 Mail + 運行這個程式控制K-9 Mail的行為和設置。 + + 字體大小 + 配置字體大小 + + 帳戶列表 + 帳戶名稱 + 帳戶描述 + + 文件匣列表 + 文件匣名稱 + 文件匣狀態 + + 管理列表 + 主題 + 寄件人 + 日期 + 預覽 + + 郵件 + 寄件人 + 收件人 + 抄送 + 額外的郵件訊息 + 主題 + 時間 + 日期 + 郵件內容 + + 最小 + 更小 + + 較小 + 中等 + + 更大 + + 最小 + 較小 + 正常 + 較大 + 更大 + + + 選擇「設置」->「避免畫冊發生錯誤」來啟用使用3D畫冊模式添加附件或視頻。 + + + 利用「添加附件(圖片)」或「添加附件(視頻)」來使用3D畫冊添加圖片或視頻。 + + 雜項 + 避免畫冊發生錯誤 + 顯示按鈕來添加圖片/視頻附件(以避免3D畫冊發生錯誤) + + + 沒有找到可以用於這一操作的程式。 + 不支持所安裝版本的APG。 + 簽名 + 加密 + 解密 + 驗證 + <未知> + id: %s + K-9沒有被允許完全訪問APG,請重新安裝K-9以便修復這一問題。 + 暫時還不支持PGP/MIME郵件。 + 警告:附件還 *沒有* 被簽名或者加密。 + 寄送操作已經取消。 + + 保存郵件草稿? + 保存還是忽略這封郵件? + + 由於沒有找到字符集「%s」,該郵件無法顯示。 + + 選擇需要複製的本文。 + + 刪除確認 + 你確定要刪除這封郵件麼? + 刪除 + 不要刪除 + + 移至垃圾桶時確認 + + 確定要將郵件移至垃圾桶嗎? + 確定要將選取的 %1$d 封郵件移至垃圾桶嗎? + + + + + + 下載附件 + + 已經啟用將除錯日誌寫入Andorid日誌系統 + + + + 無法連線 + + 帳戶 \"%s\" 無法使用; 請檢查儲存 + + 另存附件... + 保存附件 + 找不到檔案瀏覽器,您要將附件保存到哪裡? + + 上移 + 下移 + From 994f474aaefdeb14d8b14b7967aa995cbde928e3 Mon Sep 17 00:00:00 2001 From: ashley willis Date: Mon, 14 Nov 2011 20:12:08 -0600 Subject: [PATCH 20/39] configured so setting message format to auto does not break k-9 if it is downgraded. --- src/com/fsck/k9/Account.java | 19 ++++++++++++++++++- src/com/fsck/k9/activity/MessageCompose.java | 1 - .../fsck/k9/preferences/AccountSettings.java | 1 + 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/com/fsck/k9/Account.java b/src/com/fsck/k9/Account.java index fc324a2b8..f2722500c 100644 --- a/src/com/fsck/k9/Account.java +++ b/src/com/fsck/k9/Account.java @@ -60,6 +60,7 @@ public class Account implements BaseAccount { private static final String[] networkTypes = { TYPE_WIFI, TYPE_MOBILE, TYPE_OTHER }; public static final MessageFormat DEFAULT_MESSAGE_FORMAT = MessageFormat.HTML; + public static final boolean DEFAULT_AUTO_MESSAGE_FORMAT = false; public static final boolean DEFAULT_MESSAGE_READ_RECEIPT = false; public static final QuoteStyle DEFAULT_QUOTE_STYLE = QuoteStyle.PREFIX; public static final String DEFAULT_QUOTE_PREFIX = ">"; @@ -137,6 +138,7 @@ public class Account implements BaseAccount { // current set of fetched messages private boolean mRingNotified; private MessageFormat mMessageFormat; + private boolean mAutoMessageFormat; private boolean mMessageReadReceipt; private QuoteStyle mQuoteStyle; private String mQuotePrefix; @@ -226,6 +228,7 @@ public class Account implements BaseAccount { maximumPolledMessageAge = -1; maximumAutoDownloadMessageSize = 32768; mMessageFormat = DEFAULT_MESSAGE_FORMAT; + mAutoMessageFormat = DEFAULT_AUTO_MESSAGE_FORMAT; mMessageReadReceipt = DEFAULT_MESSAGE_READ_RECEIPT; mQuoteStyle = DEFAULT_QUOTE_STYLE; mQuotePrefix = DEFAULT_QUOTE_PREFIX; @@ -302,6 +305,10 @@ public class Account implements BaseAccount { maximumPolledMessageAge = prefs.getInt(mUuid + ".maximumPolledMessageAge", -1); maximumAutoDownloadMessageSize = prefs.getInt(mUuid + ".maximumAutoDownloadMessageSize", 32768); mMessageFormat = MessageFormat.valueOf(prefs.getString(mUuid + ".messageFormat", DEFAULT_MESSAGE_FORMAT.name())); + mAutoMessageFormat = prefs.getBoolean(mUuid + ".autoMessageFormat", DEFAULT_AUTO_MESSAGE_FORMAT); + if (mAutoMessageFormat && mMessageFormat == MessageFormat.TEXT) { + mMessageFormat = MessageFormat.AUTO; + } mMessageReadReceipt = prefs.getBoolean(mUuid + ".messageReadReceipt", DEFAULT_MESSAGE_READ_RECEIPT); mQuoteStyle = QuoteStyle.valueOf(prefs.getString(mUuid + ".quoteStyle", DEFAULT_QUOTE_STYLE.name())); mQuotePrefix = prefs.getString(mUuid + ".quotePrefix", DEFAULT_QUOTE_PREFIX); @@ -461,6 +468,7 @@ public class Account implements BaseAccount { editor.remove(mUuid + ".subscribedFoldersOnly"); editor.remove(mUuid + ".maximumPolledMessageAge"); editor.remove(mUuid + ".maximumAutoDownloadMessageSize"); + editor.remove(mUuid + ".autoMessageFormat"); editor.remove(mUuid + ".quoteStyle"); editor.remove(mUuid + ".quotePrefix"); editor.remove(mUuid + ".showPicturesEnum"); @@ -612,7 +620,16 @@ public class Account implements BaseAccount { editor.putBoolean(mUuid + ".subscribedFoldersOnly", subscribedFoldersOnly); editor.putInt(mUuid + ".maximumPolledMessageAge", maximumPolledMessageAge); editor.putInt(mUuid + ".maximumAutoDownloadMessageSize", maximumAutoDownloadMessageSize); - editor.putString(mUuid + ".messageFormat", mMessageFormat.name()); + if (MessageFormat.AUTO.equals(mMessageFormat)) { + // saving MessageFormat.AUTO as is to the database will cause downgrades to crash on + // startup, so we save as MessageFormat.TEXT instead with a separate flag for auto. + editor.putString(mUuid + ".messageFormat", Account.MessageFormat.TEXT.name()); + mAutoMessageFormat = true; + } else { + editor.putString(mUuid + ".messageFormat", mMessageFormat.name()); + mAutoMessageFormat = false; + } + editor.putBoolean(mUuid + ".autoMessageFormat", mAutoMessageFormat); editor.putBoolean(mUuid + ".messageReadReceipt", mMessageReadReceipt); editor.putString(mUuid + ".quoteStyle", mQuoteStyle.name()); editor.putString(mUuid + ".quotePrefix", mQuotePrefix); diff --git a/src/com/fsck/k9/activity/MessageCompose.java b/src/com/fsck/k9/activity/MessageCompose.java index c25279a4d..4b2036d5a 100644 --- a/src/com/fsck/k9/activity/MessageCompose.java +++ b/src/com/fsck/k9/activity/MessageCompose.java @@ -858,7 +858,6 @@ public class MessageCompose extends K9Activity implements OnClickListener, OnFoc mBccWrapper.setVisibility(savedInstanceState .getBoolean(STATE_KEY_BCC_SHOWN) ? View.VISIBLE : View.GONE); showOrHideQuotedText((QuotedTextMode)savedInstanceState.getSerializable(STATE_KEY_QUOTED_TEXT_MODE)); - if (mQuotedTextMode != QuotedTextMode.NONE && mMessageFormat == MessageFormat.HTML) { mQuotedHtmlContent = (InsertableHtmlContent) savedInstanceState.getSerializable(STATE_KEY_HTML_QUOTE); if (mQuotedHtmlContent != null && mQuotedHtmlContent.getQuotedContent() != null) { diff --git a/src/com/fsck/k9/preferences/AccountSettings.java b/src/com/fsck/k9/preferences/AccountSettings.java index 13c4d089a..0b4b0bda2 100644 --- a/src/com/fsck/k9/preferences/AccountSettings.java +++ b/src/com/fsck/k9/preferences/AccountSettings.java @@ -55,6 +55,7 @@ public class AccountSettings { R.array.account_settings_message_age_values)); s.put("messageFormat", new EnumSetting(Account.MessageFormat.class, Account.DEFAULT_MESSAGE_FORMAT)); + //s.put("autoMessageFormat", new BooleanSetting(Account.DEFAULT_AUTO_MESSAGE_FORMAT)); // added to version 2 s.put("messageReadReceipt", new BooleanSetting(Account.DEFAULT_MESSAGE_READ_RECEIPT)); s.put("notificationUnreadCount", new BooleanSetting(true)); s.put("notifyMailCheck", new BooleanSetting(false)); From 2f3565d1800fc6cf6d9ca92a9b455036a3d1d805 Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 14 Nov 2011 18:15:32 -0800 Subject: [PATCH 21/39] Implement Gmail's XLIST IMAP command to determine Gmail-specific folders. --- .../k9/activity/setup/AccountSetupBasics.java | 13 +--- src/com/fsck/k9/mail/store/ImapStore.java | 64 +++++++++++++++++++ 2 files changed, 67 insertions(+), 10 deletions(-) diff --git a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java index fbb14d26a..27a3781dd 100644 --- a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -193,16 +193,9 @@ public class AccountSetupBasics extends K9Activity incomingUsername = incomingUsername.replaceAll("\\$domain", domain); URI incomingUriTemplate = mProvider.incomingUriTemplate; - - String namespace = null; - // Gmail uses a special namespace, otherwise everything ends up in the "[Imap]" namespace. - if(incomingUriTemplate.getHost().toLowerCase().endsWith("gmail.com")) { - namespace = "/[Gmail]"; - } - incomingUri = new URI(incomingUriTemplate.getScheme(), incomingUsername + ":" - + passwordEnc, incomingUriTemplate.getHost(), incomingUriTemplate.getPort(), - namespace, null, null); + + passwordEnc, incomingUriTemplate.getHost(), incomingUriTemplate.getPort(), null, + null, null); String outgoingUsername = mProvider.outgoingUsernameTemplate; @@ -233,7 +226,7 @@ public class AccountSetupBasics extends K9Activity mAccount.setTrashFolderName(getString(R.string.special_mailbox_name_trash)); mAccount.setArchiveFolderName(getString(R.string.special_mailbox_name_archive)); // Yahoo! has a special folder for Spam, called "Bulk Mail". - if (incomingUriTemplate.getHost().toLowerCase().endsWith("yahoo.com")) { + if (incomingUriTemplate.getHost().toLowerCase().endsWith(".yahoo.com")) { mAccount.setSpamFolderName("Bulk Mail"); } else { mAccount.setSpamFolderName(getString(R.string.special_mailbox_name_spam)); diff --git a/src/com/fsck/k9/mail/store/ImapStore.java b/src/com/fsck/k9/mail/store/ImapStore.java index 570cc2be5..4ee4a0103 100644 --- a/src/com/fsck/k9/mail/store/ImapStore.java +++ b/src/com/fsck/k9/mail/store/ImapStore.java @@ -596,11 +596,75 @@ public class ImapStore extends Store { } + /** + * Attempt to auto-configure Gmail folders, if we think the server is a Gmail server. + * + * The parsing here is essentially the same as + * {@link #listFolders(com.fsck.k9.mail.store.ImapStore.ImapConnection, boolean)}; we should try to consolidate + * this at some point. :( + * @param connection IMAP Connection + * @throws IOException uh oh! + * @throws MessagingException uh oh! + */ + private void configureGmailFolders(final ImapConnection connection) throws IOException, MessagingException { + final String commandResponse = "XLIST"; + + if (!connection.mSettings.getHost().toLowerCase().endsWith(".gmail.com") || !connection.capabilities.contains(commandResponse)) { + if (K9.DEBUG) { + Log.d(K9.LOG_TAG, "Probably not a Gmail server, skipping Gmail namespace detection."); + } + return; + } + + final List responses = + connection.executeSimpleCommand(String.format("%s \"\" %s", commandResponse, + encodeString(getCombinedPrefix() + "*"))); + + for (ImapResponse response : responses) { + if (ImapResponseParser.equalsIgnoreCase(response.get(0), commandResponse)) { + + String decodedFolderName; + try { + decodedFolderName = decodeFolderName(response.getString(3)); + } catch (CharacterCodingException e) { + Log.w(K9.LOG_TAG, "Folder name not correctly encoded with the UTF-7 variant " + + "as defined by RFC 3501: " + response.getString(3), e); + // We currently just skip folders with malformed names. + continue; + } + + if (mPathDelimeter == null) { + mPathDelimeter = response.getString(2); + mCombinedPrefix = null; + } + + ImapList attributes = response.getList(1); + for (int i = 0, count = attributes.size(); i < count; i++) { + String attribute = attributes.getString(i); + if (attribute.equals("\\Drafts")) { + mAccount.setDraftsFolderName(decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Detected Gmail draft folder: " + decodedFolderName); + } else if (attribute.equals("\\Sent")) { + mAccount.setSentFolderName(decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Detected Gmail sent folder: " + decodedFolderName); + } else if (attribute.equals("\\Spam")) { + mAccount.setSpamFolderName(decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Detected Gmail spam folder: " + decodedFolderName); + } else if (attribute.equals("\\Trash")) { + mAccount.setTrashFolderName(decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Detected Gmail trash folder: " + decodedFolderName); + } + } + } + } + } + @Override public void checkSettings() throws MessagingException { try { ImapConnection connection = new ImapConnection(new StoreImapSettings()); connection.open(); + configureGmailFolders(connection); connection.close(); } catch (IOException ioe) { throw new MessagingException(K9.app.getString(R.string.error_unable_to_connect), ioe); From 95215f00b74473a82a6ee10735177b4608d09452 Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 14 Nov 2011 18:27:08 -0800 Subject: [PATCH 22/39] Kerio also supports auto-configuration; remove the gmail.com requirement to use XLIST for auto-configuration. --- src/com/fsck/k9/mail/store/ImapStore.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapStore.java b/src/com/fsck/k9/mail/store/ImapStore.java index 4ee4a0103..2e2e49656 100644 --- a/src/com/fsck/k9/mail/store/ImapStore.java +++ b/src/com/fsck/k9/mail/store/ImapStore.java @@ -597,7 +597,7 @@ public class ImapStore extends Store { } /** - * Attempt to auto-configure Gmail folders, if we think the server is a Gmail server. + * Attempt to auto-configure folders by attributes if the server advertises XLIST capability. * * The parsing here is essentially the same as * {@link #listFolders(com.fsck.k9.mail.store.ImapStore.ImapConnection, boolean)}; we should try to consolidate @@ -606,12 +606,12 @@ public class ImapStore extends Store { * @throws IOException uh oh! * @throws MessagingException uh oh! */ - private void configureGmailFolders(final ImapConnection connection) throws IOException, MessagingException { + private void autoconfigureFolders(final ImapConnection connection) throws IOException, MessagingException { final String commandResponse = "XLIST"; - if (!connection.mSettings.getHost().toLowerCase().endsWith(".gmail.com") || !connection.capabilities.contains(commandResponse)) { + if (!connection.capabilities.contains(commandResponse)) { if (K9.DEBUG) { - Log.d(K9.LOG_TAG, "Probably not a Gmail server, skipping Gmail namespace detection."); + Log.d(K9.LOG_TAG, "Server does not support XLIST; skipping folder auto-configuration."); } return; } @@ -643,16 +643,16 @@ public class ImapStore extends Store { String attribute = attributes.getString(i); if (attribute.equals("\\Drafts")) { mAccount.setDraftsFolderName(decodedFolderName); - if (K9.DEBUG) Log.d(K9.LOG_TAG, "Detected Gmail draft folder: " + decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "XLIST auto-configuration detected draft folder: " + decodedFolderName); } else if (attribute.equals("\\Sent")) { mAccount.setSentFolderName(decodedFolderName); - if (K9.DEBUG) Log.d(K9.LOG_TAG, "Detected Gmail sent folder: " + decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "XLIST auto-configuration detected sent folder: " + decodedFolderName); } else if (attribute.equals("\\Spam")) { mAccount.setSpamFolderName(decodedFolderName); - if (K9.DEBUG) Log.d(K9.LOG_TAG, "Detected Gmail spam folder: " + decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "XLIST auto-configuration detected spam folder: " + decodedFolderName); } else if (attribute.equals("\\Trash")) { mAccount.setTrashFolderName(decodedFolderName); - if (K9.DEBUG) Log.d(K9.LOG_TAG, "Detected Gmail trash folder: " + decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "XLIST auto-configuration detected trash folder: " + decodedFolderName); } } } @@ -664,7 +664,7 @@ public class ImapStore extends Store { try { ImapConnection connection = new ImapConnection(new StoreImapSettings()); connection.open(); - configureGmailFolders(connection); + autoconfigureFolders(connection); connection.close(); } catch (IOException ioe) { throw new MessagingException(K9.app.getString(R.string.error_unable_to_connect), ioe); From 7ca438669ea1e5f7b19775ad98310b242daa9bef Mon Sep 17 00:00:00 2001 From: Andrew Chen Date: Mon, 14 Nov 2011 18:55:11 -0800 Subject: [PATCH 23/39] Add theoretical support for RFC6154 SPECIAL-USE for auto-configuration. --- src/com/fsck/k9/mail/store/ImapStore.java | 28 ++++++++++++++--------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapStore.java b/src/com/fsck/k9/mail/store/ImapStore.java index 2e2e49656..d4cc67ee6 100644 --- a/src/com/fsck/k9/mail/store/ImapStore.java +++ b/src/com/fsck/k9/mail/store/ImapStore.java @@ -597,7 +597,7 @@ public class ImapStore extends Store { } /** - * Attempt to auto-configure folders by attributes if the server advertises XLIST capability. + * Attempt to auto-configure folders by attributes if the server advertises that capability. * * The parsing here is essentially the same as * {@link #listFolders(com.fsck.k9.mail.store.ImapStore.ImapConnection, boolean)}; we should try to consolidate @@ -607,17 +607,23 @@ public class ImapStore extends Store { * @throws MessagingException uh oh! */ private void autoconfigureFolders(final ImapConnection connection) throws IOException, MessagingException { - final String commandResponse = "XLIST"; + String commandResponse = null; + String commandOptions = ""; - if (!connection.capabilities.contains(commandResponse)) { - if (K9.DEBUG) { - Log.d(K9.LOG_TAG, "Server does not support XLIST; skipping folder auto-configuration."); - } + if (connection.capabilities.contains("XLIST")) { + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Folder auto-configuration: Using XLIST."); + commandResponse = "XLIST"; + } else if(connection.capabilities.contains("SPECIAL-USE")) { + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Folder auto-configuration: Using RFC6154/SPECIAL-USE."); + commandResponse = "LIST"; + commandOptions = " (SPECIAL-USE)"; + } else { + if (K9.DEBUG) Log.d(K9.LOG_TAG, "No detected folder auto-configuration methods."); return; } final List responses = - connection.executeSimpleCommand(String.format("%s \"\" %s", commandResponse, + connection.executeSimpleCommand(String.format("%s%s \"\" %s", commandResponse, commandOptions, encodeString(getCombinedPrefix() + "*"))); for (ImapResponse response : responses) { @@ -643,16 +649,16 @@ public class ImapStore extends Store { String attribute = attributes.getString(i); if (attribute.equals("\\Drafts")) { mAccount.setDraftsFolderName(decodedFolderName); - if (K9.DEBUG) Log.d(K9.LOG_TAG, "XLIST auto-configuration detected draft folder: " + decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Folder auto-configuration detected draft folder: " + decodedFolderName); } else if (attribute.equals("\\Sent")) { mAccount.setSentFolderName(decodedFolderName); - if (K9.DEBUG) Log.d(K9.LOG_TAG, "XLIST auto-configuration detected sent folder: " + decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Folder auto-configuration detected sent folder: " + decodedFolderName); } else if (attribute.equals("\\Spam")) { mAccount.setSpamFolderName(decodedFolderName); - if (K9.DEBUG) Log.d(K9.LOG_TAG, "XLIST auto-configuration detected spam folder: " + decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Folder auto-configuration detected spam folder: " + decodedFolderName); } else if (attribute.equals("\\Trash")) { mAccount.setTrashFolderName(decodedFolderName); - if (K9.DEBUG) Log.d(K9.LOG_TAG, "XLIST auto-configuration detected trash folder: " + decodedFolderName); + if (K9.DEBUG) Log.d(K9.LOG_TAG, "Folder auto-configuration detected trash folder: " + decodedFolderName); } } } From a8ef6594ecde9ffe2be6227bcf90f9ebe4859156 Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Mon, 14 Nov 2011 23:32:46 -0500 Subject: [PATCH 24/39] Preserve header order (with the exception of duplicate headers like "received" they all show up where the first one did --- src/com/fsck/k9/mail/internet/MimeHeader.java | 2 +- src/com/fsck/k9/mail/store/LocalStore.java | 2 +- src/com/fsck/k9/view/MessageHeader.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/fsck/k9/mail/internet/MimeHeader.java b/src/com/fsck/k9/mail/internet/MimeHeader.java index f79edd7dc..35594cdac 100644 --- a/src/com/fsck/k9/mail/internet/MimeHeader.java +++ b/src/com/fsck/k9/mail/internet/MimeHeader.java @@ -64,7 +64,7 @@ public class MimeHeader { } public Set getHeaderNames() { - Set names = new HashSet(); + Set names = new LinkedHashSet(); for (Field field : mFields) { names.add(field.name); } diff --git a/src/com/fsck/k9/mail/store/LocalStore.java b/src/com/fsck/k9/mail/store/LocalStore.java index a402ea9f7..d1ca05a2b 100644 --- a/src/com/fsck/k9/mail/store/LocalStore.java +++ b/src/com/fsck/k9/mail/store/LocalStore.java @@ -1779,7 +1779,7 @@ public class LocalStore extends Store implements Serializable { } cursor = db.rawQuery( - "SELECT message_id, name, value FROM headers " + "WHERE message_id in ( " + questions + ") ", + "SELECT message_id, name, value FROM headers " + "WHERE message_id in ( " + questions + ") ORDER BY id ASC", ids.toArray(EMPTY_STRING_ARRAY)); diff --git a/src/com/fsck/k9/view/MessageHeader.java b/src/com/fsck/k9/view/MessageHeader.java index 462d25bf7..58ec60ba5 100644 --- a/src/com/fsck/k9/view/MessageHeader.java +++ b/src/com/fsck/k9/view/MessageHeader.java @@ -26,7 +26,7 @@ import com.fsck.k9.mail.Message; import com.fsck.k9.mail.MessagingException; import com.fsck.k9.mail.internet.MimeUtility; import com.fsck.k9.mail.store.LocalStore; -import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -256,7 +256,7 @@ public class MessageHeader extends LinearLayout { * message view header. But do show "From", "To", and "Cc" again. * This time including the email addresses. See issue 1805. */ - Set headerNames = new HashSet(message.getHeaderNames()); + Set headerNames = new LinkedHashSet(message.getHeaderNames()); headerNames.remove("Subject"); for (String headerName : headerNames) { String[] headerValues = message.getHeader(headerName); From 3ffb5021e1e4e4e5432e8d4a259ad08ad84e51cb Mon Sep 17 00:00:00 2001 From: ashley willis Date: Tue, 15 Nov 2011 00:28:41 -0600 Subject: [PATCH 25/39] Option to have confirmation on deleting starred messages. --- res/values/strings.xml | 1 + src/com/fsck/k9/K9.java | 11 +++++++++++ src/com/fsck/k9/activity/MessageView.java | 2 +- src/com/fsck/k9/activity/setup/Prefs.java | 7 +++++-- src/com/fsck/k9/preferences/GlobalSettings.java | 1 + 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4f024ecae..487745f5b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -342,6 +342,7 @@ Welcome to K-9 Mail setup. K-9 is an open source mail client for Android origin Show a dialog whenever you perform selected actions Archive Delete (message view only) + Delete Starred (message view only) Spam Mark all as read Send diff --git a/src/com/fsck/k9/K9.java b/src/com/fsck/k9/K9.java index 6b8212295..6c88024b0 100644 --- a/src/com/fsck/k9/K9.java +++ b/src/com/fsck/k9/K9.java @@ -153,6 +153,7 @@ public class K9 extends Application { private static boolean mAnimations = true; private static boolean mConfirmDelete = false; + private static boolean mConfirmDeleteStarred = false; private static boolean mConfirmSpam = false; private static boolean mConfirmMarkAllAsRead = true; private static boolean mKeyguardPrivacy = false; @@ -443,6 +444,7 @@ public class K9 extends Application { editor.putBoolean("useGalleryBugWorkaround", useGalleryBugWorkaround); editor.putBoolean("confirmDelete", mConfirmDelete); + editor.putBoolean("confirmDeleteStarred", mConfirmDeleteStarred); editor.putBoolean("confirmSpam", mConfirmSpam); editor.putBoolean("confirmMarkAllAsRead", mConfirmMarkAllAsRead); @@ -571,6 +573,7 @@ public class K9 extends Application { useGalleryBugWorkaround = sprefs.getBoolean("useGalleryBugWorkaround", K9.isGalleryBuggy()); mConfirmDelete = sprefs.getBoolean("confirmDelete", false); + mConfirmDeleteStarred = sprefs.getBoolean("confirmDeleteStarred", false); mConfirmSpam = sprefs.getBoolean("confirmSpam", false); mConfirmMarkAllAsRead = sprefs.getBoolean("confirmMarkAllAsRead", true); @@ -951,6 +954,14 @@ public class K9 extends Application { mConfirmDelete = confirm; } + public static boolean confirmDeleteStarred() { + return mConfirmDeleteStarred; + } + + public static void setConfirmDeleteStarred(final boolean confirm) { + mConfirmDeleteStarred = confirm; + } + public static boolean confirmSpam() { return mConfirmSpam; } diff --git a/src/com/fsck/k9/activity/MessageView.java b/src/com/fsck/k9/activity/MessageView.java index f969b9d55..8625d3e00 100644 --- a/src/com/fsck/k9/activity/MessageView.java +++ b/src/com/fsck/k9/activity/MessageView.java @@ -649,7 +649,7 @@ public class MessageView extends K9Activity implements OnClickListener { * Called from UI thread when user select Delete */ private void onDelete() { - if (K9.confirmDelete()) { + if (K9.confirmDelete() || (K9.confirmDeleteStarred() && mMessage.isSet(Flag.FLAGGED))) { showDialog(R.id.dialog_confirm_delete); } else { delete(); diff --git a/src/com/fsck/k9/activity/setup/Prefs.java b/src/com/fsck/k9/activity/setup/Prefs.java index 86baa13fd..38c2d9396 100644 --- a/src/com/fsck/k9/activity/setup/Prefs.java +++ b/src/com/fsck/k9/activity/setup/Prefs.java @@ -193,11 +193,13 @@ public class Prefs extends K9PreferenceActivity { mConfirmActions = (CheckBoxListPreference) findPreference(PREFERENCE_CONFIRM_ACTIONS); mConfirmActions.setItems(new CharSequence[] { getString(R.string.global_settings_confirm_action_delete), + getString(R.string.global_settings_confirm_action_delete_starred), getString(R.string.global_settings_confirm_action_spam), getString(R.string.global_settings_confirm_action_mark_all_as_read) }); mConfirmActions.setCheckedItems(new boolean[] { K9.confirmDelete(), + K9.confirmDeleteStarred(), K9.confirmSpam(), K9.confirmMarkAllAsRead() }); @@ -356,8 +358,9 @@ public class Prefs extends K9PreferenceActivity { K9.setManageBack(mManageBack.isChecked()); K9.setStartIntegratedInbox(!mHideSpecialAccounts.isChecked() && mStartIntegratedInbox.isChecked()); K9.setConfirmDelete(mConfirmActions.getCheckedItems()[0]); - K9.setConfirmSpam(mConfirmActions.getCheckedItems()[1]); - K9.setConfirmMarkAllAsRead(mConfirmActions.getCheckedItems()[2]); + K9.setConfirmDeleteStarred(mConfirmActions.getCheckedItems()[1]); + K9.setConfirmSpam(mConfirmActions.getCheckedItems()[2]); + K9.setConfirmMarkAllAsRead(mConfirmActions.getCheckedItems()[3]); K9.setKeyguardPrivacy(mPrivacyMode.isChecked()); K9.setMeasureAccounts(mMeasureAccounts.isChecked()); K9.setCountSearchMessages(mCountSearch.isChecked()); diff --git a/src/com/fsck/k9/preferences/GlobalSettings.java b/src/com/fsck/k9/preferences/GlobalSettings.java index 746d96dbd..4554890e1 100644 --- a/src/com/fsck/k9/preferences/GlobalSettings.java +++ b/src/com/fsck/k9/preferences/GlobalSettings.java @@ -29,6 +29,7 @@ public class GlobalSettings { s.put("changeRegisteredNameColor", new BooleanSetting(false)); s.put("compactLayouts", new BooleanSetting(false)); s.put("confirmDelete", new BooleanSetting(false)); + s.put("confirmDeleteStarred", new BooleanSetting(false)); // added to version 2 s.put("confirmMarkAllAsRead", new BooleanSetting(false)); s.put("confirmSpam", new BooleanSetting(false)); s.put("countSearchMessages", new BooleanSetting(false)); From 6694f637e3098356909cffb2fd2f4bbf2d5a2dcc Mon Sep 17 00:00:00 2001 From: ashley willis Date: Tue, 15 Nov 2011 00:42:37 -0600 Subject: [PATCH 26/39] capitalization and change of variable names. --- res/values/strings.xml | 2 +- src/com/fsck/k9/Account.java | 18 +++++++++--------- .../fsck/k9/preferences/AccountSettings.java | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 94a4449a7..e3105abf4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -568,7 +568,7 @@ Welcome to K-9 Mail setup. K-9 is an open source mail client for Android origin Message Format Plain Text (images and formatting will be removed) HTML (images and formatting are preserved) - Automatic (plain text unless replying to an html message) + Automatic (plain text unless replying to an HTML message) Read receipt Always request a read receipt diff --git a/src/com/fsck/k9/Account.java b/src/com/fsck/k9/Account.java index f2722500c..dc3309aca 100644 --- a/src/com/fsck/k9/Account.java +++ b/src/com/fsck/k9/Account.java @@ -60,7 +60,7 @@ public class Account implements BaseAccount { private static final String[] networkTypes = { TYPE_WIFI, TYPE_MOBILE, TYPE_OTHER }; public static final MessageFormat DEFAULT_MESSAGE_FORMAT = MessageFormat.HTML; - public static final boolean DEFAULT_AUTO_MESSAGE_FORMAT = false; + public static final boolean DEFAULT_MESSAGE_FORMAT_AUTO = false; public static final boolean DEFAULT_MESSAGE_READ_RECEIPT = false; public static final QuoteStyle DEFAULT_QUOTE_STYLE = QuoteStyle.PREFIX; public static final String DEFAULT_QUOTE_PREFIX = ">"; @@ -138,7 +138,7 @@ public class Account implements BaseAccount { // current set of fetched messages private boolean mRingNotified; private MessageFormat mMessageFormat; - private boolean mAutoMessageFormat; + private boolean mMessageFormatAuto; private boolean mMessageReadReceipt; private QuoteStyle mQuoteStyle; private String mQuotePrefix; @@ -228,7 +228,7 @@ public class Account implements BaseAccount { maximumPolledMessageAge = -1; maximumAutoDownloadMessageSize = 32768; mMessageFormat = DEFAULT_MESSAGE_FORMAT; - mAutoMessageFormat = DEFAULT_AUTO_MESSAGE_FORMAT; + mMessageFormatAuto = DEFAULT_MESSAGE_FORMAT_AUTO; mMessageReadReceipt = DEFAULT_MESSAGE_READ_RECEIPT; mQuoteStyle = DEFAULT_QUOTE_STYLE; mQuotePrefix = DEFAULT_QUOTE_PREFIX; @@ -305,8 +305,8 @@ public class Account implements BaseAccount { maximumPolledMessageAge = prefs.getInt(mUuid + ".maximumPolledMessageAge", -1); maximumAutoDownloadMessageSize = prefs.getInt(mUuid + ".maximumAutoDownloadMessageSize", 32768); mMessageFormat = MessageFormat.valueOf(prefs.getString(mUuid + ".messageFormat", DEFAULT_MESSAGE_FORMAT.name())); - mAutoMessageFormat = prefs.getBoolean(mUuid + ".autoMessageFormat", DEFAULT_AUTO_MESSAGE_FORMAT); - if (mAutoMessageFormat && mMessageFormat == MessageFormat.TEXT) { + mMessageFormatAuto = prefs.getBoolean(mUuid + ".messageFormatAuto", DEFAULT_MESSAGE_FORMAT_AUTO); + if (mMessageFormatAuto && mMessageFormat == MessageFormat.TEXT) { mMessageFormat = MessageFormat.AUTO; } mMessageReadReceipt = prefs.getBoolean(mUuid + ".messageReadReceipt", DEFAULT_MESSAGE_READ_RECEIPT); @@ -468,7 +468,7 @@ public class Account implements BaseAccount { editor.remove(mUuid + ".subscribedFoldersOnly"); editor.remove(mUuid + ".maximumPolledMessageAge"); editor.remove(mUuid + ".maximumAutoDownloadMessageSize"); - editor.remove(mUuid + ".autoMessageFormat"); + editor.remove(mUuid + ".messageFormatAuto"); editor.remove(mUuid + ".quoteStyle"); editor.remove(mUuid + ".quotePrefix"); editor.remove(mUuid + ".showPicturesEnum"); @@ -624,12 +624,12 @@ public class Account implements BaseAccount { // saving MessageFormat.AUTO as is to the database will cause downgrades to crash on // startup, so we save as MessageFormat.TEXT instead with a separate flag for auto. editor.putString(mUuid + ".messageFormat", Account.MessageFormat.TEXT.name()); - mAutoMessageFormat = true; + mMessageFormatAuto = true; } else { editor.putString(mUuid + ".messageFormat", mMessageFormat.name()); - mAutoMessageFormat = false; + mMessageFormatAuto = false; } - editor.putBoolean(mUuid + ".autoMessageFormat", mAutoMessageFormat); + editor.putBoolean(mUuid + ".messageFormatAuto", mMessageFormatAuto); editor.putBoolean(mUuid + ".messageReadReceipt", mMessageReadReceipt); editor.putString(mUuid + ".quoteStyle", mQuoteStyle.name()); editor.putString(mUuid + ".quotePrefix", mQuotePrefix); diff --git a/src/com/fsck/k9/preferences/AccountSettings.java b/src/com/fsck/k9/preferences/AccountSettings.java index 0b4b0bda2..56601d6c9 100644 --- a/src/com/fsck/k9/preferences/AccountSettings.java +++ b/src/com/fsck/k9/preferences/AccountSettings.java @@ -55,7 +55,7 @@ public class AccountSettings { R.array.account_settings_message_age_values)); s.put("messageFormat", new EnumSetting(Account.MessageFormat.class, Account.DEFAULT_MESSAGE_FORMAT)); - //s.put("autoMessageFormat", new BooleanSetting(Account.DEFAULT_AUTO_MESSAGE_FORMAT)); // added to version 2 + //s.put("messageFormatAuto", new BooleanSetting(Account.DEFAULT_MESSAGE_FORMAT_AUTO)); // added to version 2 s.put("messageReadReceipt", new BooleanSetting(Account.DEFAULT_MESSAGE_READ_RECEIPT)); s.put("notificationUnreadCount", new BooleanSetting(true)); s.put("notifyMailCheck", new BooleanSetting(false)); From 6a02552b235d57f0271b3aa6effe59ca9d94fca4 Mon Sep 17 00:00:00 2001 From: ashley willis Date: Tue, 15 Nov 2011 13:01:30 -0600 Subject: [PATCH 27/39] incremented preferences/Settings.VERSION for new settings --- src/com/fsck/k9/preferences/AccountSettings.java | 3 ++- src/com/fsck/k9/preferences/Settings.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/fsck/k9/preferences/AccountSettings.java b/src/com/fsck/k9/preferences/AccountSettings.java index 060833cc2..167d9c914 100644 --- a/src/com/fsck/k9/preferences/AccountSettings.java +++ b/src/com/fsck/k9/preferences/AccountSettings.java @@ -55,6 +55,7 @@ public class AccountSettings { R.array.account_settings_message_age_values)); s.put("messageFormat", new EnumSetting(Account.MessageFormat.class, Account.DEFAULT_MESSAGE_FORMAT)); + s.put("messageFormatAuto", new BooleanSetting(Account.DEFAULT_MESSAGE_FORMAT_AUTO)); // added to version 2 s.put("messageReadReceipt", new BooleanSetting(Account.DEFAULT_MESSAGE_READ_RECEIPT)); s.put("notificationUnreadCount", new BooleanSetting(true)); s.put("notifyMailCheck", new BooleanSetting(false)); @@ -65,7 +66,7 @@ public class AccountSettings { s.put("quoteStyle", new EnumSetting(Account.QuoteStyle.class, Account.DEFAULT_QUOTE_STYLE)); s.put("replyAfterQuote", new BooleanSetting(Account.DEFAULT_REPLY_AFTER_QUOTE)); - //s.put("stripSignature", new BooleanSetting(Account.DEFAULT_STRIP_SIGNATURE)); // added to version 2 + s.put("stripSignature", new BooleanSetting(Account.DEFAULT_STRIP_SIGNATURE)); // added to version 2 s.put("ring", new BooleanSetting(true)); s.put("ringtone", new RingtoneSetting("content://settings/system/notification_sound")); s.put("saveAllHeaders", new BooleanSetting(true)); diff --git a/src/com/fsck/k9/preferences/Settings.java b/src/com/fsck/k9/preferences/Settings.java index 8b2b00ace..60da58266 100644 --- a/src/com/fsck/k9/preferences/Settings.java +++ b/src/com/fsck/k9/preferences/Settings.java @@ -32,7 +32,7 @@ public class Settings { * * @see SettingsExporter */ - public static final int VERSION = 1; + public static final int VERSION = 2; public static Map validate(Map settings, Map importedSettings, boolean useDefaultValues) { From 688db057ac9c797021550e10c177273a611c3a79 Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 02:51:46 +0100 Subject: [PATCH 28/39] Removed unused imports --- src/com/fsck/k9/mail/store/ImapResponseParser.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index d72dddd0f..874230a64 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -1,9 +1,6 @@ package com.fsck.k9.mail.store; import android.text.TextUtils; -import android.util.Log; - -import com.fsck.k9.K9; import com.fsck.k9.mail.MessagingException; import com.fsck.k9.mail.filter.FixedLengthInputStream; import com.fsck.k9.mail.filter.PeekableInputStream; From 727c8564ec6d5eaae5dd67f210d2e78dd50c3677 Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 03:10:26 +0100 Subject: [PATCH 29/39] Cleaned up readTokens() --- src/com/fsck/k9/mail/store/ImapResponseParser.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index 874230a64..2f6a3d10b 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -68,16 +68,14 @@ public class ImapResponseParser { private void readTokens(ImapResponse response) throws IOException { response.clear(); - Object token; + String firstToken = (String) readToken(response); - response.add(firstToken); - skipIfSpace(); - if (isStatusResponse(firstToken)) { parseStatusResponse(response); } else { + Object token; while ((token = readToken(response)) != null) { if (!(token instanceof ImapList)) { response.add(token); @@ -92,6 +90,8 @@ public class ImapResponseParser { void parseStatusResponse(ImapResponse parent) throws IOException { + skipIfSpace(); + int next = mIn.peek(); if (next == '[') { parseSequence(parent); From 43f5cbb3612cca6af34b626f327188d644be19b4 Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 03:11:35 +0100 Subject: [PATCH 30/39] Renamed parseStatusResponse() to parseResponseText() --- src/com/fsck/k9/mail/store/ImapResponseParser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index 2f6a3d10b..97072a657 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -73,7 +73,7 @@ public class ImapResponseParser { response.add(firstToken); if (isStatusResponse(firstToken)) { - parseStatusResponse(response); + parseResponseText(response); } else { Object token; while ((token = readToken(response)) != null) { @@ -88,7 +88,7 @@ public class ImapResponseParser { response.mCompleted = true; } - void parseStatusResponse(ImapResponse parent) throws IOException { + void parseResponseText(ImapResponse parent) throws IOException { skipIfSpace(); From f8779095d9c6860dcf17d4abccedd5390476200c Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 03:17:36 +0100 Subject: [PATCH 31/39] Parse resp-text on command continuation requests --- src/com/fsck/k9/mail/store/ImapResponseParser.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index 97072a657..328b3762c 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -47,8 +47,7 @@ public class ImapResponseParser { } else if (ch == '+') { response.mCommandContinuationRequested = parseCommandContinuationRequest(); - //TODO: Add special "resp-text" parsing - readTokens(response); + parseResponseText(response); } else { response.mTag = parseTaggedResponse(); readTokens(response); From e9b0f82c1126368fb4b8653e7b85a9f63eb9ad2a Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 03:23:59 +0100 Subject: [PATCH 32/39] Minor code cleanup --- src/com/fsck/k9/mail/store/ImapResponseParser.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index 328b3762c..1def9ec76 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -45,8 +45,7 @@ public class ImapResponseParser { parseUntaggedResponse(); readTokens(response); } else if (ch == '+') { - response.mCommandContinuationRequested = - parseCommandContinuationRequest(); + response.mCommandContinuationRequested = parseCommandContinuationRequest(); parseResponseText(response); } else { response.mTag = parseTaggedResponse(); @@ -87,8 +86,7 @@ public class ImapResponseParser { response.mCompleted = true; } - void parseResponseText(ImapResponse parent) throws IOException { - + private void parseResponseText(ImapResponse parent) throws IOException { skipIfSpace(); int next = mIn.peek(); @@ -104,10 +102,9 @@ public class ImapResponseParser { // The rest is free-form text. parent.add(rest); } - } - void skipIfSpace() throws IOException { + private void skipIfSpace() throws IOException { if (mIn.peek() == ' ') { expect(' '); } From 8cdd283bb8c31ebff18b6a7fa66f7103cb5ca1db Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 03:59:27 +0100 Subject: [PATCH 33/39] Added Javadoc comment --- .../k9/mail/store/ImapResponseParser.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index 1def9ec76..b38f779cf 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -86,6 +86,31 @@ public class ImapResponseParser { response.mCompleted = true; } + /** + * Parse {@code resp-text} tokens + * + *

+ * Responses "OK", "PREAUTH", "BYE", "NO", "BAD", and continuation request responses can + * contain {@code resp-text} tokens. We parse the {@code resp-text-code} part as tokens and + * read the rest as sequence of characters to avoid the parser interpreting things like + * "{123}" as start of a literal. + *

+ *

Example:

+ *

+ * {@code * OK [UIDVALIDITY 3857529045] UIDs valid} + *

+ *

+ * See RFC 3501, Section 9 Formal Syntax (resp-text) + *

+ * + * @param parent + * The {@link ImapResponse} instance that holds the parsed tokens of the response. + * + * @throws IOException + * If there's a network error. + * + * @see #isStatusResponse(String) + */ private void parseResponseText(ImapResponse parent) throws IOException { skipIfSpace(); From 1ab75f11f19f771f121a9c8eedf28f7c9db3704d Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 04:34:38 +0100 Subject: [PATCH 34/39] Added simple unit tests for ImapResponseParser --- .../k9/mail/store/ImapResponseParserTest.java | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 tests/src/com/fsck/k9/mail/store/ImapResponseParserTest.java diff --git a/tests/src/com/fsck/k9/mail/store/ImapResponseParserTest.java b/tests/src/com/fsck/k9/mail/store/ImapResponseParserTest.java new file mode 100644 index 000000000..7353e23e7 --- /dev/null +++ b/tests/src/com/fsck/k9/mail/store/ImapResponseParserTest.java @@ -0,0 +1,67 @@ +package com.fsck.k9.mail.store; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import com.fsck.k9.mail.filter.PeekableInputStream; +import com.fsck.k9.mail.store.ImapResponseParser.ImapList; +import com.fsck.k9.mail.store.ImapResponseParser.ImapResponse; +import junit.framework.TestCase; + +public class ImapResponseParserTest extends TestCase { + + public void testSimpleOkResponse() throws IOException { + ImapResponseParser parser = createParser("* OK\r\n"); + ImapResponse response = parser.readResponse(); + + assertNotNull(response); + assertEquals(1, response.size()); + assertEquals("OK", response.get(0)); + } + + public void testOkResponseWithText() throws IOException { + ImapResponseParser parser = createParser("* OK Some text here\r\n"); + ImapResponse response = parser.readResponse(); + + assertNotNull(response); + assertEquals(2, response.size()); + assertEquals("OK", response.get(0)); + assertEquals("Some text here", response.get(1)); + } + + public void testOkResponseWithRespTextCode() throws IOException { + ImapResponseParser parser = createParser("* OK [UIDVALIDITY 3857529045]\r\n"); + ImapResponse response = parser.readResponse(); + + assertNotNull(response); + assertEquals(2, response.size()); + assertEquals("OK", response.get(0)); + assertTrue(response.get(1) instanceof ImapList); + + ImapList respTextCode = (ImapList) response.get(1); + assertEquals(2, respTextCode.size()); + assertEquals("UIDVALIDITY", respTextCode.get(0)); + assertEquals("3857529045", respTextCode.get(1)); + } + + public void testOkResponseWithRespTextCodeAndText() throws IOException { + ImapResponseParser parser = createParser("* OK [token1 token2] {x} test [...]\r\n"); + ImapResponse response = parser.readResponse(); + + assertNotNull(response); + assertEquals(3, response.size()); + assertEquals("OK", response.get(0)); + assertTrue(response.get(1) instanceof ImapList); + assertEquals("{x} test [...]", response.get(2)); + + ImapList respTextCode = (ImapList) response.get(1); + assertEquals(2, respTextCode.size()); + assertEquals("token1", respTextCode.get(0)); + assertEquals("token2", respTextCode.get(1)); + } + + private ImapResponseParser createParser(String response) { + ByteArrayInputStream in = new ByteArrayInputStream(response.getBytes()); + PeekableInputStream pin = new PeekableInputStream(in); + return new ImapResponseParser(pin); + } +} From 99163dc9b949a303a76de9cc438ceab5b368fbca Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 04:48:50 +0100 Subject: [PATCH 35/39] Removed isSizeOrExpungeResponse() I don't understand what the purpose of this code was. It stopped parsing before the end of the line was reached, thus causing problems with parsing subsequent lines of the response. --- src/com/fsck/k9/mail/store/ImapResponseParser.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/com/fsck/k9/mail/store/ImapResponseParser.java b/src/com/fsck/k9/mail/store/ImapResponseParser.java index b38f779cf..e0853522e 100644 --- a/src/com/fsck/k9/mail/store/ImapResponseParser.java +++ b/src/com/fsck/k9/mail/store/ImapResponseParser.java @@ -77,9 +77,6 @@ public class ImapResponseParser { while ((token = readToken(response)) != null) { if (!(token instanceof ImapList)) { response.add(token); - if (isSizeOrExpungeResponse((String) token)) { - break; - } } } } @@ -546,12 +543,6 @@ public class ImapResponseParser { symbol.equalsIgnoreCase("BYE"); } - public boolean isSizeOrExpungeResponse(String symbol) { - return symbol.equalsIgnoreCase("EXISTS") || - symbol.equalsIgnoreCase("RECENT") || - symbol.equalsIgnoreCase("EXPUNGE"); - } - public static boolean equalsIgnoreCase(Object o1, Object o2) { if (o1 != null && o2 != null && o1 instanceof String && o2 instanceof String) { String s1 = (String)o1; From a71e1d9efc90852ac604859419e6df167b04cba8 Mon Sep 17 00:00:00 2001 From: cketti Date: Wed, 16 Nov 2011 04:59:49 +0100 Subject: [PATCH 36/39] Added HTML cleaner library to Eclipse config --- .classpath | 1 + 1 file changed, 1 insertion(+) diff --git a/.classpath b/.classpath index 9ba6b8726..779e2a6be 100644 --- a/.classpath +++ b/.classpath @@ -8,5 +8,6 @@ + From ba6e4102270d5b269c5bb51a5b96dbf51ac04e5d Mon Sep 17 00:00:00 2001 From: Koji Arai Date: Wed, 16 Nov 2011 23:45:27 +0900 Subject: [PATCH 37/39] Updated Japanese translation. catch up with 97bfb5e. --- res/values-ja/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 4d4385371..285a033dc 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -340,6 +340,7 @@ K-9 Mail セットアップにようこそ。\nK-9 は標準のAndroidメール 選択した動作を実行するときに常にダイアログを表示する アーカイブ 削除(メッセージ表示画面のみ) + スター付きメッセージの削除 (メッセージ表示のみ) 迷惑メール すべて既読にする 送信 @@ -564,9 +565,13 @@ K-9 Mail セットアップにようこそ。\nK-9 は標準のAndroidメール 引用テキストの後に返信を書く 返信するときに元のメッセージを返信の上に表示 + 引用から署名を除く + メッセージの返信時に引用文にある署名を取り除く + メッセージの形式 テキスト(画像や書式は取り除く) HTML (画像や書式を保持) + 自動 (HTMLメールに対する返信でなければテキスト) 開封確認 常に開封確認を要求する From 76f8e3921480853c1f8e24c5c269b0188d404099 Mon Sep 17 00:00:00 2001 From: Koji Arai Date: Thu, 17 Nov 2011 00:06:13 +0900 Subject: [PATCH 38/39] Improved Japanese translation --- res/values-ja/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 285a033dc..950577c24 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -340,7 +340,7 @@ K-9 Mail セットアップにようこそ。\nK-9 は標準のAndroidメール 選択した動作を実行するときに常にダイアログを表示する アーカイブ 削除(メッセージ表示画面のみ) - スター付きメッセージの削除 (メッセージ表示のみ) + スター付きメッセージの削除 (メッセージ表示画面のみ) 迷惑メール すべて既読にする 送信 From d82d0a220ce5020075a3528826d3d4c7eda33f4a Mon Sep 17 00:00:00 2001 From: Koji Arai Date: Thu, 17 Nov 2011 00:43:27 +0900 Subject: [PATCH 39/39] Fixed Issue 3850. Revert part of the onBackPressed() magic to back from MessageView. At least, this code still needed on android.os.Build.VERSION.SDK_INT == GINGERBREAD_MR1. --- src/com/fsck/k9/activity/MessageView.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/com/fsck/k9/activity/MessageView.java b/src/com/fsck/k9/activity/MessageView.java index 35272b628..40c645196 100644 --- a/src/com/fsck/k9/activity/MessageView.java +++ b/src/com/fsck/k9/activity/MessageView.java @@ -127,6 +127,15 @@ public class MessageView extends K9Activity implements OnClickListener { @Override public boolean onKeyDown(final int keyCode, final KeyEvent event) { + if ( + // XXX TODO - when we go to android 2.0, uncomment this + // android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR && + keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { + // Take care of calling this method on earlier versions of + // the platform where it doesn't exist. + onBackPressed(); + return true; + } switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: { if (K9.useVolumeKeysForNavigationEnabled()) {

8m)%9 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�e+lCHM>3VfI*Hy0*;sL(B_;9c(zIp1x8 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⁢FMzEebn zhRK-Gg}G0?3u1&Et6(939xhcP)t&4q^PbCq*NZpB{=Kx!uU6MKUs(X5~nP``f z_Nbld>HTi%W9Mkfr#fwA^!;|`BvN3$r}teTsCMz7fB36<-ST;dW}nt(dxx5?M1}g? zt^fi!0HHlP?S;rSKQvkd!1+wA^QJT0(20?EBH?;kA}_II@UIz=cjA#KM`SW1I-Zpd zo10RT%(Nr09yV@5Rb60Zo}*b6Zr#^u2f)wc-%_(2xUa{ooXT_xbKN3d4VF5=cjsxp zrT{*fn&We?i+!3x9Zq?%_+JzWu8PecO(_c@%vgEESRN6U<_8x4#LlWevO^p#I6-|4 z*#zPrBK)=iXs-?}3D_&19jY!WIqbS*>(e%KGi4fligab;Hu+VI4at?tC4K9u5jaFB zPm9=NcLMu;L1iV`3BSlP{Py_7{jO1mCi&?aM06#})eA3`=p#1UgO%^`F)#Q(L)ILS z>$7Fh62)Pe``Z#vc2wew?&Ck`g-A&~B#6ksk+nEm&G5N}tJPHGfw5g4Y>gcd{K4b( zvUPNqBEF5Fa8^d}bXEiRB8M?sp`Z2DWfp@Vykj==$r*wK+FWDPAcfU6NxB@wYSAJ= z?tFv3EK>Qoao7`&Dq*G`#L{Uw!^+WX&$WlK1JRo<4x=W_hDyD@6)qE)g=0S3AgBTx@)84n0NkJQY}m)$~mjt!rvACFMOvwZd#-Vx!C zbW$aBYm2)2tlrU$XPQ-oH+H;Vet<_J+R|J*+^;B+cYK=?7b|1S%@Rmga)@hrbD(b9 zUEck!cyi2%5?yBvY-cs&ZT)$)Z8APzxsO%l-)B0yMvkBJW0lzv)P*K{OcP~btM#7o zeT-JUSmVDbY|F2gMp)n8I>}h}h3BM{DoYdRzQ0LxHJ$z>KA^t|_vqahaad)_O4Pg8 z)|9xEW~>|j-Cb@(B-+g92lz_@f>i;cx-6hRELdPlKZeT~*rk5a%cB}JP!20Olbcl9 zvuj3=aI*Y3sU)%w&Ir0#GGZ=AvQj8sEh%Z(D=|!^6wJ&B4qcpc)0!G)ssN=cllZuE z!P&^@1jC&-aeWq7ZHP(m=n`R)uOR);4c?46lzFm=!}!t7=I$R*Uc!J=*Gn zaYv}S;H2F@v6l)5Q6nHdwa zvA(}-Y?vaxPQ>cBqaB^A#a?npGS~h(XS1!`l~mf*j8%QMoKhT`@$|HH6%i$+INku7 z;RF}oF!GljU$w#nmxR*_X@|L+e?%^lu*+-5P&)roDaS@oW;2Mk7*wx-I;n^Ts%-^f zFHQl~t@~Y?(;atIE>&6`{&oOj%T2iRZCbA!e&8_2Jyio2WCdI|W-+Xa_}8&6b5l~2eYqLN7is%m$s^?cGob<08Zq51g70{eN_MF_s4b$u>aIL)QE#uD0?9 ztN!@0i=nX#q+4|6^HQx=y;jbrCGnE4wsKrGEqjS1be1-E`wX8>)m{pzH$wE zwPu5~^#PY2_`*dUnRIx&b}xj5MZvUkJdt3JpD;^>YE^gx;^+3%%CZhsJb|W5JGbyp z)Vy*t2fF7ZpLsgNGv}xdWvXMPI)y&x&RAvJ=Wg}02on)RK#GYu>v{6eRELgcare&z zdR=P$3uUf#CGYNXj8>Y|7H7i`h^fsTNBh&$#78EHE|^vi_^zc7Ep%QX-zNr`4=9)q z_3=srC-|D=nHjxA|HLX@>p%BhbV_gXuKI=_s!~lv0gn&D-a|ioMChIXrcJi#yDt>d z>mVKC*m_-NisEoBjZ!p*3A$oCu)yjDnt%_w`8UGKNbrn}9hTT4m69>g*Z|z z+vj_9)y-JI`;TLKUA>+cU4vpv+D22fjPQ2U)M=Xe+E_&47?r4}=&gXuBun9}*%|uU zbI)S;O!^XX+41o1Ow%nIhtsZR+_V!17`wHE0#>aYuQ%t@YNT}7zoSdLJ);VI1gc+? z>SlZ*T#%uhC~&SoxqUIg^nqv&IQV@yx@9g8{X!xzO`NX!fjJ0Su1~k2Ie1(4_YGkW zI9h$*L~bNeR7=(SQMBum5RIPq?zOJzA%n4FAUAl?Yubbbe-flUVneTWVwHQKO8cF z$n^CPh3#cfW(8Xw*=q;IUN~xbqI`A+he7TOP#q34;DC|&)rl4yT>Ge>6a>iMirw5Z|h7?rt%hA&%|We_K6Oa zYOQk`S2IXBBPK8ofMb$&Po@NELQ8T>qjmQ7_mWm?V~yd7nYQr>(z0I{LGogr^&*1C zX%Vh#e8?L>wBFb7fD_<9Emd2sKMzf2J@QbF$JH@>F78lbBTTAKvZAgoy8Sigw{b(? zv4-49cQanpZoN*LZS9g$KE;&*OYAR3XsKC41IJ9A2DFS`LN|@TjXsE*Aik&Ix?+@K z&m05VJO6x$(_|4Ey38t~=~$c-(SCE>FJF17(05pqThb{IrmGfBzEJavV2;mZY(Z*O zaIxu?5c6s0IcJGe356lnl-*8-?MKtykEo=?tZ7Ve_vQA8$h$hyIXElj+95)5 zyb%W=BVwd(LX({kAW0i3G@OokEf0FKv{0YlR!bUPXNFCZ08{B{7HS%zj=?W~-q@5T zE2eICPohGhw$|?bd=YVY!^`EqDK68SMjjmM~+`X|>z>n$4|q2k#9@gYnAqH}4=8{BMvqxWj9sf6s2M zF&hQ0Tjt-8FKX&Gp=C@vz$fl^UV!8EGI6TT5FbD*#MeB{C5%ftId#5v4>-^ofuzKv zZdPW6ur)*H$T#llZ>azVF z=vr%RbzP>f)^g(ZV#cDUn}yJ6#XIs2m0DijOak#Z?l}lw6r-lyFpksaCTI2y&YIGZ z^mHKDXkH~z+p_5c%2n@LPaMm(JS+F?Wt^!~6?OLA+7@NJrlOS-PI~$39b(-w=%w{tp2;rh{H)mqtZ4UddRL{KCuAZB@UEFMK|1ceVIlZP=p@mo zq#L1YcAxBnIQVMz@SF&bqyiYrA39fEQ(1dYzz_At`#7g4b})3;T9|$77Bh&fMHH@k zEGoo%E^(}rnI=)-nx3e;F3N73hpG{3+6-rM6g&=NIR~Mjg3VZB*cOmZlyVJ>RZp#D zccoa;Oc`}3qv|GHU!{P`khm$RFQ-l$S=X+uq)vnuK#>lHhO~)}wpxy5kVJ8v+?t$2 z{FK>kRgcmQO)iTInUw#71$>{efio}4aB}43dRrFkkocQB&kS2lQ3r!6J=Gz%#++C< z!mjI2%UgQy8Oi!6A4<7c7{Zju064L8X=%lmyc78oO`KCAf>bXsFqbLdFhBYIN)GlP3&=x2sKtqQ#z4UHp#eV)8Y38y*@@QGxcV=r z%s#}$41T6M2xrvQ$T4QfE5W8USXljtmxf;0L4m+D*$<9xZ|yIFOY;Sb5Rq9uaCXZO z7sK=4geHGP77X-%#bDy~*E4t{Eb*$CNS$CcY+Q%q@Ux(ApAV(UQi3Y4Qjw zyZ&7hyWkO~#w(5U>q{C%=m&UvJ-EJx^8JWT7UAz2VUg$g4tk_PMYULfQ9hRJu9rnk z0tatD5PLK~oL|ci#+(HiexD`_hCw6x=BE15a5mJ`8L^u35WRTjNUIwv)trEKn=_z$ znI|n@AKs*a2Rx`w9qU1hrtpB-#L0`=4E#l}<#?h04r*HsU8LgTd}c=u<7yH^Q z?B;x$Dl1A7szF7XQA$Akte zbEZKpTw$x53|0Hpyb7)@X#NVfZ+|GRKK=xgk4Au!rZbkoUJi=~6mH^cM+QrK2f6y! zHrMC*wn3)}&qdrb!tMPtD%KCHlZyWC+c+gpg7 z@8RUsMwdDFmZ-4Vcjub14=T)dr%{RTC-$T9?o8WePS``)_(f{QoxIT&54R{tZbVRS z_h(Q@Da~2te6S(3!M#gT<}53`Pz)`A8{FJ6L#WQbkP>o0y^!Y=^9H;YPh9f$*BVGqST#SO5(Zt zg(i7zev)IdW(3=9ARAcRhDx%Uj03};CA7-V>@m^uZJbIyoC{lU8D!PG%#Mw@ellb3rnH3VBg@F->fqQ&KbD7%#Q#T()IUsO zF+2bxKuAzPTHt3jyAugl1`JeN~`c zWnJAO`%(CJu6rkY@@E4#ylhUEXNs+7&sCQDL8NIeL>ZZK#(& zwpImwPXPtmO~skavrs=G6-x6y%hTCShFjH21erCJylR_DpECYM(PsfEmj%nqlU38c zb$&FW`z+ydnC+e=q2Q#rr`FBaL1&zm?fvdD`FZH6`FKjCHm6CLQ^_t_6C2f#QZ$A z$I$BSqA5AcRawLKDx*SVwO_u%hDS!>`Jo^Ccd+pdZ#$z?+rVa;#FY(o+rd22K-D1m`Nq!F3w%1z+2Lnog&lfba8LeBBAZ64^;RV3-dzPuo~Q><9x zWiT9rEBVFcViHxb6<*~EJT>CRLfVs~L-*n0A22&)tt`xhM()b58=9x6Lzd1LYFKM$ zo=Tc=!gZ`n?99izMqdwCRw-jLAVD%;knkWwR>jD#i;*LwlC_O~8X8!Z&^+JBs)|7m zCpsPE1~Wb2#ykgPK^0J8K78D}aW`r2Q=afK)}c(m3L!4sX8FV1b^4>*`7JT=9z*M` zOT~MF>kLYQ>kLzY`$PqTug}`-D#yF9>J+vq9v2A2==@fy#dZU;#d-}Nb(0Lq-T&Qp z3homkh_%gn>&W2?(WB=e3tOT{zb^;qS-h?B*WKd*>q*&TbIT1VJNk!c{dXcS`F8U{ z;9}cW+)pLu6q;k#n(tkh$H}?gK|=K{2_s8ihG z*K!8V)HWR9$#!}QIyy;!)wKjF2AdbT;O1sJ6oTNDX|#{WsOkf*MB9B@$u`Xj1*{IL zbFY}7j3kPhd-2uD9@!ht(AKbm_ATzM^nq$bGH|%oCobgEqHH!wYo_9(drh=5ED@XD(&v8ERrr^7eYa-;7$rxZ5`9izWN66{b5Urb z4KXaQ(B(5Hn?uy4S54V|+++fx}-JwlWro0d?#=-N;QM?+okI!-Za{|Fe zZD}i=-?WL@t@kQ#-=k1swqij!3+(m~BE+PqB17bGoL~yi@cNo?oYJn3Eww41jw~BE zn20XUsMFqpeq_`vyb`t>{m6D8-0BIT1%_R(_BIP6fI3l3X$w{~JEda(h`|N=^`hMx z;i~S32rUDks!k}7F<5QSVan)4X|v>SZxUq>T6yGHVRajSmtzTx(Mtr@eBIVo-b>>T zGw`>b{X@E7WeK$$L74opGxR)yX&hk+3nZh)%7;`3v+?iuxQROCc<{B^A+^F#Q`y3T z=(BZ0%;ho1%zFmI=SUFSlvqt^Zw?Hy+;FPk5?otyCqhkIKavL=_mDQm%=0YZR6(13nbj&QMdWH`FDsmBaQf__!GLjz>d>Ii!jpJGnmjaivG5+B zH9t;EO!1F@@|d6ZJ$l&88hZSE?DUlDU4zQnqKR6H;o@|#)GnuURmR_oblf{w9ph}o z7?jp>My`%-TMeKTs*8iKRIE#0!Z$UsHDuHpx6>7gsf~Ykc-)nE+@}P8&Zz2tC# zbUZSTK7mGhTyA9=rf{8j^+!T9cs-k5YEHkQC4(xJoPg3z=WyMZlg3avSLko#_BAlE zHyH3Z+Xkap*>KWyIrX|#Y7>IX!REgK{BB?GAW;@;6;k?@>RDVtiO+k7Kd7Hh7J8Yj z#!(|M;dZLd{nRI6Ikdj%W$b@uog%@28V(X>G;!nnN=iPHV-2sC1g{fFl17HWEr};j zEvl{t$W)>+>o{sa|MlarM%vQFVT@MQkBCx;XXQ2c>2j_X>y0kSt}~(q!~?g{OWq1| z2SO#U`U?Zo-CbcmKC3&uZ48xn`YJjj*I0Tdv5dfXrlPtaS`Ep*uLlZ&_@1{QB6X2B zcMxymK4Elcp?4g3^3W8?v7*Wpc#4g8K+YesWt80IX!@<3xU%Igm-6WQn9We0%CG|# zT+iiH^aVA;jusF(s;>LLoauc1H)B&*8+27V?jjO&L2VD5pLnxjT(pBpZl<5so_d52wbKN;k3 z9zM2mJ0a{CZ!Xm90Oo6XI@L$6nSyJ%7&<<`{~c|K$k0h;p+G>c5kWvG{-0>8_J5OY zvZ}cj$_u8C$=a5>2}FJ*hH5?*onBv_{2aAK7rlX9{f|zh%8P5r!U@`RTv*a_YlV#r z=3^O+ur_8W>-mzB=-=zZt3)NwQVU$ou6!?oJx_v{57T(RMSY)J`TjoeZC|+WoP1B) zy%jpzf~iIMzT2q{KyMcAp>1l8u6a}PR`&%GHM~Y;c`wI)-1))gD%vlG&Q!hzgb?Dy z??p1=Bo06bKNA3ayu_dJRO~lHMVXWK?W$p<7GycGs0I;ppH;`fv>!Hr%kV09n%Snzewmuk7-l)MC= zcjWG*0TXr_XtouvDG|0*Y4!Q`2kXzrEj-fkfav&^W@~Ahc%EwORyJW9Wdt)`1Rj)X zNufks=js+?QZ6hMlxkU$1s7&>+elIm*kA4GQP|>Kjx~R#s289m7}t4P(#tGa7g(KP zG^b*W7O(5e*lZ{7#_y(86o)$Ir81r^e!)~^D5{8Rmu@A8kwlrz*PSn$=4e(cwd${x z#M_i@m-Ke=qLzN`n=qLRd9*)cs%Sdt_9L*Dt1;KpSfn>h+q7TFB=$|?n|f6muRibL zYKN-?LPI^^4H&TJ*l-qpZeBo&^hI2RyK~#{%co7ZDa&zfOKCO{38bkTGby)jF8ZIDt`@6&)U=&wr4Xrm@6vnb0B!q6-ms&fzw z9qJ;pb|a9`z7PGhs|TZ_>BqO2Uo&RI?8>f1*$rxv!ZzhY^W=}d{g z7GDkUuG((LV?uPjMO`ls6j6|<&^so_GdWy$2uj&@riKy!I3FW)2uh#>oY2w@W0S)bPV{-C%z1@{J zU^9EC`Wa1;7KG1vJ$Ma8G{N*|WM}Aw&n_5n%lS?M#iC*{>24mAC{6R0GEi3;l%ZJD zr8CW{De=Sh5J;QUBfo9t+8Q6lg|6?V`-M-_XIkpOovy*MCrukRe6a7@pW@uPV#T50#sK1qEGl zWPrOt1$yAR_UDvxze&S&-dziZC3h&H-gA(rCEBEp#Y6Ks zR@_`BIr+J9p6H6$4lsWS5iAie))e_wG%CgB;=B>+D4gYB-CC%7;>{M$mXc4rBcnO` zTPNbXGW{9}S#jzS&8OOFP9!U!IyBLxNtOTY&?HL&Tjs-Qz10MBE8J{SEmMqL7k))B zKRiK;vV1~Ii>RCTC4qWc&`L_e4;Y^t(0a=S1YtrD0mD9&sL}FjFS_A$d{(VlVSi|r z<1p1c2KsYZmYwY{pjSYV3)*#^iLp2=W_=wc>H0@!Nl%RKsaSz#sUx#4M5uMpSYClt zqu#3HRbUG6ljmjmb2;JVWDDNr_+wQZc?=FP`xFK;c)Y4#jwsZq8ju#E*)}q{+;5LJ zZX1yTwd@KpHD6JBGTSIe^U7#2f^4ZHScK|blD6i^3C-*;-|J9wiyp7CI@%T@IPT%b z2tUxDI=xB+ZTWFU@&lBQm}K=$-T9P^L4K^!x{ieAx4q8aiH=`v8QVZtskuRQ`|h+P%e)}{!+w`z3Y{U8glwJ2w=|N{TSKx1@$k?5E_ulp$?4;tg!BaS znB@vf|4PGhf^kqsg&60s!Uw+d$ElNJ!q{Si?Zha6Geq($GiD9J7W?-xBkREwz;#N) znlY^1Q{;$guRqAGQ!MQ&{R5sy`|dE$oN_3R64;-E*#*Ks=At3oJeYH9i<7nw4lQY+7W`#S{yrTutw`d}Q+O>V zQMaA070m=rYWb-kH=Q5H=31nCo>&wH6CPXtI;;DAd93D+ru>w{D61Rt)GhZ56Zx4_ ztkRuJ{Z1~-f#oZL48;jPpS5b-L%)lztUHp@bUQX-T}}>nP+AGA_h>y2s|d zyJm7BwqIk+%z2h4DpNhCUr)c~51A1u>U_YuF!h-s6ST#Ro_O`oVink4&AsgjJO;lc z$jNI#!Sq^q|GZ&JlP%ak@En#Q2+vGt-)2Vy)Xw{5$X~|ZWhfsL{eSa(5uWt3_uqf+ ztG<9QNy2(6k*35xmJ62cxWq~DRLosg{+=MdiH z>f^qv?fBpfLvcr+yn5mVy7}k!(CtI(^!L~!;qN8w_f15^sE%H%Ccn8!L+v>mBW}y3 z95f9?i_!<*FW}g`QfT+R?+m5qY%Q370SC~dqd0|^aSx@ngTH4z!Q7kubF3T&$fQQ= z!yBzkkEj>ajY-)OvX$B}c@8tMha_0)UE@U?lh3AUo?^~>q0?zF&%fyYoyyD@1MKtv ziI)E9g#Urc{tL#48U81ZIY%+T_0z)&`{p5#C+ms8!cGeDfPsepV0ipVpk`eWCn2uC zYX*zsCrF^hK(9a1@^|IMvkPAqgo6=^A|AR(*bxxovK-&rl&9C+=n8$IvBS)zX{&`? zO$WcIGNo=nSZ5|sUh%viMRY|`wzENr?)RtV<2YcMY8#ASr9SwllX_RuT`cys%T^CF2 zv;LT3g#XoC!=e?=btA+MmDV^smpdpf}_Be*I?9MbJ-sB4AH;lh0hmNgFc$TgV@71=kS0 zPn4&^QZx2YJdkJ+Ea?+7xLxZki>vE}Hau7^gWKZD^4|bjWDoz`xPR^Go@W4mbqk z>ZECftg(31yA)_=y8ESc;xmk`_Q8_C2=oR6Kl4ojKOppu*=cbXPMng_ulBez zpMw&S`e{ZukuwYdyg7&#)>c=%Gb7xHHlJYszIt9gziBNYKtQ6AK|p^0e^<}{vTRgT z?KV`383KAK>ZrBw>{Sq zOo~O#J2Is&Q7lL^)_SH!d@jF_`O=%jO%!+;DH1DwawgRQVp``A}m$o@aHBMjUB-zTFVf^iz^&TS4xVZ)v3LL z5|U9{+`Zi!X7h@Vo*THjKPQjf{pY<5Fxva97Hj3-_@759c;BT2LkDL z%h4shHa!70ZaYi8RQ5=V2Z==Snc`Ho`SLoVV-E2%wWKIr%&)3Pm5Sm|aM?FM^Pizx zlB1Lxw6-tHD3LUMpTYD~zg0;Nft2P*Tpmu0$Y(%%PC;|8K&gQTiP;XVi$UG$(?EOa zF$}QvJo^lizwf^~nM_jAnTiEHy0h%fblNecO!eurm-ZW+=POPo_E|}(3?On4?V)Io z>ZUK6H2z3kMuib!AkW2QbC(EnM|xY$PUu_v5FOarnr!4C*W<6$9sdqh)(NNBckk>y z5JsfiGe!)xqp=L(5Smzdgo&sj8GeK|_QCVjb@9?#J{;_PXX4gDy~ENuk!y9FDKA=Q zC$Z!lvR^5=+MwMY)R(p&eKAI5>0|BjXQOzGcA(6Wnf;_iIzGMG5M03`yM5()fL(io z@0>o!CEV`saqFZJ=;x~9pxvi-yysZ%j7&W%Iyb?(b(0wst^tT4H z%Nj+VhT^bQ1w0DUI)hV27cJIUaimgxLe>RkSpXhe>Ba{h9Bfpjx_3giJxg^W95;oL za#x1IhPgyH168@lju2(_ST<7P%Vaadw}{76iyx2qS5>!sZHfn%9p;plOd;OuDFo!4 zy4~C=#BFwAJiMx0M?%hR?-KEjB>Xe4mU!V(3UiGBw%#)ar80;LqItBwOaao5_mIMR z4y7p8*2(@Ig_{`y`dFGY_JN|Qu<(w7^}XGYdYBHVd~w+hm&%N^^lV{>y}T3As!?WZaNzEaRz8?BB^R2$%)-B+?u?p zBa^(1F_X04fojwi>W>12Q;i6dyUA(JY!-I0RBp|1%GH9(kv{j?GnYq!suzfzU+i+E zZpuSVvGIRn>99Jvt5t7Lk!Z0yk=o7Qc{|K*@11n|He!F=?1m3%)hgWTXfnH@rDpo$ z!LSN0!|4p*s6v*WYcJ<2R=-a63+1;sqHiz$)MJkQCg%ardD#9UO0nETf-)K3 zx1ZtToLgjG$^tBX#p!ovGIh9&AS}~Dfobo@j$hAybw8w|Q=cQRs*a7F(wbf+Qm+PM z{QdTg>CAC}(LI69K8YQ}D$VHtYx|BovJkF!>%a^4zi-sUJ7l-gU?3pz;Qv`1P&Bu; zvoijV;(*eI%EBL%Ex`rw`9Fwl7&quj16oeX;1I|=(Lq`wEKvlQL+qpl zK)*jq1k)enR4^#*Negc46MYu`Y~*MRh_#{b?4w#K${U_DcJ>zv}K=DaM3pds;{tH z&^Ble`ccHt4KmrxSU(azFw+21brc&jYfY3H7I(XaMzDazKR|t4zOMYT;%!+9n(S>7 zmA5V4yi9oHx$SBK2v%>rUTn1O8mvud6pS(v-OyI7tn(H+F3p<>%C%3fo%b(tfEp#}~csa6jA7KcXr|bo4B3fO{Z5<$Sq<;6U+CZ3Owy86|G+4h4oX=gchz z{jg{4y5;OH;2~p!Ge%E-M6w7I{Kat%b|iBt0~O8&-PEN<2c<&&YyO0Cv!sAA>iYW{ z{pjcg`UdgIJDom7oZ)->dCEDY&~pHmjuG~fz$h#Qn5%=h+%Q4Wo0GryKNxw-*t(iz zVb?J;Gcz+YGc&UtGjmKaGc!ZX%nY%&nK5SCX7-Mm^X1hU>C?=ed+wD=y`H7@W2sbC z-PPUIO*E5?Rp5|QFO4kG^SsK1_<;m1&|OuLuE5l8?#tJ&j9N^FmthVgdBZJh(c;B( zH{Noy{Mx%-x%08X-X<~1kn=a6KNu`V^(kgs`0?@4W+RIBlLCo(`|aHNMS9yON4 zOYkESBECEpQ7SNubAfx_DU4?UjR&A5Su@YWMv5iCgUXS1a~em}K92=BE}Y|1Y5LMuVhY4=NqP>JA$|~&wGk;o0#MPHs+G&7JmS(yhnLtw#WAC zl2e?$(07G-)-!Ll8 zL6L!QoxW%o7D3+&kz47v*>cI00lve$>FGDNxxX^~`Ehge9jr6_2C>w2X@C#&7pPvW zd(*Wy^6B6ijHDWvke~VJ3@QK5EK%wb9EIege%eOxAUL_00X9 zQj>=zZ@w)T9x(h(F-v#U0;BN9kAvuFdTkFuuHSeCXO-EyBPY}=jk7MUm0jCbmG>SF zS+q{(_hZ(+7Qdl7QddyJ(O3&?FO<&h1^bfXHEeGE`13sSl}gO5X}wB9_o5q@&-1 zn5i6@y`F{so>V8$6mp%CoY_KgIvz&&*0IM)0UFlLrD zgDin)uN=oQI)v+S3C#6qS33Bhk-w4k8N!_{3=^#|A{1V+xS5wjk^UjmM5TiU>Ab{| z6Y&}!RCOV9Kq(hXnK(~4b@Uy=4{d{G-X?6rAZnkRy*2057l>qtsAk?7HWgO9kl!WF z9sYnK$CmTt_99*ynrzq~I?m!^vxtoLwQ`n_e6%sqx^*7!xGnAxNBSvw&W0#%Mh3wy zwkc7PIwz)L8rfK2K$jWg%Ct9h_zQLVclGr)k>qJCNakg{GyJ_xbEUgu9c zLm{o?3QEL}Z5hpo5bn{pMo{jv*QNLvos-cEOVoFMNJ~w;k=5_xr>71=*B?NWSJxW< z_R9hYX!h!VWm95vZ(Wg1t@uthZGKGk@A1sN94bb$p$kh<{Vk+*|M@_g9k;XLiUPv|vW2%wo znq@}rHcN4h_9F+j0+rY>LcfNx>n zN#7}eg|H_WpV=TEz)#cyQ6F-kT-bLiLs1`gAYE7mdV%ya58x-pXQ&GqPy|keMlckl z2xx(wqZW*GK?8P$ouCz{_%C4YC3lz&ca)#)G^70nP@w5J~+Vbuqn73vffM=C}2R?6Na$p zGbvCa303#kpIo)Lj9VRLB0D$n4+*f18fdTRe{5EeiO z&V<50AA|(pfm=oGmwM&~3WVLD_scvB17X7K;Y29kqd*n_6<86f_c)MA*afTz&3gz) z0nh;ZllnaZWB_;w+eHghd4>QchKZnkDn26sp#dgxU+5^yWNp>S)RE~jHM202&!wy5 zG`-c2N_~^6Nq?m-YnNteQdJq3wp0Jg)g)2hOxnm;_9|_sX@jWhFZH6-lBy=Df~~Ss zS5yCxyOOlCR_7}9BI62L7FBO6^`dGcsM?l8BIn9lCN7Og!k4$htpb)lQgVeX8<##( zx1m%8$i-7~#ViMwp37dToP(*C$iv%RaYblh zfWMq2NXh`_DDLw-;#SX)m^~;{LTUWglVP{ZsWujkWynq_;$A*h)xXHH4gY!E6VVkMhwjfm_S0OW)bg|K#H=m~dJG)91oF`gJn>Ce#xH(I+|!8ODrUSq`LFMJe^` z%d5^{`%01}h4-o4`*8{hqTlMQ77uo!&aC7jPohgtEKMfF8`C)n4?vnpe~ck!v*_pV5SJVy(;IO z)+{%;U3a^TM1!OO&P7wr^knIomuJslF1m6=H;FUTFeuHXS8S$SIQ*W548IMWt~?W; ze4MbH5sYN-@~Jt?xldrQobK?D=DfW+PMv*mlqNeGv2;6FbZMCo7f#342)~>M8&Y&; z(LQCpJ1RwQ%4np^dyH%1*OWLK&e~*~m<6ztF()!1U$0~;F8>u6YVn8m zicM8@8(KO}Of3A`korR5L4QX^x( zm{*(Zl)dA=zeFfCwTy=cwt+6oghm6=S$}#;uCC|h2Wk!;05Q6Nt8i9}Uq1s}`~S)C&FO!!xad$59R0@%>gKp?S~e$0IuH zB)3u(0<}xw@ygb9J#25&`V}0(OO}yybLrwZo_uM|(aL(3XT6sef%1DfsdP4Tx%tAQ zr_;GibC%3h!jxs+{7yPCsr2mG9h(uU4D7q;tavQ_EX`C!1Wy|qhyHG3SmCM)WONKQ z+bYx;`w}a2Wu@$S4$NdU?Hp7^xzjium4<3A?8lwxNG%dasqN;LL+;bAtJFkRZ*U?s z3t1&Y*nzXDzpx)u0&8ZZXwQy@!^MLPgM5O#5NNdha|wwmp~s=3U~D>E3^@2y%#(?9 zxb?p)lRIZmPR0Y|a^IqiAYLT(bIOUoMl8XdrA!TfZD1+AoXuw*M^2xfeyoK$@FB;x z`ARk5QFFgs;6Qh5>suX{hrq^{=21&J7nUb(CH;{nV#r9N{+I{nMTQZm9nt*%$2yVaY|V-@uhdS>v0s?W z0AF0{xox>6oish2dX&$#l$x1FgTVByhf3XwLib?7AGX^_kP_TGrtYF z2F#XnxKZlk=^KJFl13I(^g3}^$*jHVA5qx(-c=Zv#y<(!z};eWzQO3J#Tt0k7oOa) zH}$>$)hMm3Y0L7A+VMp|f zCdj_WZtlvA5EYA8Aue?<|>j6J{2)pNMx6SaA20kE?t9Sz z0nVWX9cySM$9hm^cZ5(!jU<=QZ@E7qObO#6qFJGHObH)(Oelg;I#VAsDSuZ0ew!hP^tu{@xI#S&HfO^NgJ^2EDQ);L zpC-6*W*t^~Rp!i?&Tp&aTSBBsc&s&oHte||Qq|jhLOy*ks7)W08L&kKoQ=-msRqyF z4zFT(4{cwm3e^$VP(?3G28X)1xZ+B@%~bUf(euPYTRWl0Yj8$&j*Z%IUu|7P%`?b@$M;1#-uwBxa=&J*%&s(h#g#Fi8m-gl3g<>H^+(V2 z6FB~zMYR;$w3tjBb4%rV1KOME|HQ6OQ(L_`a`v2j_x9`=a5(zYxZVY&11Ga*96WP< zLy&uH^89hs*w@rGJ}ut@e^=DZ0|1c)_)Cp?m)7L9lilmU{B=m>AY-9aNB0o8+SBA&vChu#3# z5h!775p4k8p-AyUAcYyj&=`O_LM7}9u@D{uu@ElN>^T#p8{r9{96AAD4&eYehcW?( zLplJ)p;f>EZa>;FZa>yB-U@;MZa)S#Za!uC%74lx7` zB*6>B`iyq1b`d_{1Qy~YViV7u!u8^chgrWv#oCR?jI=p3kZLqFX=D*^QkYZt*&RJ)^Xbiu(7gT_79By zg`*cFQ7OGV{sY2u3&NF zLNM94yI8fWZx8I9{^gaY)9I@MtT7De265H5U)+2C(;)rRDE)0bkaRY`1;*A~1>SS( zZ2I>P{o*dXackR7+&Qr8A?ce_Lk%2I%iV1wY%Am{O+tZXII0Ye?jZ1VLfeJUHvtPkD6|Scyiij+A77HFTO9Y6iq-A@$4Q&^EK6?L2<|%N~^fawTXRrozDqP?SP?sD;9khwN<#WAx396*J>+1Fk?|jts%7Va-<3| zLOi@{{xO*Dc+!t`c|a2va>*1@F_J&a%!zPj9yT)Tq?mPTi_!qdDmw(6hm#rb=S9cP z>OcU}>O#s4nS-WBdZ9AJ5xYr|83rQL%g5+#LVwL8+mn8=2jc3&i~)RQ0noC=2)4CB zh>yXH+JmmgfV?5Gq%pMlU{BS7-}BM&tOU7c$g?3`Yw&lhNZ$vPpDAV|MS$R0i3q^C zPS}L85fF|cIL)3qFIvwYrQw(FBk7G`I)f9P_{xJ^F7)-`OD;t3NUKA;t`P4MU5%<* z10q@^yhd7sc-7FenxT7)T;Q|Xo-PUaD6yIpc{MpeK`w+@ojR9b`JwP?3}*E^pm`e@ zc1^fTv_52J^@vNhK6qwLnM?S22*WS4Xu)zaqr&40jrYF%>@t8!WQ&^7&$5x&7pxZY5(<$dxjeuEr z0m{=El*>#KP?0er${7`?(HK7Qlv%e*XQ0HFO0ZmK@W7W#uy}PK)t5=|>+z>; zAF=is5=e18+*$$)WLSwJNKzewBhCdfw?Xa2#Q#zw;R$lH5$r{`3)7L90qNUd_Y&KM z^N8E}a4f^wi{An3=D~dgT2Xi4m_ocIVu5}0=sqH?n8L80gB$bk&#bNJ!tiw=i4rxy z)Oq}8&Q@$;gt}1A;s?+-8wh`3C#X#0iwR%Ao_z&;zpLGzfi-HaxAcIwGLipHTqH@J z^z(vkL}8vDsAUQMC$H_=o(G^|)?d>43%xa&oi$oS-pDDh!n|jO`P!Mdo3<&BHB|;* zO=C|B{!~8K+K^r>)-3dwMpw+3<3H^kOG8zEz zJLm^4@Ur`(Ccvxw9qVLFjn>9KhHM2%1qoy#6UW$q8mN8&+ZXgm(`0mg|`T0}(PlU%8o_}AXQVGbKdVvE2Yb5{!Bl<6ERR6l~ zxY%q`SRW;5=-etQmRW+NR+h#DYagbHIIB6D!2sj zANE2-8WO*Ky!thmJl#*z{Q1~}0dwK;#|@Ek5rm}?SA`r?Fe4L`*w;g!OZF)k=8@|a z-IqdVN%qMeW}s9~;g#CwjCO_sD#G?7Su5-r!qNk^&>NC{gb;UwZ&G|hhhI?bOke@I zWLXF}@_S7958OgsxM4R?KqBY`CL_mu3CF&CiK~EoKio#A%Zu^zh^o_LWvYCg*aalh zJqoF6j@ne_U$MAh0-M%mp8@|4{lI8k+0ewaZ$D*s(UkEE0@Y2P;&IunCEv9MT zFO&yzRGgJuEGVO0o3v2UKg%6Xq1?Y)UKooi^soo|lY@W{5FX5RcpQakVK; zkijPqsVP#$$MBlS6U|l0L0y@rLE}N*c6*T~)_&cnESRacIPFu+@0p7Uty z@pEx$G^3F&p~(FK6w0Z8JmwgZOveq3HKQfF=O?DkX%qXnD=uPLOF>){V!m=8wSt|QQwr=0PRjQFL3pU{>#$7=Qf zBcs)lSz)IY5Xz_*I+`Yqs3nk>ZD6gIcRH7C$h{j!40Li6GZpn zf$ppD>HCt^Df_xd+I>nYXplECwh3;1D6RR7zcbsAP44iq)KU&{)m3HfuXt0n6WoqbBG{WtSP%&I4 zGR3e(_)&)3toxBSrbu!`Yf);a>Pq~8Iwx<$&LMA181`L54UVVOmt(Bx$5M?POFHSo z4pTtuL=*s>n#kkcNbLoTOYgy7!U8NI>j7=B{)NMy=ftEle8x?KjI1eqj)YwzMPxjt zJfQ-D8St6iN$LSZZ_A|<904b-Fxbpi>DgC<6r8KUXjYAqDG9gUqL?j?4Ef)OWva?+ zP;$Vz`L6^46X}|h>F3y)=|uMlTAb|Ym~XHjBl!)bO;gsUoWIqZQCXzGw0xLe2$z9Z z=4?jPd&~|juB{hM+j}-NjoYV-Cg+PL+)6*Av@=&-gTF;*1E$h{IA9;qtJPy4;j6Vr zx!Q;4d;S=v+&_|5Yrl1an(c!VPHaYUmS<8$6uT74=!9l;g@}1H4BeLlVO4*MbE#HB zBm7DcZ~L2YhpC1riDyYt1_!92v!Q>D9+jh2na&T385UfOeLHpCQkgsWqS-mkx2fhd zHVz>OEzDYsc&iEl!)6|t^eJ|456(Sg)`^lZ!0iL;H88{qn>c_f2v7HnZ{vdL;X{bX z8m2&(T>51Q0m%ac>@k)QOF9Z<_ajixFHbfomf%f7$C0N1P>J z;dA&I19yw>)VN9{YerBtC~eo6Z0A_oZy*WpL(vx;F-Nfoixe|1Ki zIElaK;Cy$Ne1&Qk5i2zzUuZ`Ebhbbiu`Sw@Vy)a$ z;CS1Uo*{fQ%HteZ)d)iwK`FkNouH`xGgqFNK7MkP0Qp@hDc(0pa;Kzl*yeEv%ls_e z$XZCs^MrA8x^Z5@Bq_>sXj{>wFc{bX*7;#RI@xKYW<_}OaWQkJq#m?GVw9wK@Zq$O zv@S7iIkDTvJ?zgFh^Uv-D>vkj{<}Q}F9W@cM)a0C!n7WZV=rrp?xk~}GJ`h^=uS%6 zV3ny8v1G?n<^^Olwb?kuSzA=pY8aLW#1I&wwwsa9G!u42dsp#L>cJB++te%^0n!d$bTB-VF!DYRQ1P#0(=~n|bFhAM%R3 zj%9=s&IplmSVo)V_e_dI3yi$KR+z~Kx;bXNi7jV78h8`+*b zXwRB>VPWS%{=6}7YP%sW+KhtjnJ-i_;)IrQ(VjigEuhNS@jrJv*HfdXlMdLG+Lijr zCBbJ~n9|vWOa#?VGO3GStqWb9op5bcoPgJumOT%+WgS2U7<<7cG{fcANQ%rh+ou6(|^H+v7qov%m%7&b2JJ?<-{ zl}~!^Qa)>Too9CV$vHU&T_^h2&XaZN3UfR{*d1k)Dal$lI@mzJY@GK|Jb!V}m_WP% zx^4QgRy~&4y~Le`RuB0^JX!>+Lx{wL7PeDjxGX*3StV40RM$q7yBMO!3cGvvY@nti z@;GwPa|`9)RZl#wwzB%Gb_qBb7}Niv`roIRgTsF)9kb;emlma%p(CAaK+!IFMlMUw0bY;!P z2AGEiMJ!k?)4R#K1RS;=#}bGZsj#CBeuE_XAE%i0v_v`^2cX{W+wpNT2AcJ-atj2- zc*8lhQs?P_ke)4p&+yvcCHATI88v=ILl_SJu#;+u#*< z$JX7${Xa~Xt|8~VB#QY-4TqP)tFV-TPMbz0x}U~dHbzc~8LatB38l`LR@P=8`Ajn* z{t|AAWgh?)-AvR;{<{QqE!}()}UnDT_1KJd-2FisI+m%>{{M-&rp;LR< zbBh*8okQ5c>*T&=wkLiOjH?jQ9YAXgKZUh3zOfQ~D{YVXEuaWsl~`={HaN~dZ?WoH z2C_80idq=h%}ibhIHLOqD&CZDdnM@Yn@YM!O(?cwP(h|XC`R-eo{vxcO$5A-5tZ^M zpO%_XrH4C~s3YmqE=GRq?`UYf6@s?dE~yOA2`i>t`qk>6Q-!OEf)cI`yyHQPJ%eg{ z8dp`pi`Z`$fg^m;mHLJst;AEk9u(Xh48H*#L+hFa&98ghX1g0Ua=HjUTpz<@t34iB$IPbd@7iXpTCe@F6>t?d6J-QF<<$G##Z zzaC6N?ydb#3^cWPNP&IZ+{WN79jTj}zY4-pI6;au=Wg>K2k@B)?fj)j4$P!tiFg>h zHXF=)5q8RkB6;ulPNe;od+nK7w5%66Jogva^`|Bv;&!@jpNy(XRA3ChD~_xTa~2gm z8&-H!5RMDmmz_8Xi1=A=(51n&moSBOpy(sTY=D?>sP`Dz?IF0Jz?W^_2&Z|vRN+vC zrjM`FO9nJCOAQ6F_J-mNCeKj+QBXOq9cS{_&$1xFz_|Z^`I)wvgXe#Cjp-T+f87lA zliPKFG;0Np(y>?&o{Um?Gwn95NR~>yOjeDzbdsz?sk@XpfytplJrMq9kOGTrsVpHc zb~H(NmZu_}QotU&KtujZfA)6a&;9@y5G)J(xT#iXgr9m3iVe~B0Wk7HVJ%$;aw8R@0^)@u{t833=W?ORv932hYY4k<2(P8lmTx)mafd9nNfs? zi|NaVQp8dD1(F@i;QaMwhybAG>bKa`HjXCM$D~{B9@mgEAGdw`TWy8G87r-)JPohX z6k6RvBTcW+PKyM%Q{g7jwccVvUd-@VBWBxr^y#vZb)jx2a_Ei=tjzXtKMSop1F{)g zJtUfD0I}|858IHu;1GPg0#Z42=!%z&vB{-AdKvMNgX|=K^Y~e3L=G~Mj_0&O6PUzE zxw8F^`aflng1>$v&f#(Y!C?*k?cM6^7x{yPRdc_Zll*Aw;gYJ~Qjgi1tsLIbniO1o zU$0M%bSJLDxn8rt$nB`v+s5#Ip#+^odaFGCXbvZP5zg9C5d$A$>>FTIGT12H7lo49b}YI82TP z#iUol9l9jOut2tbCL3> z>5cjVa{EBBTTFbSNtDu*vC>jua+a&=xO~z8@COXHKfcEabELD8@q*;%7$a)1b*zpq z(2fKhbhG1rG`-%LLBWD>A-LIZ728T;q46t%z5uHdFT$DS3ABfLk7tns`dbC40=o< zK`EjZ8)KqzUIgpp#{t}x*JFvOt#>9FPP~@x_nF4UCx{M?1nQmfRPm`Ichark?~F*N zb&K@AWAjd>KR&6PiPbNdk8tG!%8pF=@h0~~5&LxGM9_DNVbgx6nyy5dRZ{0cq-;Mt zG{vMf;9VA!M;NL6?Fuyol;i`n`IH7F(5gU(A!b|wamQ$1N(3T{8*fxXll>dw_yq=A zXG*z=huYZ^nFzjN^0xCCuiF$&G~S5-a3{ZWKiT@w%b-bc#207cqD(Sym}?I)e&-86 zYRK@;lp_1ajb*&%-bONB4-40}mgQO{vsM&2I>;J{7{Dp0%AD&tA3Lq;Pb|f+aCnvM zyzuj|wSF+qd7M{ZwUODvG<()OZ-*j9c%4Lz%sJXkGX#neyy>ex?miVG%`nOSifG#d z#@1_y`31b*3H%BYaX_E-92)-fdr+J2oc@Rg`ZR4f`az)@WZI0X7Lv;TZ@bEq+m3(t z4`j`Qn-?4~ux-Bo*QLS#d+xDJ-_Kw3SDW$0G($GuH*xaRBoL+qHCbgZA}TBj6*_nd z=#h(30yk@VI2#T!R+~xxqU52jsBT2t++ZUF3)PlM7oqOa*5EDBZ`04Yrthk+FJQ}W z>SIONdNyxbG2;1xgwMLLZ`IiTs%_Qy!ocr#L&VrOJBs?nxbw1*Fcxk~W8p z!g8Aui{sb%OM%#!F<;@ZNt1Z$u*r~E$M=Qan5>SQ#AJp+Xp8wq%lO^{6J%%BBTc-D z3DQ5iWZYwZF{Vj;5bqfrBIwf`iaoMOO~m(U5p4H)*8gTg(^CHgLNe~wz3*C>65F9C z*=Ap)s7s3Mn2>2uT)RGCy-6BVK8t;(oeWrv@#Q@()9ck0eht5;Mj7klOvG4By$1zl z9^Wye+&nIde?#%LMZ5V8nlZLJ3cvM9RJ~5`>KH%J{?@xX))76h=~E%-#FI8~fJ_!x zDEK&WpvZN7;jdqJ#s-zVIk*x~maNK$u#GI=0jz5-*p7%ChXMe;YF^?6o1 z`=(efSYJLav3>&g?egjNOQ5y0Ip z&o(_f=2%Y}wq>kMyqJ(y-W*-*^90BPF+I}zhw#+men}k%EeD)q9xGOpq!DL1Rx@@D z-*60_(fxp8V(J}4cP3bwp$Y8rnC?qYMU%NhL-^F_WWa*znCR|`YA-`4S4hF_qpmk= zvoJ2oRLA<6q7#aQlr?4#4W%Aq)4e3^dU1q%OqlXfU$LdVU1-K7TU5mn`RoLVpS>bo z^Ifp^SI?!Ec3&r}-AW$aU1CMut>1W;XH5adDH7XT(9EzoCs0mZjLRe_o-nD+0-tRV z3znTMt-^V*L+y17HjLSB!SVz(_k?QnW(Mp_QmXO}$)_k@kq*X?RSUy8J~jqENfTH~ zwFa9JcboPOiquVn$v%}RJ5~pm5Wm%@hNdF*7Vce15Ywn#mnT+U(I0Is&e^S_#pKm% zU5(2yt|^H{w(_-|x6#hA>7srP&l}$mb4zuw4T6uZD($Aw5M!1h+uI8gZw+atC$2%P z7!`}bR#i_u4p2dCwukRe&cU=(W36{4N9RFHk?Gd69cXi99Y-4$8D_)~VYnw*NuoFd zq(!QjMY@0qLPC=+cqdDook_ao*Q&*XzZ{d^)H#0b*qPOSt#$mqnL_rgp{RWo8{t(! z7qAIfC^$-1E!6+iTIbJ6DYue(d&#}ap2W&1rAYQ6CFap&x>Tl#8R$u(5aVg$hLnzO zgxog245?}YIx*d-U(^n%SEg}gbsZEBi&EMWvTGpv`;7FYCeMZEqfw1xac&twZOKwn zP0pJu8ZisSMy9g=T0X+jvfA9%WGqak;62`+1UECECKA}Xr^~=OvC1y{o;_1q)uqID za%`ZP?x@BP(!)B4jc*@epT%YTRfEjF(LAe5zixS+zuLc% z$h?$g8+<3t#5y&KHRO67`_&aYYtcOV(ymUK=JJMqOuOk`0L4JAmkxoHk}5(h7NXL4E)uEz9{cn zaHCZ&t*{!rj{GsaBwAI_mbt0Dp6QQ#?=iZ*pQw>lZVzQE6ZQNio|c$FrjAan5*nD& zCapmS6%`h#72m% zqP2}4(?t24GE6UH(r5w?zZ9@1G=AX)gp$+1TuM``4BjKg){ME@#yXEf8t#E|HFvA} z(#GUA!cV+~6+=@rnud1wL)7}Wy9R4`-%(Rnc( zY}D4UZqnjvh}h;rbe$(kqe*S4z)H#SjcZ*>aCL+T0$iaqT_Ua@MqS%l{1VW_?oYY0 z{YAT!B*x3|`IiHY1%#dnK3A>XYDv-a@P2JUuViJ#!R?yH50V(=95ZuAiY4`}dzZW% z$)FkO`q{0p*=3upJdy-1$Ea8xe6!J<_&$~k59q?h&Z3hpR8?u_gFCDSq+IhZUm zQ@HTb;t%O6RF_h!xsaZC>&`DSSBMeKVyZ@gt8`*P{*3p^YHocE4{s*u-b_eM$Y{0) zJm4=x4KO)OOV*PuPWzfO8k`P`>&nnJ=;Y`9(OM!ZX$$ujKjC z9+R#8Y%h%YOD|ZT=#AsD&w>ZH@S7tI=lA%1v&%`=$}2)yitp@8WjI->7sigq;U|bc z+c5O3-7gaWM#Y`8C(jK09|G-BiIWF4_wBO{zb}YCb7oC&ric!lPw%Z?o%27Xzpr)$ zAqc%I<^QC5{NN@=1x3v67QcCZGJl^Naz?&0Wl%nS4{(6~BT6iCNOER4b0G9?k^dba z^6SO={VvaVe%0DHSQ$nV!1CkprV3y|d_ZzL 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 literal 0 HcmV?d00001 diff --git a/libs/htmlcleaner-2.2.jar b/libs/htmlcleaner-2.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..cc922d06b8272fc9f64da3495bfc3b7904a9e51e GIT binary patch literal 107942 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%0Dv_oPK_qm2CTTqI zZGhY1o%1{uY}Nf4*VHzXt`4tUJJ6?gR6l42RBMNi!nW>5L>FmPeE?Wgk)P3YV_RbK zl$P5)-qxYKadrGfsJCA%9z^CDS|MY_FcT2_xzclG=H1M?0zzi1=$v~{lff-^rzM3L za=wz;%8c<1_k7-0-_b3;|L|t64_*6U7waEhx$WNs<3C*({uMm`-z@{A zO#kECH>s{F{%ZmS4_T<+Paz4JI3JlUlE|vM51iP7m7a`he3>1PkTM3##v*t>CZ9m9 zaMOoyT|jHgVF1IZpR7u~*NWC(SGdLl%9$5g4+V8e)0VWq;DF(QR5D_~4Vjjn-gz3kvrcVOYL ze~gc)t(J;nt?~{wTUVz&oGFCpr!aU{O3FQDu%4uz@d=(DkPC363!|%Y=3)o)JYJU? zyeB!n%P6r5OzAM^fxDDk=l-Tfd#5?8**LZw!ONJYcT)x)qTg2yo!>-Ccay*BCN21) zmB?E1cVZ(GW+UEWQ}G9y2CP2jV>GLr7r1Kpf;tb5)X!-~2Ut~9rvQVW>!Gy;*NL#H zF{a@}+%1|&6KnKQZ?HOW-K66&zp>vEGPyYT0Ebd@4}ZZ%GrGtrnl>0sVEV_~6HB27 zbi?)5D<|HoQx0lL$#?I34yfs=Y>}R_p;jYnEH@mgfJbHAK0at&&%7D7bq527ij>SJ zT)^UOnYXT{9W+6sn=rvAKh3VymJK)BjYN67VMmOovVU3VVPyoM(O2#UM9wXeE$+RF^oSg1@NoOLld$62BYtySMyA^Y^FB{ zE)0x=-d>DBjVVCc+fnID&nqwZo%z}7ucNm-k5X6Lc?G3b5k_HgW|hLDB~qPP6!<5r ze9|1+;_~;9qkFslNXaSHvR<0$j?QE%nWTWuHM7)|fy9faTd9t1IE#Wem%e9yP_V zkjlryY5X~&{apkCi!3K;pEZy4$`o`5X#q&9hXN9h3Enz{A0m-z-hf|FPPo0osFNqI z3dF%TxBLJ4RtW7SdXyojNrt5IOLd44g**OJcK$+Sw>63eb(eZ9L`vNS(dMq{xQEHqp$5R#yO_lIewnn-h;@FAB&oP278CXv+g3pOyQYeqQQt6AFuvi6WKj1S+oeH= zpzSuz6O~9>p%!NhjR55fz*^cCVVr2k?xR`?2@v+b7Tn9zWiVg-%S#5$;~PN<+bUaj zwj5c=kj>sm)*dJ?wx}X$usX%QD0CUys=IK*NI^^EFFnx=#<-90qr8J;@ubX+$eB6pFgm^EKLyce#} zS%wmTqV(J>^8+Z=ZQqo1{IYK z39v7`vNX;7d3=yZuz;4Mq7N;wGkpCT;$Uk0;(s+q%M6N>(S|sk*E5>b@fLUb3PLs^@oGM#1H_lwwn>*pU>>R#u(nvq|;~&U99aIo(>o zCIJ6j=?a>EDh(JV-_^u#yV)e3d>P|;i6kZQ)I>Ocq;qk%^wuf+=&>g@-Gxzg*%l}w zIcG$El1Wm{xoxgx^3mL<#`g$&4?QD+T4O*3oje4cQqVd`JiV)ej^Vxs8YxOEaswUN zkQTcOt*Fo$Ghu}Xm30A!%g2pyKVH35Iks%q+@e(LwApnyNL30$I>JerUG#*0l??yD zd^0Q#VB~8OCP4Gwq3#j76V9&{`I+l@PlGG!_a><7mr3%FUr=VPsOQAWrhM93z`*4( zG<#2W{Gy%g67acT_HIl&yh;AX>b~H$CYks|60i@(v1kmzP&UGu_k$;_7P6wp=(zEbEs- z;t+hX?_*(BgK*erv2vI>en42Wy^)`JP8jjeXqiUBaGO`e;1MzpoGVU|cO)#Pvd@UP zr@nJJ`8C$>TQ}cn3jA$>Iy1#`(OU~9?m_GPB8hv*T}Q&KO!TwW2nu%E`8;mh1%3Pv ztvK)g6e}fNHg?k}=ktmj&%!fpkWoLn&(c>*oNcai%uJcEpGmyVK_1)oZLTRsJ^j4t zn{l+SzrSf8@-tp+Cpr)uN#>Tgdt$L=6(qA1a!A;Y=lypKxGd!bf9daUeHZ|n`rFjA8Y0pL(Ny-_2HDi++y=>1*W3oh6avl4216G_;Y&O# z!uW=;VCC=tH$GH8G{VGWtTQk6;QRRwMY0?0)2SPA7&b3eU68&C{nUK&GnEhd z6btdK72*ug9jlwLg5k#vr*8S+%#8!$z;kd|Cvle^^mvWPz6hD_kmcOF=15pfBKA8I zPx2C?1&=X4QzkQjXK7(LeF~ep{d}u6eVUXG&fnYA){MBQ&pdjhYCk3|T}lJDnqjTE zh%Wxz`c(R9B%f)b(0JbF(bf3PStD*riz8A~X<;duxF(O*M4`1@KqHlmT$kP1RN4iT zWv@$C=cEwtN~In2gr7&HMQorxy)k?ToyVr6#X?=&azv1i)kM{DSc>huI{CPzc_blam4&iwP^OfD zn>T-y!612G8LO>UAfGTRlebtpDlKN2O<vBfXzfZ%*_%>tj_O>V$8Ni>tTyWJ z#p(p?aJWg2tpD(#QT>EBgL}vK{c|G@cBQ}3OS;8)P4T|kt9M-;^91{jc6IjL+Z*~k z+B@=`=`U}5Rzm#Y>Q%f)@Z*z;C3lZj53cB1p8pPHW!`%K0;+y)>=8rP+m&7xm;eix=0VSaiQZr7?}2U2j{LXQ3R?()Z-VboL5Di>@BT?oZftljYVltv~ZWuEPig}D! zj?|v%lvOZsc%zMN0#sB@J8z`R;MRFAOxPY+F)v6)W=X|54ksbdd^S2!@K(ik^%15dC5!wR!mSIiH-Qo7 z_#I`mb8Bae>NsGOhT(&v0x^t;Eh?&xBg!^%$EC{{5ln%$kh(HmVz|Rd9XBXc_$!jN z*U>S9l#092VWSU1r7Qg**kttXiTX#Y#W5Wh)X!R zQ54Tai;e;{ruXoj{uapnh%QF{Yr>|kZ(EejW(ayCgt5D1p=wfy`?RnHW|$qHv@r0=*xH$gp=!rYsz>+;~uoW3I(7}bwoPv>#n_#ao z{U<(Of?pYN?7)V!LwkXo0%M%ad?=HEZbkdj=I|nOvr@$#bw}IR7&(-8_qVfzMbw_+ zVXujdvu~9zGFsE;eCgTfQ0Y+gZ1JsxwL86(|JrT*u%t4_Vaa$?Jkaq9Kw^W-Zh*f| zF?yZID<#i#7y2u9k2gsEZii18C6{bqW_JB(>==eKEEO{~^#-pqA9r19uV#phn*Bgz zXCMzaqDvdu#%Cg&TO?eFLS-vXSrCobf_S!`=fo(j<&P8YdYLGgkCM`5Fw zqvlag`rJY7m#pD(BIQ5Lw~Hk4kAI)P*zJ8t8M<4xlw2NiflTgvYrssdX;ed+%%4^k znemq6R}GHERF=FT5qsmf>uq~g-@-L{1ugM1=tnxn>xc8>ZrKTb(4+sfeF88Qzx!H9)Fp|tqTtD>o zNaX~OM>sY1pMe3&P_5jcv=nL;58vRK`n>bF!k82q!ZLCB(F{$Pl0#uiQL}J&iSiOS z?MXZB0)`e1*|R{TWEi;7wiw&;3-nvL#xkqi?l2FNnz=68G#IQMe~9z4Lv(7;Zh4`O zbhgqk@clSLa}C_8yVoQT#VMxq?mTgrzkfGeN>u%#0 zzjPwa*seYC1r{bFl2(5SG_~ASf=HV?!Qqc!Pm4T%F!w+tGr#{Ax`~5dXqD=3@CNiR zeD9x93;*67{VTd)`~S8vDX-hi3n21Y9-U%hk2f_2BZA7}Dwfa@B0>gH6A_F4DpT3! zs6MmWUrD}D^+H7;M6!3^0ehw#JSQiUkWB2HoSdG{;^OZ(`y0Ud1g#A&ao_(Hf9TJO zP_)VzC%z~ErwZcCJDwjuL@sKd`#cJ3pOjZ-gAH!(i<#?SruxHAQ2GL2c8-8KwG{btbqtp|79j>gJK z!(UkJNG5?iF*qa1Rpj2=4e5K&4*~iZXS$q6kJ`J|v?1an*5{!m z@q689ip9IWqL~S;P+;IFsddKvgJdY8+Dvt@JdwqcPgXpUcqp+qL3zBsgm9P@H+l1p z*+GIe<9piKvwTbCR6Q3{=WonZik5|Qx~MtfB+f5VcNXTwN8|;h!Ufz1=(=v$l(UW# z^TINMiJ*#wk}pXVbpD14)MeBH4!Yn2Y!Pz5D`Zy75#s8*iL9&OdMk&&wX1x^$m~JX zWB>TmO<8$nY)dHnn0DwMv`I$m?|H0%KPa4P-WtB{7eR_6E1D3iJ86JsS#ZMcF2--| z9sK#S?H48G0B#NsQ%et0_5yz?2UtS4q(_<=Gkpa3uw0}jcg3RJ{#P6vx&5!o#`CXq%;HfNN8+k3G9)Qur2&!8){W+k*bv_+4sEw&A>SeozgeW0mXEfef0Oyi*`<`WK^PVg3<8&!_2 zkd}@c_)et^F|5xjnO5nHZLVt@4%lJ5TZdRM->ZAjfg%4)hQlpqr!tVf>0b&Wm9eToh_V4tiWFQzjirsv6eHZ!dL(Tjmqx(hF zHM3cZ{zcX03suQb_%au$2NVQ!yX^Fs^m8zOX@T5l%Y5h#`^43KN!%4geUQ?uyFvT2 zQcipkPdUO9LjY__M>u$mNqCgx0i7|pbB?#T4r3LWCSv#}Cv(!N2v~CyNyVY8d{`(Z zb=sw=osTJFt8@Dj^Wxo)$vJ8sAI4I?fFGkP0)QV}=CwH0!!-M3sglJ+#gI?4zW^an zOThYfNQh{=T@NK0*Op-xrILhBx-$$3-fGLy7si$+X>Q>&xzvr7LW=N9?R2BG|wx zzYRbN^Hf%-C-92X!Mp{;H|5z?F<Gxor~^_sEU*Hqc$F{A z;vB&QeNDVCuyuE}l=d+2g;lyUOuFp^wx$HNoV@*J;m-YR*q>yRqV~dK?w$07<6@7K zF26I44X%cQTr&!;E}8}9cg9HJE`t0ZDKiFPk{>-c!;uEfV?w(#v#Gva4*&I%DV~xP z8ld3I7{SOjlfh2&YcF?$kGHuAB;HAk8TPyQqK6*muGurH{%x1!Hcf!@gTjx?r^Sef zm$J&TP&Pn3HWE$Ku_<4Sg*ZUXX{Z(YwZJHaK4V?By7AR6dPo`eyAU@*!$!a-bsl7% z?Of1v>X^NzQDjFyJKwZgzHz&_gNqa<eBKqVY*ZFIxA3SXG!zGpO~Do zRxWnq4@=*5fw0W!j$rYnCOZ+-Sil;tF&|55ok>@;rc9n9u>6zmFg>CSUKPj+!!EH8 zX+vbK^nQc)8B`;fSBs&ZA8@wXXX}W<+W6(`0Xt{M-;5%^Tv?T=l=(EgR36wSU-N%a zT3qXHAbF>%C*|r8l$OcGB;PG(^}o5-x7Gr2J(h#YTaqSdo7r=YE2`-u>$R5`#6RN6 zh{$CwvgBT3DjaiaCNyN@rjOz7L>|KTAZXl1$xFSE2{S1A-x$Qhsn5J!{a`(fdM*4A~n6 zA9Pm1rRhA!YxtESI}>J05=$1}KwZ;S@|GJv@-|#Gs)cNr z2u!v6$YApy^(b=UL)54wHT{#Dy=>0`mb>~iM)GX(`AFSLS*yafzKI-~P}oIeS0ICP3OYRb z2hp5~y&OhQmA2mqCIiA^v@oePp-M`h-#UD7tBzG+}9N{#DSx7X290WD{pC z{c+?{DAqdLMe^LkZffmtrqN&%ri(vIKBLztY?WB6+@94(tmPXR zmGH_e^umvT**~3s#Gp{wV7CV=CI(vAt>bLJpfTB(@OT6>pi~>b8zfj|?K>K`-3G~x&tfd9C?F9( zfa zB#7Ik({FQuZRKkOG*sl1wBA*&teh$K_eP}f1CaWQ)_Hf91mxbFNMwZ7>G+zr^Y?%r zkPe_b2NdPp`5nwnmp=q44BtlP{0zf8a$s4R&;HDOY7rtK?c|2j4HQV)H4bf&#yHoS z|30Z0#Gj2jI%>v_Wg8(J$cZ)K?DiuEO>@ij&kc7K;n?#ONfB|GAzq_Y35t1BpxnX< zsb$uR8y&~=W{nFQau&qNd3n%K58NhY@6 z*tYHDjcwbuZQHhOOy*|Y|NU^zS@(SC58bP~R#op_y>{(->iNm~XjCk4Yt$(HPFFGu z476}6Hy)CYWj_T>NZV<+gv%0@AN(aG%a$!E?*>=P>Q^pN`jbw%bkV4gF4L%9LZ>_< zp`qqf3*nFCogOH=at0^pL7r7qfQWh4DxdB&IeTVB9^@l5RA?P$G3pndL)8sx6sv=ES9)w~z#SP2H|hVtIJcG_OUGP?J)pyN8lxliPsj zR3HoAxFp!KY>vBy)=+wApj46(98Pfck|x`OT-!1m%xztwiSLvl+XDN_b1IvKbJoJW zMOM>O(BZr;_;UK_`5q|yGB2BTUGRbb=qK9|G)DeI;BnSGOtzy;y@c;ESC)==G~`r2 ziy%+Td0i^z?6DQZQ)u{0T<&~P^25m^d|IF7nswXJ>YTXGWp;u4szl)I(KK$A1@xc# z*j{moh2$6{Gq=r?FdD%cQjP12CLGi&65rpIWvOk(_sxT`(w zxT~GhE;OsOjrrP)7ZHYEQ1ggG7!(I+S^W7i&fnnhoY@j?Z*qsv5a~Cqbl>?Nr}uy_ z^atoN11^f{V1x6P^T(pfH_2MO!U|+yQ;CUvZgcgpub1_dfiLH7McmRpb=pBq9shAM zH;{O^H}NZ@d+tp0T{iv3`Q87kU?Jua^{1z7S3sVb&FajOFe3+HAG6x*F>v`}0dx zZ(q4Q8|u-lRl7;a5>;WAUZ(`l$Y`+=-~;ZThOT$ixO!FRNPz=1{a2uhPn+v0RylWd z`eyaEOz1yv)RB}*#1Qr|?1J~jhQDd=%ww4dFT5J_*@K2Q)tp@M5U4YwA4gH=pNYH_ zPneJcps7{;Q=HjvP8?ITYRO72GRhzrh`v$5JT(}tXukoD-bk3IMR=LY&4GI&X zs0=&A#wEEz!hWPuf*3F)kUnIrPoZuOG7m7Qn0n0nxyN8c8*-I%GHuXefGXl?xJspl zIOdw_e03HL`-v*8{!<$Yf?@MH< zLcD)a4Y1{8MwUHj9Jq}2J>o!E#mHL|QgdfuZ=TjbL-P?F4H>quVvkucBS@muNPCc< z4YjgL$l>TM`bYqia3!*BTGLq}xkh?KV2lz>o{kUoA6&%FU16#EN0m!xsRAv_KX*89 zk=aevIq>dsd+)X1cizLN5e^MBGARM%u2Dl8DFIAe2S)cBx-WoR6>!eGlL3Lw4Pw|V z7zmOMQPXN16=YowS*~M=5D62Q5dDbS1cfjEymL0_lI8j|n)Mp-TWqefo>2xKuQ&+( zf5X2^b*g*ME30`3WDq1ABUchPn32-(0WCUShT}#FDi`seVO`AveKV0tZYKoIl?XTO z4Ar5+WUBVr+&#fgABQG%ih0o~Kb@U(is3ks$^e*f!GB>t^`8ajNNvzX*17Gm){==6 z_*@ZPECRyG*kTG&4s)~*w2Fg%p;}$%8RYFP(Ye~M3jAUYj-!fpHn$UIY#iflSpkc~ z_F*rj&e>;^A|L!2$(8=z7eh6AmS^!CkmessI`6O7)njF?yu{8#Rkq43!jx+Y09B$$0;^8<_ktjLHSax6%pN6|U_+klFXRf<%a>mTw7LzN|a zAQ0`L1<;YFqWwxrZU4B4EfgvO_<$ZpOde#_u#;Czkx`|)7aJLZT1K5}VT4JrOsS1@ zD!Vqr@(6gjmcshIS@PI7w@^V`H69ICTt24K(Mi1Bt$pnh|Ooje=+WPsqjfZ)A_b_i~ik$3l3W#oYTB!ce- zstF?4EU~)5>ztJMxeb8Z!vzvTXX^q2guwUDgP)(> zhGx`X0eMb_zC?j6zH>DAvZ*~fpszi_yaZEYDP#+%(!-SZ+2a?t{V@{0wR@P?uf03& z`}^-4z1>LMiy;AsbMp1cZokuM1h%|intT8s8dDo2PDE-Lx#>J=edven01vsk50K>H z=61P3bznmV~?at?@1D8he3bm!2{P>e4Qwct#c(H-DknMQsTlzj1MC;VE-I8 ziF?kXL+7&4&8CfyuLpiDgGA{z2#FL$_hVp{6Czpy_aA)kqi#O(bkf9f_Mz?1JE3Fl$ ztM`uD@rtIyR#smM9lhV9*mUD&RDYLB%o%fBq@=kAaKH37L~8CgDiDCrTfA<%@n;T# z#3JfCgYwMlWSz=b24|7P*Ab&}>qKzRXzQ%IBGciBxWn53Zz!T6UP=@nVDuZRPvsj! z+1{4Q`$Zq9---uw=aw2oqYqgf0O1Cj=~tl-pAFUIhGHf9ODn9&jt-dn<6;+s7afNQ zl*f*QH#|d6zy=7`3bEa{uuH;=&p*JjOPCF@v&$v!maVu$tUAJTiPs%?qh9r^&iBLL z6JZrm1dr4Q?Pp+eU%`NK^`lP!yXtw8Gz1~V60IMh@X_CBb{1xAl4sHsVTXTK?VGUD zH;l~?<3s;cl6eFNM5 zncU0+gt08uj{r{8FEoabd-Tn;m<{6}V%5Xa@zaM4^$utS)vRM-am@eh#M|P%msBou zs)2EC)}T}cw2Gos>ILW6g{x^!Tcl+8EYgYuYPuj8XtgQ4inQyikgzzrsi4M_uqWuv z_4+sdB2Y;p#pnn$ilP9EhjoI$d&pCT-KIK`@pn;#I_sJtuu~`u&|MkY&YfD*E{OL7 z7p%yZ{y&{rQ=bT>y*&E-+t$J9VX;wZcv{w-4rtFt7qgtRkt4LMnX{k~BM{*%Mm`?) zL9DND;ieDEAu7_3Fc>HMlEq%o0d-NSS_%FIMJ3I1iiVDK319c~jl{O=1f1D!A5U?6 z=)<)Iy&1>OtbOCd&0+_YQILoY&mg!Yrihobj)Ng}nv{clomm7y4p#ch1OZ2{P?dvS z%c`k}vIr+L_mGr_TEss;m^TstlsW`bhW2!WKC3y{V|(yieh`G^+QxNV;f4))>nfa~ zC&;jRjK}Gqr7YH#AQ>$w5Vhs?p(Hs~$h=na6liP%=lIR|SCeN{$GhgodICH_rnHU@ zf^vBMXcCiHdiuZoz_`QLg#u3lKh*!DtsC7|D7 zL=L>@(Ra@be>=DQi{+aTv%~nppYD^}%s@wMuw~H&c}Q#&0TI@vh$};3n$vqdG`6tf z_=3*I7OVChrk9=;yOoa|!;1RnxT zqgg`S#w3nxnYg&JY#I3tkmju6$XqK`Caan(w(g%oXs|(<^Gidn#gb>@V3=!qP;2^> zTzP(4^3pb`q6DcTXW_SNkv{2E*{no^273T>6Zt2}RBT1vU~C|a5;_ZeEU7*5%jM)U zDet(EWpr6FKg2lKGp!y@#_nPj(}T3EeW_T$G>U^etuX_of*rFg6G}!SCbj}1f&+nz zh5j}&JFY8nJyAZ8rrOqzVF-04A~Rjj&^(>=SG_g+o$US}{{+KQ_1 zm7b<^7|(|F#`M>6(pB^05pwSUm*JgVuVp|3mbZTQ$^g>zHdqfKrSgW?+uL>Xa5Dvt zKFEp0=T&A^>`-Z;r%fc5#er?dUMHl7k_cho&D+&0d*sO{q@5l~tKsnQ;EfUq-;xnU z2dZIrglS~_5QZOosWjDj{q@7j{XuiF zQu6~I>5DBs^t}&e-_n&O7_hEt@>Vk%qZUl$Yqp{-a7>O~kRsk|-Fdhk>7Ygx6ZklW z6m~z3;{6Gf607kSZmjzw=wUyV;Z<~ac}hz;TIUnbEndGO0;Pyx9l3l(+&Tbb7j5zb zXa8kX639jaAIAWD4bO(*AMh@S>f`pm>GMuCHb9`l`~$AJ zJ*4oIJkXiWlziK1Dx>aa^+Imlm56P7fESCh;+wTral_m|bClk4Vu0S60Zl@Hq)F16!P!zviF_ zMJRZ}33eFx!4z|7o4-f&_+$ng%itIa96r&fdaYSeZ}QdM1g3^V%0P2+4{o{A18b0N zY061C=yHEF#sU|JabzOSI5qnJF%)QM$Yz*9WC_!pDRTQ)mn=0#$rkdQlCBFxsj_Z{4 zOr>4mExTf|Gw;lvdtr^xK6hLUX}`M~!;;^XDTy~#HwebVxtBRE;g`WOCgKJsx!4Lm zJ#3Cgm&pjn-^-jiea-u8yWb({MJDJ(g?l&GIulm1ez%y1(`p*YZJiJSilr?j?~T(t zPNx_HqNYEtY)XG1YbebCvZ)W z(q{R@k@{;*y+RJRvDW4nvzb2pj=y7&$?}6SXUd4ytmcO#gj+^XKA^YW-2gek^C1;f zQCDS9*<2=?DL=evwNf%VY*>m=do+W?ctxJ@S+mcIabY`6-?1 zAXM<^vuw@K=RwmKZrP!;4X|7IZ=4dfCVa!D&yZJzWBP>~F$s!B_RKv{vWrwXe}C-C zc;Ia3{iXiN73DZ%Z>3D1gdme*_?rpz6qX``ZH*BS9$^oSd(ECas>p=f3NNX`mjmhQ zu-qQmBPsh*oix@NF)^iluFZmbsG*C_j-xdyGI>`%Nc4tYmgjRkJFUX2Co(y=0Slwj zU2^{8@DI7n5nqvP)!@)m6wAhteR(PRhewu(tDb823KiE6yjyM&C7T-U&5J3#sjh4C zSNM}(*{YnP^Ao6&&NXyriJ=cjHDXGogD5s}uG5U z**8b2qz|@8z5>1C_BKa9XVP|MB18h?g#1#7F38o*QAn34vOe15grU7*+*me`m!#Hm zA)yxenK)5|w%|6(^l+(&OsAOESic_Qss@){7dmu2KcP-du*N`rfCYmMu`)AtX?!!- z_ppqa2zH6DG^QgAeRYq_w1sM|a6U-|!S-K*jTihEdBEB8jhfj8r0#g-BOv)M6>Y+EWMt5yTs zyq%jS5}!zA&S^e_n5)^BV}>obS2rj>{ltf7ln5iN_y7!=W(;1-OE z1)4o+a#cUh5{Sa1By^AK@*w^IS6d-OIYL=xlM*jE!$2wIB4A42LfoX_Y)N2e!ToXO zG`h@;I$nxrd2k3|6OUFAHQvSf&Sxbf)h`uf1T=-n=7OsTOLknX zg1bLk7e*m)aS1bi^=!dle`2Ydk#^a)7|pJSm|wvTurWl=L6XjDSj}lfT23i81IA*M zXG&9$R`xs+@|n&(Ko`qOE4K7&*g5yQ$7}+~-^8Gg_cgJ~av{+f)Yp+?3!?mp*2PB` z?su`OdJUYRRvK|@MVD?CXp2k6deY?=Wm(XJumj!lshfbsy_CD_YtyHtHg)r)?;J%T#!}gssf;@3W zo+!4#3GOtnxd2Tt)Fx^`xyk_b6e5MCrG8d30{#5*K$Zr`^_;A~XA_RuoW-659n?n? zQfFy!m2kZ?Bdi>U9P7&g_W3OhEWrTF9c}U%^=f52Bu`_l>a^bLpSO8~T^sO< zNvkr~nQ2@nEv_az0y;Y&mwN6{4eSo74f^`oQk59Av>E`EQG9dVkP*-$>UEz+MO**-oiENZWrnB)PxsiEp;Igl1jc~zV(aZ*o@~z~k)&X5e z|8c+79KO{RK_e~a;x{YD!0Fl{1^@e)uKIIcoO6Gd3I7XG(Xx*uUZDJ;;;teJ;O`7P z^rUZ#3;J80O<9dh<*aUFuN-7R>436z`W1-?Of9v@oXB~w5e$j4HO`L^gN@OI@fRzs zA*`rKO43k6hk6dRGMBh(ic8{%u2jY?M>25LgH%GuhVVc@n$Pl&I)s0EG6vN8Nhr$@ z^N;s)+si33E%JEy{_tn0I>qgbqmFI?a$HtaR$Ciup)_VS9CeMzv z$@QkfbIQ)=%nRqvKhLb2O~?B$Q%ri$Ue?cIux!5y2u5grI=`%2>;X1Va2{eQ*ubQ| z;n}??R`?a5-=P#gq|Rx>o^t{jjs#nj zDbl3Xzi)t1w7(7|I>D|JY}_sYOwv9djC_w2w3S-F41WTTG0Br$zYUDWj(GqLSO%8_ z$H6RZm^#fExJM4mz&2s_3fsc~YGRjTnJ`V7qz*8q?6Ctku*>l|5iKt{bBwEkVDW0P zs=4*pw)<*h^QOZh?COG^5C8~jZS{j;@U4qs6Lws}1wk^hfZ!>VYQ47jG1WVh>&63% zVu0aD2WjWVj~5Ddcf^4%xEBdGfg5f6-#?qhPmP~cA)7!pYPI_je!kiV;CrJ~JO74S zVS2s7ie)_Yqg*M_LX^OA`AxCH)7Gui9}33q=*_ZHfHI7C%eeCE*h8xy9$|I-sp>SP zcHzfHTYVM{F4<+g9clnwu}vgV>-h>bZlYulidBtOxQJKZvpUqW*`O3ol|>>ejF+Ho z2ufJFvP;l@o$?U2(zbDU zD@q$wcURGu%5bby0A=GHl&21tcp#X=u~>d?#L9_w zJG9^D+$V1uo1BbQNqr_Gxrhrh914VNaH+tFCRLVlS~A)yJ%NV+RVLx1P%~F!tfTgrm;GUAn$2W6du&_hPB z@KWi@6vlw{)Kq@v?V{_+h^DZDYO5d*T{>60uTmgcg0g3La|+{H+82uRtYrCH_uGCL z1+hGgD~m2KR#zq9&u9~2mbTQ&a4pIO(#NH)lfTckb)Gl~k#94@X~Yy+2PK`Rgo}dk zf!Vui2jYHgCtZS|B@`YXTFNa6pB-im^<+1VyXRxF)_o{cMqB%KY#e&bO zvC?m@Y9OP%;Behu?{tbd0Ro*0@K|D;`Ry(HHy>w- zaxG3jP)c*TT*n1R_5D7Ut{4l&wj&JR!>@hBM8^Asd0(02?BOt&B(JtC1I1HU^shyb zF2gT#3rcu<*5G~Qn)cr>bY$u}*3=AAK$hF|$c#M+Y!{|WlT|Redf^9%ejgQ}Y3o_V zZ6%y1cDA8gw*IdHA0QaqPizDxJdJf`Z6)DA z1+BHh(hm6mboK}70M#o*=ikiNa}~YiSabN9&v<8CFFm=F6L=5=C@vu4)gz+_3k843oeyh`;7Xirr!L4_QjrJG~rdZ;ot|PlrSCCskT= z00u)u3%D-0llTOaZkz6h2WFjK{-8Xr&cI0B5!+EW{+tIXlr%=&r|HWF7q%)w!$P0Ieh+`E6+F5jIG!acCIL<&vXdp5y+nzID zk(bDd(|eVZ%D@!HS+)cdP=nudd94X zh6@#NmzXKIKyP+*i+w!ct-fsE^j@Z~Ph<`h=PuDe{!^SU_8zok7rTOIQEDz7^c#(9 z$?j47=iFh`Yk%Fjo~2S{1f9Vjhg99LGUDpWsc0H_z5q`wXO8l1dC%Bu3Gh_5v>(Ue ze<;^7vGt0ZRK+agi45zoSaR|umZUDsW#Br9xM&+ltc{r4%OxN(B23Z9CSmlo`6NOW)h+ZH@bh z8;Z+Xugz2Yk)x>M08U9UjzkNQ8PP;?6hf(F??W8hRw_BDhcnEtSO0cSsZ1QV6i03oQgYn3B|75i-W z(iqhiy2fybiJgIxz>c7QfqBb}oq=tW8~rOpfOMZ58xq7zdx%V=i*zqS6a(WfJ(?2a zr9OHf%0{{`j4cV;Ht*s`h*e_kulccSWl@3$jgayJnw$e6g$O|HSB>V2 zRl6R)`BApH4EF3`iHK%5*0+0DK3OD053fgQfHle(+Bd|QssgktOO+yn6K>;99HdfjGklY#Mej-@JH#$L8oW>(A(gYzaUu?}cd4qnrdPF#a6w z*GdI%=`(7@FBW8*402!86mEKxm-3C!`#~GblZ%bfZ&4cPSvCY4kq3581R_NU3O_4> zgV@XLhL${lU`C2-p8sK6%%cNs>YpI-w{aKVErC=B(JU;Xu#N8VXRNNy9N58!+U2aK znlM4-9JVBiMu5MRRZJqOU=7y_ILQj%ptCJPbqV+imt%F9D1C6NhJzg+UF&p)qk5DU zwSCjk?mAg3eX8SHq!$0aMn<4z%kDYL$vBGxL?}&apk>VNdplQ((V>Q%Rvezz3{W&yVdj&qXVC~7UI#ahpb(f@$?a^ z1D}vq%<-;=j$N1aG#PFi0ZH{0SL-u$wd-UXOq7-`d3DzJDQvZEx+DDevl3czN4wmF ztzW~L6{Dj~8LiKUyWEtm)v1o~-%Uwrc{JqWB=j1jh%xjgLGL*^xchO=?A&A8z#($-noUEF~g=?nNXm)6uDA^cHkK; zENg1td|sanZ5Gbvq~fw3`GgRB_n?CxWJ@jW{H|&;7+a|Umw2E$tv1f22^S!ci#EiJ zF~ztJvZao8Zr3GQn61==OFGbn5Q3HuXH(E%lMB%Li{5ce z#T5aA?Xk~b-OM{_ikqc|({_BQKwhAT)7C?!o5yz-4?cM^F}z4v&-G*>ul1p7C>|1C z#lXGr@;F`%4<5*uA?v=hNp3KuQ{AX#kSJ%;g`$i zC!q~83j#+7o9uqYKo@&y8{Djf5$l3L4_NMJ!8n~xIDFR5-#Z^OX1#+nyADzN0g(Lg z%hzBh>Hsz43!uOE?um%>W$^E$DfGhpLYm0Sz}fS$E~M=JW(AUe!xpvOxcqh^^GW%Y zXcO|`t^?*PK&K*E)%Dc8#U*$it&I63_J(;dY)M3yz?CQY_W6OzMl#{EIGfZ94_0k+ z8XD^fd5=omP4C()9)g+E)j4=!+}FgCTcVc~ou4#1&5`wPzlSE4t(QlFH)ZOwzV7Sd z?%Dl(i&{Qy8413!?)!HXhhK9N;lHx$dj#ZxFJj{pUm*^;h*UeTp#~rSia6g5!`1)A zaDM%%Tct2^_bs;lr#mX3OExVxMlVpX`hwFbX1?o+yeDSnubYeR6UhEba@fiTc@I$XesH?s?MITYviLu}6& zFGOJE?v+Wl_nV_<43(@Qx@Q#ebAryWuAdp(wsEr8JeiAgs~*V|kbX-(vE|lq#9v;) zIZ=;os@c4+H9=q5j5p|>Oi)?Z8T>#eFsw0AWAA^2v#syEFLdEn*{~fNQR&>e+75bA zC1_P^GhlLY&^p-;mZIruSm2Dvu8z11^PHQCIG_&)*b_TcL8eeV{)>8_`v#D3f0NtG zIcr++`{^TU?V=@u{V-Fe>}NAx{x8_$!Hyy73t|VBAlRTCcbNwaLZ~K|_o3#jxe_3x zTmR2*#}A&1yCH6tK?hb{gvKNL1%k$pm?n*v)1nxOjBb#99;P)M*-OmxN*SYHzQnj6 zLF?9w%t_$nctI+yP(Eq8w`%{r)G`zE+i>$4Y@qa2T zJWsYO{E(24!jLX5kg6__?4pp>yPxyE8eJag9>@E(0y4{maQnYjeHc3}R&LC4_=1hW--+y1cZms%f3uM7t!axe>6A)!1z@;nH;D>e^!C+Hqm? zvb26>xmEQ1Z_D!`JNIy;ZRc&;wfp5@GQ!vG9vcL+6a)3Dl_I+0Rv-0OUl;lHfEX&) zpuT@}>MIt%&HbYf*WVyoF&VAUo_YJppkTT2;~%J&x4Hgu&?e%^Ax7?iWVwu2I0B|S zbuZc6nF$9i`YguVQvZ?t!`D`S1}rT0J8)6y%)tbQuS8m1w9N(LCv5-hq$94l=g!-& zcq?6`c7~C$XBz0teqD-Nl}{N^hJ7;i?&5Y_msi z7m!#q?D> zGF+P9x{+>39wKQe>~cP zLpM8Xj(7xWu3yd)ic}q7=da(Z`|b=kh1_kDFQEHm%>2T8^z1#Sh#Tf+~1tXIP%rdaAuDcNVwNU?o9^SZ6CW zb_E1A=O1qV_Lh{5!A)0CINzv{KTB@rAuDO!8FPUNPDa*k<(=kor`C3o^yZT5XI$!} zdEeApmcu3EM$eMYqnXia_1Fv zE59#_k|h^|;BARzkU*E6|3=sO&4hYL8_RUNpZFzO1E9LW`E=Lqdg)Otd`KpQNhUJ7 zOzy8Zyl1SgW;naLxwyXqF{0XP*m9n_OkFVE!?8^hX!g=r+H5l!cu=M4|D%}rchK1XiLEG|`meA5 zf)>0evA9=sGmn}UT|q(JAbFlj96LFjMoA4?O1*quQN<#;sN6WMDqi|3{b+K@L~2S9 z*rd|%nJ-1^Zt29fqDYmwyu>Rtr3OozqzX&toUCC~Hgs+!MVAM(pwektWOj~b)TCEb z1DtF16{$oOZ3k>PsaTeAHz}%B(5lo-FD$(!Tf|mWEI~YKq>XBv3vrcaTeK9>D`IL| zOucrEncJ3$Dv;(cYn-DzsY7xLZ)tW-d>W<4t4J`88J=N)*># z!jHgyn5P^BXJw!MwNYKIDy_;;9kx~~#aeh{N#vG_(hAJa(A0Dxp!FtsrUlwheReCF z%ue#wqing96=j%fCq8Q^(2&$+w*PQlplf=5^Z@fgo_3JRO3UB4u%>hI08`3uu z<4Jg8kqZ|&bO0I-(124;CzSEGr6(!f^VKJeC0S1>Ew~#GwuFh9#uP}LI!UZX>Ua!u z4e+(+Qy==s$kDrjg|7A6dPzp(pM6|up}QW@NX?OyE`><&=HOo|AzfMSTH(UJi5z2-y1d)* zTgyVhftGexBW-DMX|~x}Yrk8!wB(f<;UP5kMi$@WGz zxcT%;f~B;FWi%U};KlQU*IXmP5Q(=DBWP=L#c;oZwmwpzd7bE=LFniPIE-eSCSsKD zV71m0_#(6rPP09m_a#K=z1mI=QaYx*J`cArz1MoI*q>vg(F>1x+pke@u}zA(a1sf$gV2>N@@{S6Z(b<(|WGhgsfG zildNUL#r~2EHWq?WxCp^P^{BeW;>_qYCkSrW>__QPHm5T9VN(CW)LW+KP0ElK%OkW z7Qpeyog=Ih^c`%CxHgZR7%r_Q5NcevVog|*2~*Bwu60zQrf059RN3-EBi*4a=k;GZ z8)S^9vcz%(GI1D36S9Sp9ZjdBgzQ^D-3i~VgpBS!g)D@{ero?k^Tl~>ZgO1x5f10gKiarsoN0rr5IVO&~G&R5(k{!Mivt>>~?4!PHRBYaRU;KyL z9tIZ^F`pbC(jMXoW9$S0VkaHB(-^A>O(!WDCVyIuJDDAOXEd8H|I^avw;FpIdQ_NL z-8tzwy6ir0FgcBN*5DgVASLwR$*v<{OF6BYHw+fMI~FG0+z<;B-e3a!KvmWOyo>?k zoNd4iZ+KlHXV$Cj+|n?VUEKoJT>5pcoiB-#x1q<*Skkl*vd#r`C_YR`>77&pI2#fz zURdD3ZMu?|io@;g!z~$paLyS~C^Rl^-kN!9%=lV0jGh{SK|3g#86jiVn?$?D{v6j* zN1`=EFdL1#rn^0Y;7Ad1PT;`V56U~-?-^V4!dvDuI(>(VaU-W5AYjPV)35kNHgU_= zJ;bI}vAQ?Z;NfN&ZnKcgPF^!AqsiGVrWyKX31J`O3IT8ay1!~Yy8GZ<53)r(3oz31HC$Z5Qac*J0 zT-wB-U)F9=*_%aVi1{(|D1ZvSkiUz+#j2jY@d&lyV4HFZa^%5JEEo*^cnjudMK=iY z1Sl{Ob#{zBf6EBj{<3XrOlE(j{ePfWQXny=zDowP|Y;vz_D+J+aBkhB^h z#i0tObu}@ihZC6Cpl&(A6nkZ45I+@AwaVV}Gi!XL#E-l~8>35&^w&Fp!%RrZUFhf4 zR)SuOj&31c4`aPd1a&0J-aF9K9O=kM53CZd(hP$mcKPU1bBB^B=ZXww_x}{xPbKe` z)=lv77m`_Z9%c=r;HclIJtMsySu5~fMx(0A7vV)(GLluD##5W-40H%F3b4i*?0i2= z`coT6c9D>A1a$-T+W-y5t8A0M)ah^YCT8|3< z@yyA>p2KFyx-p=PExkA>;EZ-ww>FjaSNoRSLMl!!-InwSL^-T066TYV+BTd&xof;F z;f3rt3~6T$$~Cb{kd{F2Q(!?@6vG`s1o%cVsY~j(;{dn-FJIXXd-@_u8Y2)+ofm5D z)vz20|KpXK%`MKyGc4{MGI=kfbjWo!{HEU9Cno)~_vLcPpWg5$(Yhd;5X~b%{uG*h zs~7bk+59z@;l<|guWM4jMW&D(?U&eppRQTa%KV_i0ReGj{oh?`|F1W(xredC|63JT zchyr?S^k&B!;&`ky_^#yKYxlu-WN(p9aM|-8;porWf2`{1WGa{otXv&P!*xA?8?Yx zbv|e>B_u^QzA{*I{wBIux@vb+S5!!KJ6?M}FjGGD-g4(|v0%lB}WB>+R zwVmox1Uid4LPe-)S=hNgbQI}HzH72%3@L$#-W7$Jwe`$N;l^UmBr0Ti{0^Hr^DM7{ z*QwdB2X$}yZnlkpTW&ID{diRD5c6SA-4C6WxU=_0!suX?l9)|ih z^{h2>CgH#@quG4c3A+wB-^4B+-baeI9&I2GpOYH5lv7KHifFE&-;X#Mv?^?u!SwjZF?LLghtPEn?nZD5RzTwFfRSmDl*<)~n$y8>G zlh0ci3$(KAC}o7`ewZF<9VK7`$pJ(bX;aEDPtTcB6boQ)ar>xe&#A%Nl~+uT2CFi& zK#>5QT~tv}r?NK+6Tn>-xvQn|D{4X+Hymj`c{s2nq#XK;T%IT+yJ%^y9K!NKIOsFn z%u3{L{ExP^iZvw`^ia6zp9&POM#6S#H2uf!A{F>L0A)M?Nh|LKYHh1qBKyw!W8?fG{8y>aUHX)5)5k%4DdJ{m6P-P9H06&N{|=Y7}jJ zeXiGuOgpb1H2ltv8d?W2j9)&-m@Gn1b@D2)TucJvE&S)5IrsQV<#5Zv`%m9nV7=DQ zb18FM!YXJr)J9yfq+B@ptD4!{J#2)ni90!QDzcNs2m2>*QHT;4yxrg?lnKH@Dul~Q zyiw}(NOe%7mLO2|UC4#{{8?*rAEw6c?d?R|3(3dZx%eviYyd4W6PQljB*T>k(*<#F z&|iA7=9BAsMj}kMwZgKtP%G&#^OF5>cKL~RHvU(m$zZ>Nk`PoQbx+(Ti4h{}&Dbis zq>0yTZ>zmoL!jkk=k9KWZhoIJ3224|l$%U6zRD`0# z(k#n`p3)^a`1~%oyjI6xO(hjn3f^bf>-~g9!v&Q3sRUNT(y5p z)RE^HDTfI(5UVO%L`Bh^n(U1kdPqVzWVti{Avt18%9C#js%Xg7sx2>1!fV%m&Jq{i z3NTY|^r36`RbTL()dq)~R>2ML=L@P@Hx`o<>?56{&$W&phThdckzqI;;`sKZUau9m zZXDMfVKos;+M$`rg;5ASS@BIz)cx_Y=j_WgeJTW({S#fDbO5MkhQ}W^;nBWt!)%ORc3Kvy#%cYfd|p>6nf(5oT>Oq@@_j7(I#Nw$*Xg->D9Pfc_$dOJoe zV5L;qJwZD+9RqtFfMeS2vbx0*S&EU;Ux2x6akD3{2I;4Gum~=M`NX8K!Mq5~oY!(Y z?~upNg%n}Q0`aj{`YKKS3ix3exikz8>)y##PYt_=MhzZnSU{hT01ZxqBvFV^{rF^M zg?hyt5{kilQN+0EX)jc?>$*%!vW;2UoS4Q^%?sN3$Upq)LLB|%@otOAlnvQ$blIyjYuCQ|e zGa^TwiWldi!wZ^~&W8f{y7Jk|T6)wh=6^)_B496jGGI|=%(ciXIIR-E4C6M5+^JOqJ(^~Fhih@s z1%tX>jWKaZo4zW@bo&l}fqj>LKQJ^!uonZwJl~lrLKeXooYo&4IIUp54hx2m%?C=@ zSa(^VTU4{!pj%|KTcBHXvk3k!P>o8t-&g++U+?@}N&K$uW|E1sVsm2Kb~3ST+qP}n zwr$(CZF_REYuBmw?0vrVR(1aY>xb@j_w!tz>n5D#2EIZxP2ua9)6Ye*vUcCh^?D5S zE4gjV$YwevcVEx#nbiS&0%kBDVZNqvP0oIFkR6eL%-F~cXV9pl5C0P+v(C%~?Z`qzP9@{ma6Ol)p zCNW*HZqOG+S+a-)N1~Z;<1Ar}I}=HfwGpkqrEP49aBA7mA4#5=PpQu*#tIBek1W6d zNK|jHaUcbSsg!(S{J3lGSUKa%vKYmfukl9tE{D6IeY?n*U|#{*@T-zx69r2afKMV9 z&&3s~8_dV-+czGs-C{Vv`(GAbmQ$qn5`Ht+5vd%^Lgq&mE(6^jPc|T%_A|x+o)TK3 zP^q^wiOvB_yiHx|ZlV z0||ieeO`?P5S@y69fT$4k?b@sH$N#DBi`{pc`j%gH2fPhtafQG?2b=GYw7sD2|pF@ z%B@+aM-3c6PGVzT&-${x$mM2QEmUi$lNr6_di&7drEzs@sqv$zy@q?- zW=FK+NV6OVv`ocetj~Xv2gvOLnAq2#hU8Z(je%=kiNwMyu7$baZ7K#hPvSz9`4w%@ zyMO2-*mZEwqiG`pD^}sP*1<{8qGup#AQ%&ul(?bQpey75l}!!N=dHgRM#Pb1o_niy z$7UM^IR>gtYP(<*!H6a#Wp~kNn&>YV9li$3a?w-EPmxptmdyg?^mwTanRyCeuiN_E z+>PkA-4Z;&w%{Io5s2EqGTIv%nU#_XM|73U&6HU`{lao_TXSAA2%aaVTPm-v)L1-``(r z$&3>+tLoszOOvPIyrErVkn}T93fMz?BUErwanIK=8 ziOJ`<4lKYGrXEK04~S@Aj2OBvB1|80C?NlH_Es0CvO?8>EtIuz95r z#8adZKzUbFTPu>Tda%rLN6E55y;%-tg8=v~r~kKtj4M3cFHCpzm|7Z8#0YXg*fb6% zVio5d*`$sQ-hqR)D29I30h{*Nm$%>6sZuL=0SYSkZ);)x5XUa&;)PjgdP9Qhwo@B# z6NfoCnO(71qpp4?odLwchiwJPv9jh}xojNviPck$x#0q;ijv#X z-|=g49<;-zCc6il=kg;$Cf9>ZJY$Iqm5rUsze(EbHL>P+C(@48S?1D`NEFnylPlU4 zpSRptTY6$!!n%ki(mEn>#_8v>j!?l^`Y9C{=h0tSBp1=QkVxF?xu&bo(~s@|ZJ=vh zZmfg}C6QB?M(@!!qy10T=GHwmf=UswLkAd@(Ts5+4Ym-|!>*YFG>+*v+B zRehn?UeW5HH77~Fxv{?GiEJ@^>`=g8m$2(sY-2Sig1f?(+zXW7#wr`7(EUzacLvxd z?zjZ4iyufkdt>z}RCa}fu_Z6$I|pME%BqGYVA@ij!8-e8(@VEmHWgfzN|Io~e`ya~ z6ql`eq?maZ{OLZb>ST>G5xdSk2oEoKz7ANe^E`s_%Pkm}r+S6dNc z6`a!51?RyJuALLay5zI-*Bz1Kjq^^hXE?Kf{)DZfXX7O2 zAODgje1tOmM?6DiH9Vi(PgBH(BUi_>Jm7FO z(BW3*>W{#oLd2-6c34EQ#IT_cPa{YX2Hs84t6h7L_}C0Msy`vsZw#?3r{f8sdpW3h z7_2dq*G&QWkxl6Df{w6p_J`QQ)(}g-428^vIi<@Q)yo>S%NwRNd=d(c%emxLVD6Fb zBBnE1s`(=2N4F+m`*pf%%7h8_p3_oLPGGnzmW z!9)S$LaCqYm=bl4h_O$;ZDn{3Ma4b5yQ{gorw)UA-M&f^OK{q6b^Na$<%03gb)m7L zgXKz`PRr%nBdw=_yBzqaxifz~_=#A(i05Sr^e)c=CNCXM4{g;SluQqYb;EP!;IMABJ?^@a*m`hG}$8J`HL3p96>7%d(9yC--rmq zmH-1CamJ4dJ*}*a{1t5d)w?$awVRS1I^0hJBdk%N8oXJ*HM>noyLp9KMOQRV&_?V- zaWQ|QRl?k8Jxo4$!5-Clam=#J&XEa*BUq~xyTFVkycAf$wE9XKq^<6awud4y`d^_z z(z@|$n1wfk|Hx=L6g5B<7Ld_LJ|&srn4*Sq))3VE#NRwlyk^+3Oh_yqACCXQ zNmyHa*84&*h@MWRO6+n6=|U071x#LMS(`SxUp1a_+KB(fH$%F8ic_fNdj+gmrOpp) z6W>ssJR`SU(!#;1Pc^FtSgKD579pXw7J8~^! z6W?!2JO@fIz&iSWO+Tcncxf-lVnnsl?0y4Wgrdl1+s04ShKE|h80(wvlkCaO53zTG z&!*VOTjF9qjjU4juBR-A=eVXQjsoU8MU<%-e>&8e`qa9>N61hMJmVc=9q{bI*)`}r z;w@q=@H_)Ft5OH7=18Kc+;R<>nr2+2&8%x+UMZPG1MJgNS6C*Ul9^iYFm96?^Xl8W z*mil96YvVv9O-)wu=Lm@m_n|)r#G7jcX?@!+8LkT@1{O>j;6e;QddUbZ)Z*-1m=5s z-vt6|77zM|zpBjjHZOgvr?gRQ>qdfw)j@VMvW*c3oJ}?)T_cR``YaQ zxOu!=D&_;X_2`vT=}uwJTZF5@5=Xf1T&>q+z$artk=dgO zMFF@e3-@22Ym}i$ ze%g8w9q}@?f=flZ@XhuhrF%S#3;xgGHG8DGENRpPF&L))wuF-%m@aqLh7NH4pz%7HTG~qyp9Wx9OG7wX%Yl25!|1J$&$_Bo z^Fbh$lRuw8XIfYjetqizJ?)7husfEt zJ2UORNJ@UTZ($zs~IMIAjBuc(GIjmm->Tb?gpz#}0| zNscYfSER^0o^`RarIE#EF@y^l__dr_t4`Zp?)|P)dLpi=9i-*A4#dE;k?$Zszd={3HNDDgaR( zW?*k-Oc2Fi!=?0WlAv^QDEjpj!-`I1#uavK8c`!0%)d@52122{gnaU6?<%?E} zi|hA_4N@osGtz@X7Ux_wr-m8JfoV&{Kki)7=cyTqrikfZ^Np&1ty-i}E-~?(TcjPM zUbKA|skyGp&P0`mn$5y02gz_y=uk>q2wT>vm5AOU+YIVzmAF`3rEiH*B1TO0f3-i& zk$fpXt5KRbQDQnmbLCE4pG9PB=Y_jrp0$4jG%DXYt%K@)2*~s zqL}<`n>RUz)58eJjHaSdu^=6*fq#n{ZSh7vTIF5vL4}iFoiHBRhY#J3v)H znB!+y(Ze_aXIMcpERCU8OZTxgA%|2Lr55?8RtS_TFtf=7*@bbSq?B=JmgKjJEg3{` z0H!E{aVVm>!#R$2+c@H)0X%G`e&O*o#YTWuv2YvD3?xz(JtNv#?k7m#e~y|qL$7KnLv2<@Q9b*3kD zo}XBlWJuc-8$TF-pkCojU9p-gc9U~3F(hPRet%h8GlqYi{H@!La&W5p`;s$~vG&g? zi*@C$xWcx2tn#z@l>E??yQi(IkT5aX;RetIE4cWEp117qsu?P{B%E46GtAZWD`JtD zO-?JC!UT-PZD!|?Nx!qZy&E!q zT!e`HfkWe=pHGJeeR&X&WZf!y$dVVy*;ZC>*&jD{F*J68c#Fn#UZUBe+rsg*Bv$;@ zR))jnV^Ft6D$3v(Z^ziqseh|@y_@IUSEf#<+N7VlKH%H~SForpod##y?g_uJD41G? zD-z`X8+xfgwGwwg?A(q@NyfgCJHTXV=N9gXibrr?v~uKA)RzBcqJ?ng>6&Te3h?BHB(*@PKXc=WLTG0+5NwQX#-L0uyFgZ zw9B0CdIf|a8rWTR19RXqoS&{kb8t3n?;FDIurzu;30#PxC>ARBqo~&>!RkHl-D?4B zA#1cpKZdtL5lOh$c_~8Gw@u(<_1+tb1fUiEFKh$38dZ5!Cg<1&fJ$@k7XF#urL8TD zKsq6~wkXXz+kNcW=*W-t;*cX)x72`4gd;fbXI*lDT|hTQ&vC?Szd-H%q00qWu?GnG zikP+q-y4`0Ryzi5c16!8RSVMO&nfD1bIO13?O)%+p^4^(__V@D#c3eF^8U|lQ~bhG zX50^TH~e#x{0I6@?57Vv%-YyS*51b1%<%tRIQ<_;P}=#wI6>GSNbqqnK6cP?rnAvg z1WXH%^Ivq}SLR@+Ej_~zMM&=pLUPQbc)O%iz7R&z?ciC zO?dv<4DXi7O|lx+vD0IS=|O6Sb|sM(VO!4Y&|T?G;+mVdIgf%?teXY9m`UXRRouQV z*B-8GBv!oGk+1!|0R7iIGM-5A{GZXn*a0C2SOFU@=i%KP1j&H`f+sdyM2+a+2kGHc z!o4d~xHDJoK^+9ZH9HFKoA3C&{vMPA;3` zOot)z`%7Sx+KcRTkvbF6X*WMLac znssxts+Ab!*2?mgah78adWnMsO;f!lEWq$eYT5|Xe7=o_Gp?~d`NEKBn#jgr+bQ0P zvg((dGDpjErx9jx@_oCLZsNv*Lo3p;j9U|94Lvl@wf-7-dSsS!XxXQQNq9uJbX}qCv!jW(J0lP%6&RGxn2Sg+p`4 z;E{*Sb`nfKs?L6R1qDWRL%f?0mwR~b)sgnWSqbM3A+p1b7yt|>io7!!tgpHbdtC=g^qfmx<2w4?DF@GbxD#!%4YW@3M5KP&ED@95&JjX z9Il(9QuQoavEz!p)BqVipJWHe>ZO&n8zPSe=k(|f#y87;?ekDF z(iGHW(Ea{iM9<+~{m#DLi@LwsGsQ4)3aS7{-8?_m11^w?TQ!gje%hP?2QUV7Iy!$Z z4j!9b=+&Bo2(a!z5U}pZ8uV8R*wfc^znTLqu8qEUx?3siSsX;jJ)rgz% z0}rrm61(mgyi?b{Ubs6#9A1`Nq)XOYh0f81q_}*)oIPO>-josATL~Omj8_zIt6kRk z8U0Sn-ImuZF6}!wF9>S%SMGng2Qgs(0=>ZOUmN^-c594S$#GmW{sn(gQMCyzW7q;d zalUi?9j=#&QnZJ70h+-+W~t7hoKi_C^EG>|11;f*KVEm!QcL))8CnP4aTh<+oU3Ta z(&{|Bd*ZLfWc1?9988-cndD)A@a3kwRFh&*U?e_qe8Y9c=Qa#n?6W140W?h|3 z_)bfnAI2l4tgML`{Bhi45Uwyl(;Jwx&ZUkh zhIM&X_Sw@YL%TBa?7O8c(r8UtGds|p7fSK!8ud|}|3py~a(bNP^3^NYs(H{;^SdmA zO~UC}qph{P-LLUog<_t75#Qgddde8_xc7z`|0BMWSiORFgtp0TvJd>=tI6GCA}oRu zU?g|wRC!HlQXX(zhwK_tLcs`|jvozA$-PGe%cEQf#bQA) zV*)+k#MZgF1yABmgfEIHyI2IVPGHC*0nesxJW`E`89W#P9U4JyVF95Z=E%9+MA@<8 z!2@^AbhgygDg@HB3+&oKOXotLTL;8N+ygHZ z>o-QD=3<5R5X=$k&Ia;Sy=4aa{M4unAcUqTnpfj$ppF@R2#e|bjJ4oSD60`;Ob}Os zjcYJ4df_kiy)c6U0jV+{?A=~kU-*}13+BNhv$|kx7QxO2=YI%{`F^%=dZ5u5xcznX zUhqpi%Epo>-G3Dt%HRyz%XrHbiT)Oeh3z5`fi0QhKUC4x0Wr?~d`(MsO7ESQd2&V( zWl39Q@rSR6O{uAlq(u>36ENiD!`5qV{WQ5rVL~^$hn8Odsg7B24^`!n!Up}4LKgZ3 z)?Npur>=BAqMb?br&?I#dA@@VaZo`u24I+nDYNToULDWQ)8C3Unis~e=?iVfj0Cq& zoe52^9(8k5^=L2~V&a5QMRAB$G;^fc4VhwwPqWS8-@VM8nx_Y6T+a;_SgVHlph;bD zz+~*`No5N5qT77D(0>QHt%@d6esMlE3olI-i@H@pOhh=JPnO2`x;_wt5|>kwUt^$r z!M@ISIYU~F)#m)m-K}_vOD0?mS|4pbKa1+I6v^4HCR3?IYgDu@h>IxHGB(A6`+c?s zIh$rb?fEWoPQB>%4|b4NQNLJq;mN>Wc#CtK{P!_|{>q$5U^8dv>Lz{Veie_rOEapU z{Oubb`PBzs5ZP!rFi9FiDa_@tn18`0o>oMVlvkjOUrke8u1_0Os_SF(d@ajnwo=_Af^y0$`T(|Qb`m&w5$oU?2c1={NQ*W^{t6g`FDchj@ zYxuoKpMfL|Pd>ib$1V#3; z{0sTe0+{~I9TT|9{0j*IJLC&lc47ZD*?nWd=mKm`i5!XtC(d)tV{XJQ<@45IrhLa1D-W7 z0mY+~>79;>dF+0y=P`YfTC8b`YCczpdj$Rrske-8w5Y-yB zoakCS%)|JXRs3GsAv;V|eQ?+hUYkbx&#d1f*nqUon_zL35#pv|Y;wPZ76@m4Dq}~DAd0%-sXXDk+ zgA;ZamMf;?7WjHtLeonae%M)Rpi3S7#Y}Fq#?g-QLWVKA$i7~2K%hRSz+d2TM>Hx_ zfJPT(Js;T~bjhCFB7OQV2QQ#S9v^(QqFD}vUnD~sWf(yp2Ipp%y>Pl~vO#kiNtisI zlIzQKxYV0TuuMdufU>Q?-$#Xt$xxBpQHa?^HAGDImma8Qpea-aH?AaeTGQfN7bq4Z+?aAJEc< zfmqSyxgO?b*sRbiiTT{~j2691HTBqxAPqbgQ}fgb z-eTY)9$3J99$kZT{Dhwwoz?~jawO}jqJA(%nz}0M4TlFOO>AVWvoNvLn3`H^Y%j0Q zcjh%+eGVTxAbUz>2yO^4$H_KU6f#At$A zLK*DMp><-b_rpxc%Vm8GsoE}_lC@ZsF=($e zEI?8P^$|8WG7QTL`PjdMiK~Cx8J*g0ZK7^Ci&ovJgz(C?l|?ZMQqQtd=7mI6ltkug zV^9g4Bc8X7+$7jAh@rR}tP;{8B3~VO$l5Xy<-qZD8(T%Cq`+57byFoMK3iu9DdY+k zX||`;7vpKNEWas^Y(+5wR*96k6{B_v2|5_nH(zUAgOcEP9Z<7#H(vj{ApwW9H5wZj zPfst>fJAxaD)8B%okx^`Z_rjQ>+sk%-|F2}DB;bvydbz!q)_asKOBuC@x|$E9GSlr zR_W4uYRH9&xF<`C=FQ1JV0y?>QIG+J)Rk8|G*4cOB$X#rzt+w)l{n*w<4}>%nTLCg zwjQRWT*|0VjA*tX?oNuNf}U3!ElWTtV-xi>G_WkLalVmR8I2Z3csj@hVsgNRaSq6Y z%%{Y7__%lFYSh}NIN@ceMV^2WLRh%X^npS9jqigRYsE@)FY&KHQ*{-aoffE$E2i{_ zhf>1~Yx3&!W;>$*C+G0}Fmp<^kL*yCD{c?Yb)d6RM%|4Apn?|`jW(VcDXLMltlm6W+_dYJ( z_)kO1C`vqw^*^~cjddHYsohSAcMX;(2eaU$xM`EZk@eUch{A#!v?!vp?Lpk-*@cYF zY)JjRxT+-gtPLk9D;Pn$X15l)098V1SRAVp=XYm24!$TYx!?w##8h#t0S$9f$3o~q62ra9)}N;uX2YSV$K$+gH}jdqfXzwQ?HLLv?!jAEb7@A2`|p5Qr`l9rB^S! z60{rs%CaZe>ItT44ZU9NZ4!nDb|jzD5-e|WOu_mUjnnGei+XE_qp}|?vRIB~o-bD`eO7Yu>V-n7tjRwNJxET(mNxR48 zPuANuAA18y>WK?I;PaaQP$`0uqGF0Gx>C)UpAQz=Q>mCG@cfr)HL_+~le@K*x32&i zZ21Oou?c#Fe{iLRIrQiIpX1bF{zMf{&Hy^#V){TN1>1=hhN9#&TvGQwfd)DpE+uNl zFzqthUF%*d4&R?<)k@`T|B_9oFrAl^h7eg7sBfh9HITn=&|tAP^@cGrVI*m? zYPG9W#`u?mP5=D)UBBLeBF)#zCG{%QGC2bip7#!aQ9Ye3^fFnFql9C??o^)ps!hVM zYkt#7+x^ZwMT7=67$it<s3YoO(C)}Fm<^uik zS=H%fZJ@N%SKb-1#@suJX$ZD671;&eVnF(RJy6h!=Wz=pQX6q|2mUth9ZGu^a>tG< z2SuI~BdSD>tI%-Q%JEC4l!B`aRj-8uN2bjAQVwk&qY2VO31+~Y^SO+YF28!%!5lnW z#bqDViPpz&GbUxVUPrm(E<9cb*yh0LiDz3DZ&&IGVOu_DH})OQ2l4L~_Mh~bFtPLE zR844AEDiRJsSKg#VmXsG1qtERGHGLGYkqu|3M^GOr^jJsbD4T;s6uguq~W#GssXk4 z<+wD*3Qd#c6UFq&X1n8HQLpiLZ4o%EbAx3woQgIfuh1*5C;e=W!^ajbNBAA1&4oH` zzBLD%B|A$HRe@9!@|9`SgQZds+e!=iI zUfWVL2G5H?SINVq)$Plbo1-%CqSLpn`_+k9ad8b%FhP@s14B|~CBKo*bS$kN+QtNF zHD6pD^=Ex}m9Y3(a)GnSh4)3U=SlGLVH)?3sLyi?@4pA$?F+Y^lkaKUw*m(n5YB4M`0cQ3PBt|w; z--(wi{{Uhq*?>g7m;3;EC)Kug+@2B!nBi+VjLyRzGoCiuQVl1pqNm{Vj_jQjV8T`% z)u#M4IoyUawJy)@VEy^HnOiCj5Ea+lWFfo>o6?-F_vV&^L`|;#py|`n-pu6{Z{j1^IwG zpwE_V%~9~Vc>y8P7k&}u#%0Yfmpa|1B+I!isnJL%kg8_HsMNB>U?oCUUY^CS2%o7K z6V|mcH@adr7z|uh$7<}jK|)!zPYt%9w<;yAg_5YmtRyoCO}%WO#*RO9sDs4XL46== zy^uf$ivd~8b(Kpojm5lgB|-~IQ8A2_y_&|^w~uH>C2Uo9#oQp>nH+a5w(9Ryx!sP- zh~RRIvR)P-A}?O9drXFFe7J5OlGy3T|C4C-AhOh-YipIz~S*`Rh6-3jl^~Lg?#r@@`9z_adCh{#Ge9z_Cuy>xx#&J(!R4tZb@0)f;Qc%$cjh%$bc75+BNq=A)AV%&nWWL zKs=7?!D~pu2}Zt=ouL zr72RIXAv9)XVl~qwq!}py7St4@zir`@h*u*&T~O_Dl$y`kU42rkWj@(`Zybuzy~gC ze5Vxqjp{D*Zko`{IYaSv9)sM?@mEY)$;H`_)_qP#8kqS>a<)9k?i$ZAVrJ4wNzV=Q zgjYnifcZ=CAn~}rjS*jkqmr!7P8%T(!kP9~Ed@F!UaVoP$$3OO(i)?Gw8OtE(ykGa z6s8_gy{jDOL^A!WLK2)CRrucyjWfluq(2v#8XWRT1txhw#Mc7x7>2J0x`mifM6YpS8IB<7v69-oR6}A}2v_Z(wzvYSLb+ALEyobx zC(F(B<8;K$&Jw)M_QNbcavvOE@-7IVcYjs89Feb9(I+WDwP|2}XpEXTOIXBltjj>hvrY zwBg4Q$@5n_VwBM{apP4q0{XQ^<1!MG*Y-MpCpvzyWn>Lisp<;Z?aSkPb|N>(B&o(0 zst?uihAt$wN*K;RL&tO6|C~!|zgPvM=_SKra%`D39iZkb5S;;04mtE&Yiy8KAG4VO z!3A*?w;BKppId=(tt@WkfQY@{io*#}8BfaD7SB}pVD{GlO=e6x)f40H1k?cPHNeB-R_gT)+w6D}3 zPQ+df1$>;{60h~0KUR$l1KI`)WG7l4j6Q;2i6L_crpT|42}u_^AGT8p#*}{To;>@n z*7}3&I{DJB;!p5A+INF~=7^OTTOxZ#n5J4J3}#a}h*z-&D`g0w{I#Azy_}q`r$`ps zda(r^a%TtX)f(`VJbzybPhN+JvQyjIz<5k-dd>Q8H>4sx8y9{sUbN}i%u?o_Wbq-G zJg|ExBU@xSTGE!fz-e-;c}UT)5cbafp?qlw#nDU?@&Iy(;{&wU!jo^KN4W4xIqygb zJl1c%AkKL$vI&HJ%te8_x-;d}6eVsS99qyoF8E2G{ChfPT#>+=C-+=Tq-r}|E1U_K z)bv$GYCJ!V$uUp!I595>A~?1JJ*)k5d93P&s`Ql2Afprf)GZ5&f%MGrx5AB6?M^n- zp7|@B6xk6jkEL?lU9XF_v^#>rWIHB)T~-!nP)ZTA_h>yAvlN;Nb5P&Jt9o)FreA%` z)M=JGGD9u8Ustc0kJOL^W!`^XnCi@c5z72VSFGxHkuprL#@_Y>F1>Fe#N@T0U|J2F zU+yr4@fHjp9J@s@{4*o!x9Ji7Pn&2d(wC7}De}ie|G!)x_$R%r{rBJdDlcG55-=W$ zB*`(4WrC%2-~vB2aN+!qI5y` z3)t4L`g`VGWihM^p=H zMkK89S&D5K+=uB{L*mSJE^(p_NoUj4PtoVSP-)Z{=U=q{GnJV#_}k_Eq_L%+`=`%*_KW`U zH@>P>d91jY-mWPOwyz+*COw_rMDxFu7mqGH86b8BNb)$SLSY9$u=8?UZ)2`*Q-cfC zh58N?r-qFtQWY)SqVklQK0&RiKw0_oek9=)dFjpu1)48k^UI}8W^`PBZ)E^^iC0;4 zNxCE@-S!*79sfZ)M^faw13Kk%=S zo}s0YgToIJ@qc_tS&D1&Nc_m$NWdV5zVL>S`M~+XwSivHx#&X4@OZhk<1Hj-Pz3`- z%#3y)l(>QY;CODg;Gb9%3xa$C;fY2?=g(TwIUSEvpPye};J#v)ECql9DP)5vbaN5( zgYg7eb%H=hNeTz?GzEM~0}-=^an_Q-PKFaFs&m!(*)F8IZpXec(&$bDN((VP z3DP=J90k>5l{2C+4Hl~fjip-n3ed{%s|e5H*o3h?5I`R?Gr-DhAvtaSF3<6KC{I|1 zNNW`8f-g4Md2Q`|3}GmL(&%~FXxVt(;-Zz9)%_+>aj1XTGx#%dygiP#D?>4L81 znq+o;;DtD_h(#io;{}76ph}uo^=THj*{oHIrlyJ!v`)B+)ugg=m#3L}|1{|{*GS{T znE8ykJosAP-tKp?R>h9kH#Kk$X=19PzWBhvIx7>?4T`w5vUO^CNpnx1ol>VC>?Y%E zbm)9Cpi)<9!~ul1)_9j#o?{u%*&pn;vdUB&WCg+rm9Px|{n9cw>m@p}xuXs+J&ja~ zQJcymrtM;mdDa_KsF=sas#b4Eh64YF9*S=ZIrLNS6iKBNiRA(1mhq6zgwQ9$O z)S%=xL~hHRLGKz%rBF?tbT{skhV3~(igoRZRq80p%js<4G@ez6P7@4OIuT=D)#?GsEpz3mwLHqhF4SX}2@7HSrUIhNMBW&%-YV@8fKWRh4 zdkf~{l6MK#{X~8$C^2OV!3ByE!IU~Nh26EvG(SZK>!MDpgLa&=)`AiVK!b=94)_;^ zG{2M=VULYJu11ntz!HN?wM&kArn6r{D>lQ>VizRQ8g4aioqqr^zaU_lhzTu7iwo5K z3?HL<&1CQuxvb~AP2)~;7ci(Z3??^{&3Rk6d5EQtl7fqe!5!edFT;J)3pRb2kk8c_aa3G+lpMAui z|LfE9-!F$EWfj{EWmN9mzkY$b68Tgcjh8~r392N-l+u|bZDSNa7`uI?zQmdqI0-%^ ztSYc?eb%4HczMh z4tq=2$F`5p*X<5aGa+d%s6E6K`UyRLE^q=c0C_nRVh^meGUYH15ndo2z);y17eb;7 zYPfs~3}d+Vh-@K!&qkaJTjI7!l#9y>-3r7#i z*TW7EsY|C9#8tLe&^5J>yB`(TXv)BH@9xh(s$JSw3wWP{yWcUSZd^mZum`&p#g{ph z#8!;51f6QAh!xdVLJGqI&H^X#W9Q~E)Ymq1mPyn}qY5!qjKZE9oz-^)8)+ZsuxkOWGf>N=1Rn6Vp0>gKc!I`Zm#M24rC&3qBvXjtBf1NT!!^fPLfBe zVk#&kSszKQ?u>g8FQobt67IOXTf2^x#o=>y<-F0a6Et1pUTr}*w(RHOu_kw8wy%~L?7N-Y9f$;O|G z=o3ul&DZRA$d<$?#RiSd%QA8Vb>C+Y-P9iy;=@)7Gek~zM+T&`Ryz(sGtU6Yfd}!~ z4$X@}ovPCSJE<{rko8=bXiOL^-lBUClmWD zB$WE#*$8%!G)J}57mezCl9!R8gy=|f(OF!@!dwwvma`LjR^EgMwl>Ba*+_MGE49ae zLX@<_$oJhkdk=&WX!nc|LTsrmg4u;8Rvw|ltBHpnp^Ut7eRP~XHJ1;6#2JiS+9-FJ z+9$Ft4l`wi>ukgp97A?1#aA0N+k<*icB3ywD9n8FHiHyeU0 zn54I_oDVQ-Z*ZN{2RQ`W{XMRo)B^pSmFzV8R1Wv-%bgJ^XNBj+n76JngCDQH_1Z1> zdRlG~}^-f|-;af3*+AkSx)-{L1?~OJ0-6fWe+bXK{pBUYnI{csed% zb^1r0$$5=DS6yM)vK$T>ah={Vy^98OtSCaUEuqSPOkwPfQ17ZxV6Ld`3_+m5*^ z0hWv0P^l|jf5S|?o1U`FeMg9*YAg#e;bpRk{#(TTso9s??5na{t|r-?(-vb&Q@Q~6 z^%NXpPR(|175p}(u%dpx5*vgU9`bHVNm=UiTW3_yN`l?xiQ)~GTU$AedR9U4C)v_#Xg8*2& zfHSe2wT4KTx#|IQDySoTn6>do3{W0Jq zm1<~^hqLe`DJ+e(utqY1uqRERP{}hhGc0J5tm+HwmW{itQUyH81INvLM7IcmfB&p! z4uBr|V$&3U3qS5K+yvv6!}gLEzLzL!@d*CTF<|WOMfD6r@6JbhWLCPdv4z^%r|}E{ zzvadqf^!AtofrFpq}?^?^w*I@dzNQvo*iqA&P4trhTzkSH}#lpx5;tP>NIS35vfpS zEKZSx=hILBan2<&FKG^vw&M7wGl?opS`dbDA>X9;W5>5=zp5X?!LiSQM@8G(R&hwo@H6YY@RO8pe*#QntF z|5T!*U}j}&Y4jh#0mTjF1wQ00!3D5+K7=;(8#G0-Ab%Hf0`-dgrrfI1Qwg$$aozMq zBC>bVR}iiXL9N%_c@^FfIN6y(c{6B>xytFuwkwA;#*>qqnjIj?-K1a;^tsunKuranBtV6j3)N#VILta!$%{o-(p;L*g|Al@lkYqE>h zqQh{V=I|fA!Zpc4lh?Kr#pV;}i~ImIjQG0RF-%=$t($dK=iruqn;}98=>@WsMW16( z;Ws^skFaatHgGoDQTWge66wrXKO$ahhCYPKC>BQMnkW+t&UQ1kU_P^-zuLH5ZP{h{ z+p;7S>Dwdsqn~i+toxXNS)Dok>R#WkQRYq5b{J+eOr-|_M_M`2^faEMLe^P z>X;fZvzO>_%{y}r%y9Oe?9vXXADts>$Z)RFazy7o^vJW~CIQDyWt*_K%BVeNN0ODK z{^@BSKTb>BvK=@Eii^|cfEP*w2kvfOcxANc=vnFj*FaqI`Eoh_fx?~Y2-2Ywa_rn4 zGBic@nQJuKVb9ui^VyyML;40sw65HUL?H&)i^CesNXAk+3amAniF36!a=F^q{0YTo zaXv%j_4hT}(a{Uk4Z@RG8eOs&{rC3slv8kl#{dj11I#79VQ6w|jyA$_{RDY$cHSP& zR2)jSWqP#;tYF9M3Ny?X0F1M}tRzW-x>?_yy;~YS4<930A6)2$<*z}5GwZ`>!_DG* z=UVCZ*E&O!;4o$SPo6*M%Y%2#qo2#~p%hXv*g7);=bo8u!2;eAt8aScBpI-lVNW zCW#L9^eh)IR;eQ-Z0d6G|1frr!Id}Lzt6Hf$@JnRgSHy&s8-|gPGo?_;7AWu zJZdb7=imn=Nuosu~*oo|?i?g-+}Jnt#WpTr~wurZfBxA+5Sd7f;*f`j?k>IAxuf3>|Vs4geR@qh}f&Wm;oWU)3 z@;bOK+7lTR83@vkUI>oai+GPt8Uu5SfEhkm+TSs*X>;*B&9lgyO%ch zKdRe~lBl(QJ51@d_!l4Q$SXO;1_4J=eUw@^kaunPxReP9e{(!4ATDr2QT(;HmW?oD zzzC;Vt*mWBx1yD)vvFT3bT_!KUDUh+rxKhfpMNMXZxOU!A z=OA?QkIqHsY|^#9SE)*CjQ^u=}UZ(I9XntX` zuH(oV$_7LRyjaP71nXNl=LcP*B>*8A3 zwQW^-=i!j`1fEOXFBwjz-hjbpe*dDWk>TP0^+!U3l7FbPr|L4(n&vs_76ijy&CcT% z*KcZkYF^@{Zq3kSeG2t*|9x z32j0;`aOu5%8}VSmRW)$wi8xyTt=kbo);vR6MACu>7 zh~j2s5bR=`5+$i~Vk)MQjRgjDnK7_k9B?>qX?9 z5DV;O{L7Ie z0W^7at?_TaEP#M!ul`pyB{uig71`8^?_|^F$5j8mp1F6NeJ#+zz<5ahyL6j|%U26q zGY2Ur4_l9K|GE%|XToG@N}&hUbf5ImWqfVI9t@khEMlmIM;`{ON5|F+HlnOG7u}uh z-6qOEoSsF$PPknja`DbXtp^d@?0JH(z051R}kS%Nsof=Lf%oc!XmI2}g5SkS$?@j8 zAOj5n-@?9=zEJ=RVNWnVvOzw8pQr_*KIA~TuQp>rB-f5Ap&C!1lmqqV34}-~hM7rr>VKdNW<1 zfB|8T7{a1Yq(F%<6bxbU&J>UuU<{Uo#yWLdD5O#y!FY_b}gbA~U6QO*I0$Bi5U`43j;y@;0 z7qB8UZy_KBKm+Vg>bD4x0pLDt7cEfb2?CfHCW7{%_=Et22AIfwp`$F5wN)omN2bfv z%)(4Qm#&V}^j1GA^-ZcK{gt|`U7DpyRb^b-PW>xalSF+pX(MCVtF)b_4Wg>Q)QeI} zs+yzi&FYFiG8oGWXYxHKXOU)~P43RwC; z$rZ9}T>3!WhEf$E7f;C*vm97@E_XndwyS46XQ55 z+k{rR7^hlvq@elg<`}vupgy6y__!G81Zu4%QSh1Y#WTAe=eKCIp3KGIqR=i6_ed932OpufwGxNC8!@E(53@}=*i;?*N_N{{*} z{kU_(y_PMR3bH*<&C{d89SaKC(uuqHqdd1wfy&c!UX<*%sX3ovD>AkqGXq@zy}!}h zyrztbJAyt!rbTeOMCr0L{O56xL|1Sexve>$VW5q#5Y|T z&&GN_@d+I3V$^-(o5fZ7HZj_y5ei208G217$ufq2*=m@Zr@8Z|RixqGro`(a(SFL+Z>!jls6K&qtiRKOPaB8~TV4J$&Zktbmb#<6{BK@kj#hnwx=bz)7wnsX znIh=VRXOjpX1T$ib+^k%G)NlYTr|~8PnMo}dG-wEqAN#qlQ=UCgVJ1j#b(Nd!|!Rx z@IQgmm1p9U4-=L%f|2Z9J~d}KcL@xZ(;XhtoPVy4Q)izYrOA#)EZq(kU0No@h10P$ z!Y}8+h7_Gyv`<-Yk4n*-@|w^mbEM2#HKKhCFF(cm3S^wFuC>zB zc8*EpCQZ|FWfdPW`a}dh8*EHZMR-C}MpQp{j3H-##9C8yQMYmDwF%E<>EQk&b7oS! z@UTpOUs^R4;dp^IQ37LBK9vd9LQ08ENvLg`(R++AfIY3?8m|u&w-*Xz*Hb?gy z7MAsA(-ODg)LvoF-e6(XXF=zCNy9C;2}E1MkA~=hRg2huYK8vt;h9#!E z3^@2y%#(?9xb?p)lRIZmPR0Y|a$lp2Af6@lbIOUoMl8XdrA!TfZD1+AoXuw*M^2xf zeyD{y@FB;x`ARk5QFFIk;6Qh5>suZ7nb*RX=21&J7nUb(CH*%$2yVaY|V-@ zuhdS>v0s?W0AF0{xox>6oish2dX&$#l$x1FgTVByhf3PwLib?7AGX^ z_jcVLGrtYF2F#XnxKZlk=^KJFl13I(^g3}^$*jHVA5qx(-c=Zv#y<(!z};eWzQO3J z#Tt0k7oOa)H}$>$#VD<;Y0L7A+VMp`}Cdj_WZtlvA5EYA8Aue^#CUVCMP}><|>j6J{2)pNMx6Sa zA1?eD?t0My0nVWX9cySM$9hm^w}enfjU<=Quem=VObO#6qFJGHObH)&Oelg;I#cg8 zDSuZ2ew`tR^tu{@xI#S&HfO^N zgJ^2EDQ$Q+pC-6*W*t^~QRd8;&Tp&aTSBBsc&IgkHte||Qq|jhL_WPYs7)W08L&kK zoQ=-msRqyF4zFT(4{cwm3e^$VP(?3G28X)1xZ+B@&Q$dg(euPYTRWl0Yj8$&j*Z%I zUu|7P%`?b@$M;1#-ud~va=&D(%&s(h#g#Fi8m-gl z3g<>H^+(V26F7d}qFRb=T1+O6xutTw0qxE7e`D9DsjXfeIeSjNdwcc_I2`?LT*8d3rx;>}%>8atzwg6#r@xp>PvM#889FjPYR6X^3mqDXu%?QpP&z zlHMpXgbq|j)IspJ>XgN|$*n5=ac}M|^~r zVXs9^Fz;09BpG@K@JGOey>bZB3I+kmfHo14;TE{WXbE3+=?KR_m5l{JHlR<$SU3#3 zAX(l3sI)N{NCy-{R6(F&uSHij_mSq!2I`qn47mfSBTm9KaE(!kr$Ikl=!X;lwum+1 zOL)fEv!*^$Ytx`=5NgC~SR{KdbKV3f0>m1@6CTM?i$**M$^gkmbcDCy?w}Emfa*au z5szWSL$3hr2$V3kh&BN4P^5Svkiv{%Xbiv|p%Qk5SO|}SSO}MB_LK?Ijqn6e4xIon zhj0L#Lz#fjGL-EZa>;FZa>yB-U@;MZa)S#Za z!uCe~1~CK;B*6>B`iOR|b`d_{1Qy~YVt>|wg8K{LmGJ>T$Od5Otv`!Ir_WrN=oOL~ z4r~O9WZ&xnG;|A@1k>;N086?o=pXU-U4Wl0pROy)$_WBabHC`5$_fs=igiFT2yq1m zVa~Eo*9ZGTA8^chgrWv#oCR_8%zx1cXoMOZtR=e(K9=tLqu5b=)=r zY^-dT{R5+)aP$uhenR>`F!BlLEA7|yR*o0f`2WDyPvHLttUm$z6Pzp^FP!M?4ZL}p z+C9BFKB1%W6Bz7sA2)S3yL<9K|3=^wF3cS-tnus(M7*2ZJ>76*(m+lLHbA!o4~(6m zWH(?R;Tf6XU@|-~fbfj2w~(SQ48_IL9vDivuKk26(~coLoqQFZ=u+C?LM7vcDLk1> z540eRh9xS7&mNNfZ6bE4} zF2mOqEN)x~Ci`|5t9JG6fxXkeyz+E9eN})ph5_9muKMg&P}Ubar#Cw&DXb7KPLr zLJKcPst_Z@!@K4mg6WPY{aBX=G;tx9Od%B``LoQN2xsPDBePD5S*Nxr4S=k&L%?}B znE`)ZbnL7S1R$+0q|A^xXnLd``ySIIU>8#MTEJ+>>@HB?fJJ5^WWaNn|>O^>}b>)maa^ZNopF za&FZKn1vUhJf1cQGptb;S*1pb*pp+N_?pV%XJ11e7OXRR|isk znFPNcf7tdBYo8&36vxA@C9pt-l_-KF)gd_ITp)8B)Lu;dFEtXLAU7MqUUa)K9f=u` zz72LSv0XTixUCPzGMv5mEwFAL+()1lbq9_q#9Ja3*f)>vBhrc~4C^_#F%SR5+KMg= zUl)=nQ3Fh!$A98%#TG`W3-v6%2Ys`F@CSB+$~3;1@CEGISHSnX+U*%wqt<#$4|ppR z`QOAvlH^H0E!ajB=IMc2mf(N#+OF++02*ffC9S{ETa(#YqebM6oboEnduEugor$|? zoAOvwW$@KB_O#$n<#VkK>BVBr@?W0Sj@9KMjn~JfJ3&3Tz3#0zVLf=+Hzo?ecDTyy zwL1|xog|F)J5gMpa$BSeAiQ?f;kqvAUU``>=O?~zLv^P1pn7}Zn8o+tdb?)sfqBy* zd-OD}7zOuqGr012V_jd@kBVL66JFMj2yJ=t4jUy(Y$Ne9Uhacjpsw+*Ln#1SojRS+ zkH{#a0RX>)e&7NxyFY3IyvpZUCu3@~HugSbD@ZCxAQPE5#s<`Ib$C)F#OX)97}D8) z0>%57b|TP(-3EPPa-`0{WAk!ZqqhbGF;AKQN-JUsLK`x})?K-SdrXPA8}0T>w3 ze~H-mAHA1DAARLj8;gXknW+d zHTBlMoDP8!Mu)KwV0(&UA%%3Hf!-X3CJ_6SKUG%e%X^zhETtDosV+?+QPv8i)Ot?V zJo0I%;1a;U-wP3GNc{Hx;@4pEcsEV+_k9lr%!S7vH$=)s5SB(<6>?0$j7(5sUk`mQ z*{5KbN3K_NUkaTi*(ZCLfl@hzS8AU#+8GL{2-}Zjt*~bZOApjSZ%FnLLfj3$N%09C zenz!3fd%A}Wg+0m?=j)ua|?ChhTT8`iJ%vlj2!bN9Q*Pmt^)G?a2uU2FUHR!s!orU zsq%GV7m!T%D5R=6YEzki#o~quy!gU&`@%$Q`1;~Xmh1Ng^cf`_i>_XOA*^7)OBee( zCwx@2n5KQVP#(xpaaMA%pv+#ATkV9b7*`_CnaVSr;IX0#lcp9bmd!=!Yrm{Xv$DXr*t+L$wYUNS10A;wri zJZ{g&)uuE-2A@ErrbrbZ!)qc>G*=}Db!DCgjR*Os+lw@@_UlGv!A#X=dHIM80jCj% z0p9ZRoJU)apNmVQ8I5!aMeYxvP)_~BF~^W3XWsGe3F`DaWvU7_1CN(!HYC>?zvixm zayE`s<#H`49d{+!)w)E>RRl>T(u}fYG|pZ<-XMtsbliPd>f0{DM^|O`+zHzE^Uf3s z3ZWdchxjPg?DhBRdLnIiM7#Xh!7D^XA;}nh`~55OG$UX1%w&(wd_8c6T!IyKI;{@h zn!25K4}L#cCC_>D5d@#ax9f7_)<&1x1#4i>6 zgtpJ*Ewg(V8LgJg3OlWUP)5Db(KK;HErGmj1H;`QgG$1l4rLW!44p;-B{Ppz<>wW- z)h7CfjZ-YeZprAKR~Rk40jas7J^FO}S#AimmuGkvjfMf01FwM=Kw)*KioJ9jtFmvq zEtNhlJ3w;Vcr8Hk%I4*~XTlS(;cz1kpl>D5SvXru$9)lF;GQ)$5!!X6%4w2tSW{ol zs@AcQ?(ln!;4ER_a8d^G(W`wcj}XtcYqi$E*lKRWCN@CK4k>51J5mtkpshWf$TG(S zHR^x4PamchW z*d({}lIVmS_#n*jtV3o{L;SR*`}LXTsBYliafabDaON@pV13(F+O1cj!9pICsi8~J z2)8pr#c-L(6vGzbM;UUn?nmC3BFPc0MX8;tEAa#BoV*b`hrBUi*mn&zIG$2pj7)xgOaZMEQ2=ymB9D6`wHGihy$62@3$TQ&2eiTZ7Y=)#6O+#H88;0wvZnAk z5_X9ck@1-FgbD~|z-M+RsRseFf#cXk8 z$p1bpQ&nDrk^|1oe#6IO%G|*h z&CY4QO*N;naR@qpB@ci@p*i#0lVa(l}=J7w~eB$>_hV3yI%#AnW*lvI0OD)XV zV~&9(bm7$frUk$)lhqyZ6uGG!Xk}^Xc_Qr_WEzLB(-dRJ3ix77(Gu$n{Ji9!rVBAT z`TKYh(s9f8YY8><09D4G3xvoRWX&c}Fy!#9AeF`?0-rY0>5!`Zs2ybrh_DrjyA{oL zCYFoXzC&;DbnL+L<32O#>Z_#>)VebH9G#^=0D(gv_vS%Jo!BV%rg;yz7{SF7xHb~= zm%R>g#98tcK8K$%aDVWf8dr&A%?PRnrR^G%?Ho({4J6@xDEfjU<|r1S9DYX2I+HDK zb_BOxVJE-s$leqIz0uCl+gT_U{i5zZ97zKfqtUPDY&K;(Vy|TQAFxfrqYsIw7h|}s zgWdQuu; z=`a)kBoKo2EvOcov>LN?84B>Go`l9HTSZWcDJD)#Y7aSH>2VXeO{zvWp5^}!V8N=N zeQDNKtd)BV9B+HnGlXwOd6)yM8eu3SD8(1E6BN~d;>r`#$4`zDAipgo#rq~n?vxY` z+dK|onV+Q_Sqn*do-l4sH_l6#Bt>}+Z7Z4-1_K+wIzP-uCp(SQtO##DE@tkO)Pr_N zjFJ=&KAaYk)+MGbC-&!I5Bp;UBI^0{$_+WB|8|eT%Ruj<5xu33Fs(=9*vp!td+8jg z%-{_Jx|LG)SP89^5QlvF!bw)^fG+uVz2iev9XsH-Zw#Zp#*H@GKyy)Z61A)wy|orl zXm&}q`4h>!i+*Cwv(oITiS)5)4ro#4cxy(dT}4>)m!pw5*&NC_rcEK{{&X6ulw;~7 zUHwr32gJ~xt^|smeD5p{Sx@!DzEoHA88b7?+=RbJx|&FBG7Rca5w`I-Bkd2 zqlu=>Mz$yS+OsBJSlD@xKX1&N+HQ!8HltvB<_ndKIH6@+v}aFr3#c-7{LkIa_0;I; zqyu)PcBOuDN$}YgrgU~86G63;OzPrS>q1v&CtO<CAeCEWE)l%20)fP#H1p3` z!YM-w5{cbCeU-oe5hK6h%7R<}=_`VN0Rv?jQX8~c#f5Za+0SRX(OIr_HXQ%(k z2vA}}4iQDolRAWCTbLYO6vvNlql$)$UJz&K!B7s%^M;G04x9nNJke6%%IBMVv-fb^ z`ic~QVdJvi;l4mx`K0GA<+Enjd1i;7oReeFb)tXmJXx2nFvlZ=-BC7~lB{*3gAMe{ z#(5jX^A`t=3B((q+om6D)nl36N!(g!^^i}*qeZYfgh)(iVLK&;%hCg$R6-?4b!|ks ziy?Zfu)BB925LGYk0S>?w^07wT~0i%wzB#hcFAXo0Mq|v=$|7Ob8z^Nfyb*UDGZ5X z<~dp{j@sD&3bfG*3vq<1AvMO7f)_7d4lRRm-sEgIXosV$+WY=zUknoE1MGX+6Zec* z3>M2x-?!}SPkGV6zVBeXgU0xBhe|fIxU_g{?2R);krZf}33&33b0pl-K*^0oVEqA4 zxBuF2=vlsG<}e0;LWG+qSiZK}N=cc#!aLij;hc>*;z zpP|C~-BvJc_zAl%Q)XUn3QVv>*v1bI26uURJ4ivy!J(yHwVP<%S+LM=CrSaEU1;>F zSndg=hU4`T^Li&WUr2ERcP{SQ;jdRii#jRR1x zckTGN83WCFSh)p)V!Yv;TB-ANKuFJ)z$bX^?-Kh|`-~dDq9F_if7nU2L}OW2Y2Y53 zM{=A`k`)Wh(KS$f4Se9zuC~p0qn(is<4!IvD4~lc*Dh(5O1r=NkNeH7Gbszk=VX0+ z#?|or-zV%JQx)^@kn*v0_i+D@sY}<8bN-Ba`=ExyOW{>m%0Q=0qY~Xu<1HH_r^F1_ z{H26a=SwSVvyXhHnGk;oH^s6KfQoJ=>LmYNf;yL=rC*smFU#TlzQZpP82Aot3RMH; z!ieoktV4coho;b}J?yzf3#85=?BI2B-!j`1zX--vi0BTWHHM$U+8N(i3H~E(kN7R1 z2w;_1Z1y@h&OdLl>RJY}G`)&i7}(8BUI;j%dk-q!ly7?>=*;>C-Moe(mpQX#FDuZLwWa8K4tZOu6){)jy{S zR}%##TpM`HgBW`T)%G~9s)84>-!1}2_^d1S4L@3mr+PgoxH%Yp13HG*H4Bn1tMG``;L7YVnW)`?k4_!9R4QZf^c62uI-rDbk#~&3_%h zXCk!ommWAUlZqwcVeHy$Fz-azDI1F9z2iHP_FL|>XJ*l|p5gG^pJCS@n}CSh>AHO~ zswz=|G5oGLvNFtBRPbzA;ZZ?2E^J?R;v^vAXT3p}2Gd@`6xM;F4-~TjV#1-`V`P60 z!371rZ1YAq&C{g{hblC^f1O@3pov*(D2TN;6lXAbg8KK3fpYw_O4p~IWkG_0asPkW znYNjO=YMXE=^6^3W`_E~?YcjjwE{=!SS$!nMyb4+_9v}KmP)-$R*koGlB`3iyOcSB z$)Q3$5dLS70*h>^EFmv;G)Z`try`wFz#h9mL;iDr_IBaV{s0&dEDQU%sa9x&pL!3A zlv)f7zPwLmaa;^$c}#T-7uE$LJxT~R34Da%Z4$}voSA&FIwGG84xb5D86a|p45mrr z8~>w}0dGH+uFRpCQG|z!>GOzE#8LSLk{!(8{Pkvt0HEgTx7gG+jwaRnq+9JC*N`$F zw|)C-ZH2)ZE3KzI4X@G^THQh;O|Q^Siv+k+;U>|w-eN*t%9Ub^p>8K~ z=#C4l%=U3V3#~f?vKd=FB${RbvF=9?+mO8A5PZA>QaN?D8l z_*rK}4lT1f4{Bt33W_4kvpN&e~BC z10Q1SKFq%xNB!^Jg?ai%6m$fGYElwM#Z6k01&T_Jpee2!L-C9a*Q(s{#Gi5Hg>OT( z$^+94vRU>Rlr#5mm>dm?NiT#ubV-b1**8_0N^OyvBZKUQj47+7vzkx}op50}lF6`K z(G+-g=+WZ&IxY<7BIQxj8}$X`_JLx5F!6~dQA$(BN=t>wS+1(%@<{{0?=jr|`W`3D zkjHtoZu{ydyI}&uz&5rxg^m=Co1q;HFYmT@ce$!;Iz1_G_j@4--##Zj0J9i_iGMinqDB|eNV<=p$v+KX`ud4i{P1pX7fU^N?m_E@Y{Xe$$h?meMJFt-aAYlx&`Oe zj&IA5L9&OcJ%Ad69#cqAim1iLm}s0A!8-YI0C(l}P$FvUok@lhuciBarg8BRqJtxW zdS^UUe5%NubSwBfBhqQzBE9d}yi@6q4=QJ3^$X@BT={^qBU667$vsiTKHWGG^qpeZ zwBM_jY?>;e?uI6SVfY&>LUqK=c=(CHGO>{%SM6m}bc4`zB7F zngqg>peC#AMMQ-~p+W~w0X=Y0O5kQq4`;(c#%eR^UzFU}71fPsn;UF|V4>PF=_1rU z*c!YB`fd6-*YsWW^#yGCO}(!OThHcwiqSt^knmX-_N^M*U$w0oUl{oP*$^@I&5mL| z>VUUppL` zAhgAN^BJh^feErR>yaj2#RTb}T{7-5KO55|-i!AP4iWTe4#gf>q$c9~v)v%OOo{E#lWemuQq(0yc1*}LD6U-}u-+t%DWAnY(M|>|#`y9cm+AHD z3crNkQKO9YaVBCcrrv>qGLLVWQEna<#lNBW+M?b32F)1T9fkk#NmRW~@9G#o(EirD zI@S?Au<27F=){vYaDYq}SSa`~aiGkyJ93jbwr#$NB6~rsch@J}pV;B|6i8Bcf--p^ zVZH)mxfm)O7)A2w&-y&6oqba*|I`f}msmf6`*!*G=S!fvK0^2*9m@B$ArdqERjkXa zsQWPe)QS7SaZwvv#tjVR2n#jpJ|=vmkxc23Xi3_^Llq5X5=5F5ID#`>_gacI>l4+G z>lNAI^WUH)#jlRkP4V;FByo{HkjUi-m+E^W`Osi|dUgl#ez&JLXtV8n$JuO}vX_*6ifS)ICs#Mh*4k|3s0 zyDm?xyr4hWTAZ_6M~lg;*SZ>)VO&!Zi)`ggJ~q@QA&~QLrTn} z$#khq6Eo10L?Oo0#0@DO-3YmDei>5L1axA$QNO4iQm;(o%IZ2O9u}pvC1lq?^!FL* zNll&$&qt#g$Ku>Fg4&X$q?(*JS2SW4ij7QV|FwLCqh+7+Jqd1RK20RB zbw`(hb7GZU_C0&1w5m&q@8sA(Gu=^*A*6?O5F6h^{k%QpB{nu&F46l=&K&#KF^mGL&>e4g1wqIT9?~cCbDm$c5^g~aV?j#Og z^3LS6AY751ia$EXLGcIdpXv!yrw2Xb;CB6kaSHfEInK~(X~cv&t~Ef7bU}Hmj-_-I zQD)QE_Hn~B`CP|^g88DnYr&0HxwOJ+@H+B`@RDd%L0jgg_Ijqj^1a9C`hKEDR=GWt ztxVMOn|NAc2AMiKwMuAUN}IF>9aL0+O!8Y(v;eSnun`bgasdoX?A^KGfpnIA%g|*x zW0*Txkx|~bsTv<4tHKJG=fe{-awu;s^dQ21LQ_3*Cj7g&jJp59?p3wM(7Z6HL19K@&tulCz z7+W*uY8&f34r#at%GKPh>Ps7w+Xz4L7FG;R(P$dl?GI7w-}ZWi)|tP*EPIf-Q4V81 zw$ozcAW4(^NmId)4MgX~aIjHZ!@5a}t07{W3(<9+D2*nyr2;D@$2YEZDZ$kdA_#DW z(sYTqei(IaYw=4!6T3g=%JvuSQj!=i!{=WPG!_tgCiq;ncB>^t&%^t*1-+1!6$iI# z8sAG|lyl6?9VwR7x9(l?awLOhr0Zw5!e*Ckw(>|4xE!Nmb@0tbbK?6*3Z1zby9{Pp z@QjD18W0t5=au&H z#H%&((D_A%NS4m}JaU!aJuuGs{PLo%5$|hZKQ$H$=X;SV6i{l!rOl(2du%$CLtAAk zatBj(C<;5~>xe%(XXh5T`M2e~zda?*O1u$j7j!}Ke-8<)ShBby#W;JDvl%Y@u}h|o z_#pMe^rUUlhVJbgSxr)LCRoF2Qs9mAqp?bnDd<2}kc!ToQ zKgoQK<8$w1zEp;jm3m?9cpQF$__GZ|&)WSm0bo?zIeYTN!2d4L9+fzGP;=Kl+wl8>_#~8U^=LhrmxglrdTT=$*)3*Qz z=)a=GB8MbrhBF63Zx;FA0V2Pit>13*jOSOaeS?)@Bmpc>e*7xObo?q6eu8fb`2^28 z{C{(H!AK|5b165EaplEu%g;*cN0Z#88-GBFYADDI+Zs4t+*4UxHEkDnf_eLxCLq9k z*~;Ep9Snj?S8l2R7Q_c6w-aYk^fED8m)m3|Cy${`axkx{XL0MG-xfzHLk9!2BPdbD zqlNSS&MQHPC7&r#hW@rRm(WcSGcz}}7q_L$>SC(+lkgF2DcxljgI^}>1mPi(9wv_l zw&kd|&uAy3x@Tp397P(VTTxXlu(nGQ6H;rYnVGQSIQw<|@L0D%E`2De3@J9#`jNZ> zoZq8TfWlg{FQO-`O;H6ri@wP*(J&xBFZ~c)_nL_Ujryn1Een@R6nJFr?X7OZ`EzoF z`|h{){#>}O827=RD)GiPojf*M!b!pE!+Lllap<9QGy^Kjo{cFjDy?JUV0WrRO06G% zCce3HpM~J!hPaEGBB<(Y-sDBjDOv_eh~ZVwHkpK2E77S|{?uqC4is=Q9sOZO8vcJ?0We+7tsV#VY`Sm!? zm6Z3wk7b+86#2^P?#pLVw?IEJ8H{u^_A1P5a%AK<2Cwo4oZB*l7T<+Rvi%aA8wrK< zQmEA+8+{sCgP{MP`3s`4%G1geH<*H@O4PYW4LVD0(PK$jB+-4v@jRsLnLA;9N$&$W zP22JE0K4!-@X;`^+RHN~9k|ga-4+gdG9t{&O z!rdemfNr?}jIJ<8>fA&I?rt&DW;U<$(9_qXwwD^EclzSptk%FId@;UUB*gki$4M>y zf0_^&0w3lscQ28T-#G-*n60AkYp)&qL!PnbG&Q~@Hb>%wqCQG-*}_ouUo?$qncr4b z;L}k4E10dw2&arB2=@#L8b@Ec<*^ry1JR7rU#lwn{Tc6Yc_fvB-Tt~(Z>W5|4_1G4 zt>*3?t7_xPD+&42r2B114*#YI$+nF~<4ZwB)0p+1XM-wJK=k>kR(D!IqO*XEk?6wN zQEf{`%dGw^zdIjecubZ5nr0w)>FcZ-8?qP@vRGZGurIit9d7*-w8Je?>rWW2o!01l z)98Frl`M0b`9O`!;Jku^sk^+w!}~m%y41dryF55n|M(fuS6h~xqIFLeZT@~Jj1Ppn zkGh%kOWz8^GrBy;*~NBNjZJSio2ffA-;KQ9fjmRzRFy?Zyjx!P=Z8Yayh)~TVR;xO zWu{}_ZFEw24x$(5qz~`Slr3zSj+l}kBOEI!524cBf8aSz+XS!^Ixzhs%4PlDY zWDf9hdP(Z%eNxH?@?JTK`TtsxI!5R}fiL_W6#6TMv+ykk@x6k>j>CWMYo>Y?F@RbF zE&$PN@Jl$snI3=XaxXx$1?*0uJZEl!Mv?1gNKnn)>fJSGgIIMVAeg$rt#uhvQHz1V z4xCGVX^FGTy%1vKy_~Gh2rEOSHZ?Z3GAy<#N1+n=2G7vRR$H1&p5%8zcDXQfn1@6m zI%SQ@VnrHEi5oYUAJQ&!Z;$fA29R*EJ7C3Qb|< z`_O@SCijD-6H`v-UDyn}?hbT`q zkraw)qQ|ZpV4Ilf^-eYW2oQbA*L|ZEDjZtP$LpUB&g=i+^CcUzbUr>T&r3~Q_-%N7 zHRIykPbk1^5BZ4gLmHw&`h%dC7(D*+nDNm6WMKf$ZY^;Qn^!5SEnb3t0}C4QJ91?m zEnw|X3+X-x5-+;ogj{Ae^v-JWo3NKz@mmkJml>MB4V%%dLfsPWG9cLQ`-MiI- z!WzWFO`2!gWA>Ocz4)pnEqkafmbfFvfoVnwTWVDa@rT>l{PS+vy&6q?LxeEH#Ml*Q zhR$H2z@BT3Exd`vvpd(FkK9#H;^@MOtGQ%JRfe?2+1I1>oUP+5{CB)%w}g%Xb7tWX z2&>!Uno>u?W~++bD#n#lZ-C`YebBCF3iDD?=jIJRd!R`CeGmA7%KXuc)6Z8%{%x7% zV*i~8)Eu;!XdVkPgYlVF4X9nw)F)|NuBbBSvga)&rY#8tUP*>;1a&~;bI5J#YmHdL zFIqZ);5kzJoNzi!*`wW6;)A3iDgCp>dVnMuj2QUzbkH`s<{{RZvT1=z4F+#i5Z%_1i+{^L%1 z!}#*Ew?G=r^U1 zRlFG7UHQM|a6AXRfxqp5HOq^6XMScAgK~dX3A=<~j}J~-KII_=rRyRpoc2(IF|f@H z2H86wf6Z@u7%H)P4|owXUeUASWw%=qnYK*|kMUGs4((+Hzwm3({YzURwpiPO_-DUT z?=SEF@UvRW2i*IzgD z*2C$yyg*m7XuWdZ`@)nbg_mF9lva8mhQDdUCME2w)v4OIlSQYPZB76$rY|psIdqpy zn{3R@VOYhjsAfOK46;73zyG!S1-@El=lVrQy6Xb+<}1Rokz`xnVMCf0=mrgDw_H6C zhVBo_0P*+MunYkG-*R&4Zh7lxGyrDXIOY*Y@vK`s`#Dm(4uY^flrTd5Tfq)@_6&z> z{;F)K4!kKL^c-ioxKhg(!G^L$fjgMgDH^45!5T5q?7?$-Fe1xHEO39j1sjWSR`AHm zN;KY6yDlgfl>EQn^b10Ub29UC5)JW1`?M7gTG4YV(-%4G;_%zta;oCXrrO}Ah^PUE ze~VoPT}&TjUQ!pmu-|F)@e|fYf)xISUs*qQjV`~MY1~MUiA$WNM=ZkEJriK*bEJF4 zi`25d8R&1U(U;gB$Sv7bO4mS9W{Kk1r_vTFHDT5UuOmTuY8HJLJICC0Xw`HaE`O6F zYX^JR0{UbWrYJ%QOp_bq+*g~md&#Uob0w+Rw@Tq|@7FOT)aw5&nI5?Nxl$f3%4Ee* zBO}#UU3M%-U)%5{=6bvnecme7AXmcJkvZK?M^_aSgGuZwEjp54W-%wGm=oh`1AG}9 z{8-w!vBn{;LTN+)=r;@I;yToBNbyYduJ$czk2tD-wbpS=dgGb$`HLA269j_uQK_hJ z1hm?}X3WVngo7$qpx3X~*0tIXH0>uE$`YH(6LKL&ydSP23($00xhS>+Ss{Pq3EQyC zZR1zF$>EF;wqIQX)^&NryGosu)*a=N3;HZ~N}4ghbm*c@)!V5_gDr3$tEL~W&eX=# z`>sJ%7w@;J{_aN8>>Y`6Ff(wk%n$Du#^mEG$E*-)fJ@cE3lZVh<#(-e~QfHiKj zA|qaHT_z-*dxE&bMfJ@#gq#{#fYTR{G``jET-R$UbOLv*Abn3=9-#%T06Tl2wrarU z>6j#gmRgPH-{m$)ubPj+ZJjwc!ao4+n&;jx2yqNmWYvFgVj6L5HCl9D-i;4_IG(=I zoWIXn44)zO;rC1HqiExXR5*ur+>?(xRw%Tw(nk_ST?*K?VHY#$lib^>$=k5uFTb2A zGby9k!1>A(6jiis-_^Fu=v9(v`-mD*>_S~Q7Hh9`;jWivTGc4(iNax;Q`ulG8g9&% zJ!Ke#&lpB@9!fLfAG+O5@CjI6t&t=&!ei-lb;Y~yy|y*%r8X5tRD1ZBbO)71Y?z7u z9>U0`3%B)!kg;W;bZ^Xs@MAB`&DN?pV|C|~R=f2uR zc!{K}N1ozeec31#lHF{Lq^%ZG?66CmH`*w=o=Iw}}65qc0y`N!?InEoy=!aL?y7BDt9JXVZQHhO+qP}n zwvAP{>*XQ{r3bcojDPgj}-tUCJcy$rG%?@@V-csx^x)N5OR<@66zy7b*ZZcH<$fzGJ>Hp_P z{wLJpe>*}{%pJ|0Y#shfI`|Lt$d!hvgDGTD2xj>IO^N*aflBs%CIKwrpb>xL&=g_~ zkM*Ht>1rfpU8JNZPK^DATSkFkV(As9r>>`oj~7G;9hX;*f&=;O{LUHfe*XR~py0&w{WvV}U+^lag;!na zu#ja|U60X(yEHBnpV->S%}cJ|3z+dXiLUH7BU1u_U*36~mU()Yj^?r%02_j5YQmh) z5IK82P}TUZ9{quL<9YJh&C0SJ#75*3$+ashq*4=lE6iyqgtesb&wz!2ee5F-ltLWo zL4UJ$D(iRh<@$vTaUx?P;OzV-RiBWn1W(i0Apxc&-%8upKYtvq{d9DGGDzMT28+51 zyz2Ajb54@U<(uy~Ys{>SRtx6x;Id}rz=>RrWJ1`Q0JPuCkWJ#{O(7slu{ysr6>lB%jIfRf6zA_OPZnn2COZDq=wPauRu(E*|xWLQ~`63iNy&O(fRzZ z+Cd{`uT#w*71Q>oIEDQG@tz#?Z5&N(9jx{Lj}a*vpsutikI9=F5)$$|zz-$@iq2Z2 z`U4^Wss{87PA#=n%9C=wNk0KV;C0upyI0uThe6;ZI%GT|mVGbA>GML?R6Kdc;OO{B zdzy9YMcMn$>jQX?#Rlta7#fs3UPcc?cKoo(pP7T&_7sk5X7Vt=tGnzl0T`6L!yZf3 z$W3uHDW(z*dbirmy?!7P?h97#%`wN>tvyW}fu~a|%V-XE01@D^8$#~2&xNT*o$#tHV~~u_x+MfOBRUIl5MDnl_@O?9Q()nl75@2BqKQ zoZq@sMPdEu$xM7xu)*sq5DZUXThtML4^mwu;E>!fC&9UMl=2Eet8C^V-moitwO)*#~t9DaE zHc#niV!1KuD65R728a+w(|qnx8JI&zgFDzLw6EzDTPNRK_7`dF_Mq%CQTj>ycl@j4 zb)6^U-OHs!1QZ_*+{pRraNGW!dp$@yxG&~;{i08hMWI=kbziuyR|AC!j-|gR{JTwH zYo|vAEHBpgvFmLC;)BKS7xHUHjwH*t1N!g7&kM6U!l6!yHh2s2e@W<<6Qzqvfytta z9r?Sv^V`V&X{%}Ksk}3DvHhC-6lxu2%kLhHOMVNOX=Pwa@_?k3QMlYAJ0L(iV#qF> zJI^9Yt7Kr5d140Rk7PNqgL%ZvuR=@M1400~AQNG7PGsURiGoG)+yO zG1Hv0tO~hMC%GXVW*aX6B=?x}|Q-x6`0*Y2~xtz^R_ByNhd^^i^T(7|}C%a`K1x@e+MH ziqBR(`3?4eD#`NEd66PN@ZHOwR->Ps$^X?Ftn6fN<@jHVL9&{=Uea?>#q!cI!OX-yDO`ExCndJ$JT4 zk#Ojdzu$wy^^(A0e6Pw%r@hf@-N{FUPQ>f;Aw1a8$L_^rhjwXAkuoJs$d}wx&_^H7 zJJ`XQfY{T-ChKRx9d`d_77PhzN`k$Wu&J?oG-40!)*4sp;z=$Y_erLyMQT_yb}5Eq z4jPjdv`dbybWe#jeZD=v(o7vpNRqMPdb;k zcmK%BM3c-64|1XL%Q^jub;7EBN@c80F|T^z)mukny3*JzAzwX&)kcRpb+!GCi?efQ z8fU9Z;ZR0rV=A-z(`V=4r1}9TKHJ*H#@?|q6TZE9d-~@*HBy0H_x1!2d$bF+uocWa zH1p6#wyk|}nwwSDBFo^RO1sWOO6f6Rd0N_k1fUuKnYotmuH*kOrW1705^8i$$*Z!^ls(MWR&X)ZiP+{&5+ zE4jJ(T)b6`a4T%&PeXMD@AfataIE;Y_$m!h5=wd3k-qZ4@~#7eo5aU*L8s%W5zXlB zGZhU|bc zy8kzl3@xjRm_~GpnHWh6#RmFtNnwG{1H{k7E|l!DpFcwbCtO6c_A)G7Pg+DFP6}&W zTl8PfD%aBQw$M{Xjlel03Nx!2_CniOd!bwptAbhjq(981Z4z&ntv-rq1`mNbN7^-?ee9z2;_ zb(1ULUyca39Z+IQnGyD=vwWVvA?b7ECq zghf{uUY0F|rE3 z7M0&{ee{@SFE=-8#2rM6gtL}exWW9q7t{xGv{Q2O-D)Q|Qsg?K-7I%mve)#(pwmyZ zkVk>~*-i!ztXU1_5z2J0ZqEy$x08;<4RUO5KEf=8ACYm=&#lnlMK&^q<6A152-~B~ zjfab~T;}F^#vaE4UZ#rs0-9DViWc^uOV6Y;{Fjr)NHn9s&sq3B4o2X;!yblbM9h?n z1W$#y@XVQMkEJtTLW>}!T-E~!zg@*u93qIrlMBm9)77k^c?e_F06U=8p1UJgla1y( zOYMsu#`m%jk z5$jxrwez==w9lsJ#5z$hAwoutP44u^aGki5%-M?j~^h@dliY_&|t-aOo8kd*Kv?zjPiZz!?E7 zAG0q*MG#9u=A(^&epa>oDwrMnNEc18@aDKx{doEoG=unv;lxMT)e9x`3FRwsmb36S z`B^p+d;ZDcD{_dREjO92!xzXBNB(m8smxdSsP3U~N`5p~*MnU)E}#-A@*-)n_$I-% zE~dA~o&U(0_;(ekLrWkwm$6gjwDk3o%U3whJ27YZO_S*Gk;%v`HSDfQmOZU;Hq65A zhR5|#q}vD|h4$yZjR!@$=;=9!h4L#&8reGex#I9yQ$S~rPeeklu_T5$F%M_FC}DHn zf`()N@V@EjWES5@zjJ1GPfd}M4x(6=291_-J#Jv>L;xn5R39vy2;gl zHIebMsb-}oHM@0|fYjIpokWN8Jiwe)M+9gAp7+(?E&D_ilOGxIqb^2j#qg-GGc86$ zi{YcQRv>xY)G~nO7gm}cvkJ<^^>p!);`ar|PH-ccC98X~N_|WP#y4cz!8x8yfdqhc zV57mIP<_<<@Mc;5GqWeS3@;mXD=0xnNS86zMK-X$6{~c-8BcM=S;4oI8GatLS>HBg zLAMnBd>pwvU4h6fNyKJiKV zY*Kd$szoRkAr&P$D!m)JPN@ih&AnNQ!S{+GeKdDouC!R7=gFOBQbEQ*a#wew)^@8V zkh;2Dq%H-b24X7hrXZ!jHSHYB`j#^g9DJm6Vh-ZkquXW7WHoGpqU)2Pi1+0?+&Nt% zwo;2~&FSU`8Z^Scfq)&=soqRk<a;q{U+6cy=y{ntbiD z#_G{T@P~>H@}O&M37IKMz|}=e8X||~5`vh94f(MY;adO+g5p@Dm*|>ai$H1p-jGOaFf=n>OeS@&RGz~`(B{PUEgmnJC?NA z(Qs-YA2!@8i?%gIjy0w;g&}o#dDX*^u)_T()D9eG$QuAfe^#4%0hlAS+dIp4p_VhH zcL*PBy?0aGP4S0cLD-2R28}@}D93(Z>qovHfTwGLD*Q23jY_30{$*eI({Z_4gQ?$>qoG_C9`lG?6V)su}Ip71# zNC4eX0?66EutI=5F6P@FsoPHWprcL7={(J>I{IvY7$q1UYHmI<4m_EIFG73(%`cV| z^!RBNp}Sxyk8-E%!y|{ixIt_^;Qa%4cDy)4gSb zlS4bsAIYdsUA71Uyi~QpB*18?#! z)3OHz*%bwv$Q2K#V}UKOieEtb7DYasyPk_e1pjK_O~h&N8JA1@Oi3u z+OKVjWWZ9Nu2|&KZ29=IbAIhu@a|PnLcRAzt%L;f>8oJUJgo{H*l3WX$u0)T3nI$E zp+C#JBg(*BbOYu^3Lm{IDc5cdi%P$GV7GtU?f)t3jInYDrd8RXwZJcaaiZd)f1E=yd42%ew1q+M#9QxO!>LbOsjxU=VpO5UgkVq4Y z7Ackn49bMFUnJA?gfp^)3VabupO_05hi+P)ae8vZthxDbPs$$r*~8qAVE9es@p3bS z!#?nDhm=E?tMODlz%aW-r{|ha)E*f=aN{fLY7Z}#tKxy8DVN>4aG z$v%_5dAs+QPuRT@zDK_Em!Ig}`Z&VA4Kn%sn-%9Wn|$w)*KF^V*9h;K*L3fl*Ea8= z*E;W|*XACZ&&b_|p22i$qYRtWWutu2+0W@$D(Yv}sM3i0z?}X^Do{gsPjyoigV^4{ ziXMbty=ReQVti+NtjXz4W(WNFgW3R~tj7FMZIXYd83^7!Se}S^N$#kgI^vG-PLZ8` z>jlp+{#?M?xg{W(7_&O`PSwH%82PsC_vlZq=w99|o6jYZ?f4m1t^+Ux!p}7Ip@8xI z0tZjRDhJsJbWdm9lc6iiI>gHKwK35j7Mt1yN!4wm>VOV;e01a$ihgtAoqy@{lZ`%C zEXl1uUT*V(C)f)qbF2t3GYsW(#>m7Y3(MXgAo}b4keZ%S^3!{T@tnx9e&C0`yF$*g zB_6G1(LpqM_unH6tv~j9vRTvIqT-cAmI+;@sL^G9_(P0Y%6Z*2Pe5;z9_JgNN0g7YoI=FY!*fi^ zcxSKbC3M%V`7Pcv@znP$X%TH8$Z{b=`f0rhA$I`mnZ>fCN;5*aQV})XN#^o+Q{%}N z#U+-2l^CR~!YOL(idHJgz2>Nk{97Y zfH3h=Do;7_b6h^-;+*4svGV%Rl-2bLJmZ(e9wvoN#tCU?NW7S8WAXEZPCGO36Y5Gl zL9uoF3=BG@Rx8aw1c`UqS4joqv321}K!^~+u<&^XvIDOnD}&Pw8uJ?sO%h~GQV<|#hJvh z%%FnnxA<}jVbT)+k8D@mBg9`{_4Ip1_EQJExZ_$bfxtt%n@`IwUs4vGN&QU<~oAqEr@`T5HB)^+{1aqss|_UV#byqrK-_^Wkj2jDKvDh;9Z zckXt|PWnDY$VaqWudTAzyWx;s1i74t)LIwDL6DcwGj!o2sT zCGwlxlkE)((PD4}yG>`o6LI_JQ{7;M`q7)eYp@lW*gMDxX%o|j^V`Oe8u$L?f|^DA zU+_-E(iJQ9^0t`o&=dr`ujIK-#m;Ku`FNdBha}OQ4^!2F`*MR_9(eF1FiZ$&wM9WF zXb6=t1Y}3L{cUI_j~@pISTgPm^g9*LmB4T$wnkjWsMUvULj*|-7Dh-6H87=hZ`{T@t(mb{kNa1 zAPe2~8TbW=-z)IKxEZZ-)Iz9A8F0;B3hy*2vpclHR+8Vg5f$y}j$JOj*qcD%6ay!= z7qo`HqB<$l#FDD;YlF$c`4LyS{Ovq3+mB%F$`e^)dc}`Fp{SLM0I9z61%BeQEa|?|e*csXaAWT8cORG^Fw3Bo zQ_8w{WIB#AV3$81p`zqh4?){EqXpcRTa-#xF(%F8J!bGb)k$9yGivK1m-=k7bAhim z`Q^;_Uk>%#D_yw+=LIdP2R-n1Tx1mG!4K2?s!Y)6sbXjrMChg%^!z>RlFIUAbOFDA z3I^Xe#|--aG`k|*+!KC;p6q#v+D!_+Lej}|HEi&c=p!u z5ft3@5a_mpJm?2mRolZKM2CBH5*KuXM0M{MG|1#baVY5H8OF*-bNFlLxh!fF6|irQ z#h-8wCii!YgXmD==38w<0ZVTDH9V@6^b;_^4AS2oV!p--LN049U7}gJdG-84d+S88!QDW?T~JHzoo(qBNEsRlNQ6}x0-X}(86u6B-%%#36!Ey_GRSz}|*)s{i8 z6)UCh{;N;5m0ZI~BZGl%ZqX4eLh+9ef-VbC#77H8D)+6MCj!#V&Y~|(6Ta5nhxls9W zrKN~b@^;->_Td843|bu#s-=(&EW zUZcj16mrKQ4(6{&I$6^m>b{1AfsHj_pVWk;Odm>VFcO)Ums;&eQIIUVk6eQ!OO!iB zq?BrTWaCQkZ7uABFWot4J7hQto87kb&}rwF28v`l@K2rS$i||E3mvJCS^y=IGn7V` zTl+^^@b#B1DwHL5W;0;!|PN&A;Vi$ ziubrHc8#*bv-LTd@KiaY?o=~^fk7C6p}T^hR6tjhD&P~On#w0!m9(qmK-Eoqp!SCj z$gcbeVJqRLIc$3$6S2FG2HmTA54rOw)>U~RxAnn1c7EI)l3l27ZG>z29vRVlV2k`+ zb3ow6Zn_-NRKs2QJudLiAd2yAhof^)e26o5SPSjnh%ewXb@(gR`mHzO<*p|P5#SXT z3(z1Y*;fkAB?<9%G3t_g6Ef~=0w_ee znz2aMYwSn;QEu{oey6TD=fjAIkol}wn#yjgu@StE*l=c%Wd8npS^jsr8Xc4WteVEo z>f38~+>oh!XD+LI7ECg$V%3v2w9A!ULkMu-dFdI?ELNT)=SbHczF?)`Kfw_-8`un9 zc{)VM4im*(T7xN&{x7|Slx+0DXfy}nglY*3sma%Ed` z5D!4_iw+)CsAg~r<$9tIha8qeaH))D{=KI3)btjzEp?FFQ_;`V4v*01oXloYI_Nek zFb3#;P2;d%GH$kSPryfh85K9BR9(;f^>X%0QALLvEt)ZE%t{nBna_$5ZEx5-i|u{)ul z#}&KP_E$Cv_fH1KrPKc8l6pBQ*O<9sx1K8k>B|fPnN#Dk4XkugF2iHLFDcX=Jg7gH zN2P!4H*o)iIV2&1{A?)r64lHZCB;B_S?LdA8V&tm5kWG}mS7-{DR4MwOpW>sE3Z_G zv)bZa@bzKdL|AA^u+nMOc;1M`09xO^7J7Qd0!ykM&WEPd$L~Y~D)--v^BTCyLgKor z`xSiCikw{d8sb2%oQ_oHjLR7Hma)16r4*g}QJ_-INX7sJK}hL@gd-^-byJi_oeq23|D-$dgjxx4G7(v@9^!{5U457kz;hQ$fTDtRb~ z%P`-P_jTC3w$a9AbU|DSDxB4@7UV^JK471&CxpH|h!1Nt4{Ea&K)wj>V;FPTe2eOI z4$%22E`?K}q)RyS(GLFF95dN)w?gL1h+nq@j9=;6xh{FQr!V2j>gvzx_@10Ug;KU9 z%fMa;&>jgfeL^18q-D!Azp=x>5cG}6i?b(rE~1Ej!AF!09TpZk{JH7>R1nEdbH_AX z!5vyNv(q413l=BAjPJCsiv6RCJHnB{6~iXM!?6>p{E^Qv5M-8j!4Olr9&tBBmxTl^ zzZfi`ohJRH)L~yBz%Gj%hAtM-$*7!%;@R%n&_`SrMfIx~XR%H9M~)Gqk%%tiRU1mM zAnGTEdRZ;@=qUM9L@fUiq2xIntfoalZNn7_tALUtC_}oa!ri3(iW-}fu-yHxa9O%1 z^C@?t!m}hapEz`5)(jOOl}aOlx~51~ z%M8h$n@AB6n^>_&)zq|G15LSM%#@)aLD0q1dmjIEkG~P6uyUZ$OwWs)OgY%}5jEzx z+>Csw;ttm|uZ@Z)l`HGRhg>#yP}-tbApLt#tzH;*p*aic5i*ja2n<%1lmZ<`p+K=;6q_W{TjeM_N~RzTo^iBsh1y`LL2 zVx;PQm>Xj3d&wU3uG7=2?BK86bhia|0x|E?J<44so@>ou(=0FUi1?yY-RM~c@9nHbs64T1I5|Ow53hazr(S4ww!OCSjMkvir*sG)B_y5>PP>sonTPB z6b?3Jo84g6UyL=#7sLHz%f}Xde${te&=EP;lthN_4zI-zuL)vyFLV0UnpD7kc|D_G z*Ae!1wDk)yI-n1SDQS5yEL3uKzGFmYNZ0SBJq*})HTt$-7~0Tg36l54qZjG+6}$Nx zTp368Q)9-eQr74UV!36b_6QPi*e-y7ra1aAYX`4;v=e$lT954r;xOSC+k&qac0a$L zU8Vn1toYW71{b;S76*^yhxng+T{AagRnwn+t^&<}&g`qn>pPhl|F`ijS{?c)v%k!L zdOSUqIX*cM2hEcpu$CzCn+BT{3Jt^z6$C244@#IxLNo*`E1g24SjE1-`X-}Ie$K}} zKlyp_PqA{HjdgQ#q|eGqt;@WHwY6n+t~J^_|I1HTQQS~1|8(ZZ4e!grL*T1nu zxnJ|rJ>&wzPxZ0ivw3nLMf3be_i_YZlXB+o03E)>(O(33tZ5*qdI<6vtnNq0O5m4# z&ttXhx!zV|gNRh`YkLBIU0L*qi+dpJ@)WT|?x;9C1EYdiF)VFEdvS15@c71eW`VQ> zvCwly@0f^miDK+F-Gji60PA#;4|cDOpPZh_C(TDONNAWK8! z1Fl*&cesH#a5=8vG1HSc9DX*_dK-Ngd8Lt3) z!^Hm5@yYYIuB6oQvh}@Vh}yV)N%t(mSmia+1h%>#Ep*?@idPAL^utZYujO7NaF)p} zTU>)af$jCxYKT5@3tNUpyqE}sDSE5!X>05)zQc`VUZ<5RF@kjCl*wH#g47`WO*+4# ze{$I}?P}fZZUj|HHLd6_uvLDqg!B@1mZmnSGgktT_|i zV$`QASLPi!J#J%2Wg{_im>0rn`e!lQo>bWRy_XK@uvQ z$V`1gw=<8tO*gf7xF9V?<=$T*O)`%y(cD2T?XHa6T42c2=cKVb=fTQaJ^D|$RvFPU z!YhGwbE^6LUuX2)qV3Yak?}rw`65TMn$NkT#TUGMEKt`K~z}o%?*G9 z`pAMj>&gb0#C5`?Fh1j}AEB$)OoI1R3W?Gt5f*z55vBsYT^gOFO9iOu$bwAu{2#Iv zbd+BjQjllZ$#s@1X%+vU6jByx)CVgSz72S?Ff9PE>TLvcQ z-JCZ2l&(u!(G%4O+2j{9UAC&pi8k+0CVmy{S(wvQ&*)-9;uTzB(sm&!SUQ7n8LAbB z&aStpNhajg@k5Is1mH_i1LE@#5#k*($qiAChL6>^AhOJxn3p7Ej(5q>ekZ>-P|*qc zq5p<&tQ|q;&L>TZ`xQ&)wCintWG046-0LS>tcfo@((rk2*z$U)~WIrEZoMAt^065w4Y`P(`Y&rG;=0S8NtD4G+ zojUu0C3o^^NLE{xH{6||GF-*|@cQxQ^iwR{B;y zEm_>VmRre0k?A>SqE69m`V-ncsI5RW9#sw*UcsPRu3v9CnRoOzY@quqH?;3rf+)PG zCy5!0@q<(j0XSyfRQ3Dv1~AP+f32F5-}N%C=VHrFnoN0%O#jZ{P+czy3U<`G1w*SOmE0L;ZZjAoy^^=3E_P!%qW^DOJ4x+_j-^StR?(*@mg z;lx{Xazv)>aj%jJ!i%xJ^uG&b$JCJJfoUq!nW*tG;vVWuXw&K76|dkf*$wiFtRyf= zD$0o4To916AWVcM>frXjJHNj%ycA};=O4L<@1Gd)q|u}E(%BolJpp#s8}hU>NVExD zEDMh&3D2lT%9O54-=Vl!WRn8P5@MMogCSP6dsAK_3D#*LMIefv3TvCpXE|N8c=1ah z<7*Wq7b91U@<-8X;Y~&)eG~#xg;=ahmDt0OBJ1hLtq$ikRa8WZi6JCvOV*i!qb2`o|^;NCEOn zjoks;B+*sab4VO$8?c9fH#`;lwi1C?<34XGQ&GvAFktl#ng(sjFF$Ao6%nAJ!pe|q z;ed9pM%v+|e-!>l8R6UOWCd_SA-#ua{tffy04r0l%8)w|3144QX7yk)#QZt=8X8;< z;%F2)N=5Ye!D=e+Y(EeLbcx%fEi&Gf3zFzk7BrM!NRk!IqJmKheD_=at@san`~{r* zdN*(1=V%?Ea;^(`8SZFK8I1{sMEtSvthY4{8!gdfo8t&go)yLyYix8_eQOe|H&|k>v}Da< ztz_S4^&`WlZBuuPyA|@Yn&dw0-G{w5r26B!Qf4oT7j&?fMG6O4kKa!s;_x4Wx(IWP z`=TKS`sa_mjhqz>+qw#3e-duO-=5{N@gbjgt_b$RzpcO-+S`e2fg<^+F6Y^T1CQBC z!P~P+mT^lW=rRtNt_tgOCrtqy9I~%YN`f3}=8jprv-O`o6$qi)I*0MtxuY?`jM__P^#=~}!sxnI}{Cm_xx&g~# z%YVP|rwlszmRvk@iC_te?mFUnV@XzjC243raWW}ZgkNhPZ5RJMBHw$!HBxso9}-N` zuGmh*yWh3G{h!{n&$?s+m@vC9%+WdGh~Xx>48onJZCG@)mK1Lm-qGsz%tpyoX9Y}+ zS+&&cG|K$DP}+a>BhR<##<%I$H=H)Fyaf?-5xBm2Cw+N_57>CIrsR6JUKvnp+`ysw zz$zJbb{Y111sqHmz`iaZ?ls^STLFV@kYW#)eVL|qLAj&*-YBCl*0|d*g7=hkXvAj_ z2>UGzsWvC@PO!G6nr{dl(VgcmK0!BorDc)21vWm>HwU_l+n)&AgSYee-+nz4xpO*v zLLV$8AI*yI8R#YW)?B=0taHK}L>_9IA|K5z?;R=mwq~mH#2ea90-k<7<# z&ARfr&t$xmqdDCy5bvRRk2bi^WNIGNO)tVPS6j3!o9Q1**`ApubJk3d-9O+YCdli@ zGlUKl$5{Dz<`>l8vpFAN3`@ayz-C$nZAXJO#!Ix7a~?$7q@Q`7(A%`0`Ry{Np*u6; zdE~G$nA?GzDutf)s!D~tFptJh%62QuX0;$H_G&#`nS?L+0Xq5p*|w$h-V=0t+~JNQp6UP#V=auMM7 zq5A_=Pv!>0^i3(5hqYm)E}5q&QY?l6x9y2a(49jTpz zw7@S7X@37UcK<-D##lJz$^aY2c|tboj#?)eI3b`sPhK~um6p$ z5}(bA;5)D6c_&NEw;$huH|i$;g3vpP5d;t}ITb7ku@7Xs2dN6$$05`0f!6B6b2n%+_wLg|jK;S0Ne*SioRmB*NZO1tc#5#U7P zRw2wf$%Lqc!bLe*HzmBZBvraj(i;bU^;J&uv~d1><=9_5Gji@{1CTPud+Lf)&1en* z(JWHVlXfWH#?(5oia=;D?`!FrqjK8lXlFuhjI1J3?JUr`mNW+5K${R!=`0NOG)q`Q zD%FF`RLB>3SlWBAs%Fc*;dIC~ei|HN1p+^a2O37E+E=7HRbUAhTLiS2k;Udi&=tCC z$(GuIH{Ypkj2xP=s}|TriTS4qe7F-)2;W3cadu$H>}mNLtBjcP@`Q zXCFA`dqhQ%tqoICjm0=To4{J_42MZ~sZf7G*u%Wrp^S$Uo z4y5*CmG;7w%wgCS@VfXSQx~XoL`@x;n;#q^9$`BCR2Pi9B5L-R&4_1;yuHwQgU}Bz zy;>r!TwaUNRx3@B>iq@~!m|Y{?KWTOyl7jKLFo!`$3%Y-lSg2#D?EX|lW=i47{^A0 zi=o|4D#z1`E&l%X2p=}n_>=`2h6TA(xx{MV^QO%rn=#Eu$FXcwi#$rCFL1nI^58HO zY;@=S@4VI)aubz0@)B>@gdxsBHiZMCya^J{C!wxwrqa;)bJRqA+ z4;$ln$)nOm=-o^8Z2QyS*FQlxMjcALi;7Eow2carvI)wpR*88>)UC66$;&3Va^g`d zbK3KP`*77sXmDKMKyb>b@ort;AGecTJn+~Vqj*y>stxYsOUuFK>TDzqSrW{neKe|m zmQNjMiqPrR6uJ?3JV^Ud_p!8>p`Tjc$)%Rr$s?K~+@OW~;G*O+wi+E7W)CPC9di;d zi8SWoH`1d$+U=d3q2tl_er-kgv z8pMzXJ9K;_>Imo+SA86IqSXZfY)c@5h9f)_Kk@jc>l{y>xq5Ma!E=<~qiKz(KDhNu z^<>DMYH^UYpd8{P;0G`F^oR!?!-WPBP% z40=T`lA?3Zbyl^A?p3!CYyh|i5fl0m6$tsW7H3d9vm(z+{m4T6LqM<?NOHO}28esW&_w(i?puh@(i0>X5i>s1jA_=Xu% zxDdIYXQ+#e=^(P3a9n$RKtpWu5ht#WaM})69`$O!R ztPeQ*2fAQ!`pJIHO|AwwVfk)qFvrc+}^1fm8-jV8_Tz!K0AxOLj z`1gG8>u`43}Xp}x5*!0py1SXX4{Sgid^EK4o%tJNPZs9AGc1RpI={S1CA zaSGJ}-ePM}IG>_f7H@j#u_MJGuKeZ-NOf zjxN$A|Ax(X;r%A(RI~6>{Uq)8RrH2t8C8eOu|;h4Y#Fh|Ol4u`K;FSmB%2(X*m{Sw zp!mAecEDzT`~JB+SKVVm-pSCL4DOYjKih$ZvOWRXg1r4>*_m>z;zn+F?!(gA(j+#A z{4d1^(tLK&x{dy3gcJ5Lyk#bAV*TeZZBbnA4^<7g4)tn2v+LDxGQy#XYS5+S+Nwpz zyHSlqScdbY(A_M{(7*L#yTIE5T$73N(MX{*;xgE*%g{=i(#Dj2O>1b=SOe+=1!||= z@73P*H&#Si)$#v&b{7*ASa&C-9X9jKj6uoPdB*%I>@JMvZtx!b-W$p~=e~6*B|lc& zy_6+)EWfocZ9P@oP0qf_ml{mj5j%x0@;q8Kbw5T(u5ewZOnUH*qD#Xmf;xdP_iq=Z z(wj-nReGlrRwtS+VBEl@64Ow&L<7`D7n5#qXyhv|cv$l^o1vWXSQBX%$rMyJk2@u@ z1wWf9odZ`#cr;shXuvK`YS4BU$P}(NpFgFjh~1hqp9x!&d6!HZ)UsuYnT_6KUc2Q~ zEk8P4gXI)vkHI!`c1dTRK3`MYA?*~u#KB!s%J}w)^Hn=7d{7DQ4E%a8>|pN>MfeB2 zjP;vw%SVsX!{QK6GJ z*3$N62y||m!f~t#@47ik4a=P1SMGe}*jXO_X;q0ut1)lRO{!oX&+q3`xM$@x#vHCi zuNuXFpPINRYTT@3EHMbUe<{9VqM*))bi{aD;beq&l6gYpj}-S5k?p=a@%_hd+j~0H z^8cCm=fZ*Ihm>zLZHh&p>Lo`OL@vROql%VoG=b0!x5Set->x%6Flt~ah$D?28QIoo zofB=#t%;y}GU|7nNhEp04<1 zE-EC%@L~l_6n?87i4vlO95$1UGPtNf1<3vHf$*R@h%GhWGwaOYj)}wL2zT8)QvO(4#Ys=|a-SBe-D2x$Upy*q zHzC(u&pE8#Po7w9F~8cv@KMiu|Lg+i9jUtO=kC-l(=G5AtK0dczV6Gw%0Jd@8@Tp} zoa^69Wo96aO3RW$1-dse9ER`&wCl_;yJmGrCN7NlEyLwlB7S zX_T4kowVO5FfC#Gm_w&aw^3JLGU#G{1pGaFBw5grd|x8gpWc85>j?mR2eQFOFw$>g-;QC56k7%&s%OjY-@BMRlLZu zy|j;H7<9HNIQ;m;Z;HYnYk5`It$P!DFf`nvYx(h~UC%pfjNE^|X7?s5D+#3*X!q|v z|8?ulU58DVQiz_r8X}LF_nbCm)NapaFUzI+<>_6_;JvtBOFQwn{D9YTllkb_MC>ueJoTdK2Gi1(?xHhxogE61#L>|Fmt`OBYckkEGn z#X0VG2K+TF^r}}r@ix6SJV>ec#kQq^-c@dkUZ3+op!>eUH-Yj2%3 zv9i(SRaQ^bk9ctL#}Yw0Rd3zCk`w3Oa{n`RB@(uP-)VY8^tznzrqQnT`pShJJCG%( zmlp5Mv6!@>Sd*MQe)fX?XYA?=d+V9ACv~n=OLj;vYMH=p66|=OmAup{)}d$LiukhK zdwSC}6P~92Fe=^Y<|0>P3*N2%Fi$k8%>4d`vGYR1H{CnmboS1(hEDpiUw^3ietwu= z_uU^dTdXsS2eNH#K6Ev{kL&TedM5}iTIGDMiSzwh^_c$i2K)aSmajnKXTA6M+>HUJ zv>qklkBGEuQLV2K!3!)CCC{MsU|t@E)xx+igAG1PekmzA_KyoyCZIJLbQG3c=9Ix>&INEZy*3^|wwMC*|VKU@@V0dGwVDp<(l@EJ@Y&J({_yj^10q9kp|aW(!^ zNEvAhVo?!%ip4Mdv_uCDnboIY7FZ~`a&|%#NM{Ce!vh*aMJ$Seje`aao1qasvs!f zP_9sx3<8VOXzNUi1ympyy=2oPEn-nRLgX%IsIc86~c$D-Txw85In4Y9-G0h=$yVZmtyA57V_x-|*Z*9}7>ufB8=E?B5i zeVUu@pV|O2Ho&9>`x+`@QJ|k9&IgTP#Il9Mh5}#6?X5k1n?b;fFoA7`m=fKYhu~0o zOkq4P&}|zdHM9C6mb&kAM`4=Gw=s6a`b4P0SsV~0oDVityT^E2o7d((2qH& zl(>{b*{>~cfUNf*aF6`l`Y%s4K9G-cVJwtz-RFBZPXpsr2Z!JwRT8|4MVj%dxe}A& zDWN{ze~M)cW>gx0RhBS8B^7^cxi{WMW`OP|fWqWEe|EP@9Ok|q>#*LHi*HUfL6Cmv zxn!A^7O^PzXO&!Ep1_MM#25BlvifNzkfPzTloH`pEYc{!hbni~1d++qMt$%}uahIE8n)=zJ~@A zeJjW+KiPFO)fCoYI*Y?+qa#t(xK!qYAAxHOlFF-Uw~jLI2vjw@jklHwyE=DRj;F|V zo}-V0<)cj4Ly@>bmM|W_|AFgr>tBOOl|yW{Npe6FD@EYoe8NXzQ^QJWVi9Q?E=r80#%J5WN%4o}W0S(k_)asG^6_m28!J|Z3iDTrl8YRR6%HG(RYoLGafvFn zYuK2gGS&?mK1=RC4Zq9SK!`GE+#*Hju&{{Oo??H~Dg*UJDuPDfRIooBkO4acIKbgQ zBf!dr{SSu>wJ}vGO6k4{wsV-H3b<7sEXK%R5bQurcGw|3ahIMuC{~u;eo88f6f3Jf zfmaTeoWXx867Z$J2ab|E=9e~te`;KENuLl?B^uGoogle, The K-9 Dog Walkers. Copyright 2008-%s The K-9 Dog Walkers. Portions Copyright 2006-%s the Android Open Source Project. Licensed under the Apache License, Version 2.0. + <p>HtmlCleaner is distributed under BSD License. It gives the freedom for anyone to use, explore, modify, and distribute HtmlCleaner, but without any warranty.</p><p>Copyright (c) 2006-2011, HtmlCleaner team.<br>All rights reserved.</p><p>Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p><p><ul><li>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</li><li>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.</li><li>The name of HtmlCleaner may not be used to endorse or promote products derived from this software without specific prior written permission.</li></ul></p><p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p> Authors: %s Revision Information: %s We\'re using the following third-party libraries: %s @@ -565,6 +566,9 @@ Welcome to K-9 Mail setup. K-9 is an open source mail client for Android origin Reply after quoted text When replying to messages, the original message will appear above your reply. + Strip signature from quoted reply + When replying to messages, the signature of the quoted text will be stripped + Message Format Plain Text (images and formatting will be removed) HTML (images and formatting are preserved) diff --git a/res/xml/account_settings_preferences.xml b/res/xml/account_settings_preferences.xml index 467beaffd..eb1f7b5b2 100644 --- a/res/xml/account_settings_preferences.xml +++ b/res/xml/account_settings_preferences.xml @@ -259,6 +259,13 @@ android:defaultValue="false" android:summary="@string/account_settings_reply_after_quote_summary" /> + + TypePad \u7d75\u6587\u5b57\u30a2\u30a4\u30b3\u30f3\u753b\u50cf " + "(Six Apart Ltd) / " + "CC BY 2.1")) - .append("