From e188badaf29a1a02307f93864eed6737096bd9a1 Mon Sep 17 00:00:00 2001
From: Adam Moss <moss@lindenlab.com>
Date: Tue, 3 Feb 2009 17:56:26 +0000
Subject: [PATCH] QAR-1177 maint-viewer-12 + uploadfees-viewer combo mergeme

svn merge -r108355:109316
svn+ssh://svn.lindenlab.com/svn/linden/branches/moss/maint-viewer-12-uploadfees-qa108314

Whew.
---
 doc/contributions.txt                         |  59 ++++-
 indra/cmake/ViewerMiscLibs.cmake              |   1 -
 indra/llcharacter/llanimationstates.cpp       |  12 +-
 indra/llcharacter/llmultigesture.h            |   2 +
 indra/llcommon/llbase32.cpp                   |   8 +-
 indra/llcommon/llerrorlegacy.h                |   1 +
 indra/llcommon/llfindlocale.cpp               |   6 +-
 indra/llcommon/llmemory.cpp                   |  30 ++-
 indra/llcommon/llpreprocessor.h               |  11 +-
 indra/llcommon/llprocessor.cpp                |  37 ++-
 indra/llcommon/llstring.h                     |   7 +
 indra/llcommon/llsys.cpp                      |  11 +
 indra/llcommon/lltimer.h                      |   2 +-
 indra/llcommon/stdtypes.h                     |   2 +
 indra/llimage/llimage.cpp                     |   2 +-
 indra/llimage/llimagetga.cpp                  |   2 +-
 indra/llinventory/lleconomy.cpp               |  12 +
 indra/llmath/llvolume.cpp                     |  84 ++++---
 indra/llmath/llvolume.h                       |   2 +-
 indra/llmessage/llassetstorage.cpp            |   3 +
 indra/llmessage/llinstantmessage.h            |   2 +-
 indra/llrender/llgl.cpp                       |  29 +--
 indra/llrender/llglheaders.h                  | 210 +++++++++++++++++-
 indra/llrender/llshadermgr.cpp                |   2 +-
 indra/llui/CMakeLists.txt                     |   2 +
 indra/llui/llfloater.cpp                      |   2 +-
 indra/llui/llmenugl.cpp                       |  16 +-
 indra/llui/llspinctrl.h                       |   1 +
 indra/llui/lltexteditor.cpp                   |   2 +
 indra/llvfs/lldir.cpp                         |   7 +-
 indra/llvfs/lldir.h                           |   5 +
 indra/llvfs/lldir_solaris.cpp                 |  53 +++--
 indra/llvfs/lldir_solaris.h                   |   2 +-
 indra/llwindow/llwindowmacosx.cpp             |   2 +-
 indra/llwindow/llwindowsdl.cpp                | 103 ++++-----
 indra/llwindow/llwindowwin32.cpp              |   2 +-
 indra/newview/CMakeLists.txt                  |  27 ++-
 indra/newview/featuretable_solaris.txt        |   6 +
 .../windows}/install_icon.BMP                 | Bin
 .../installers/windows/install_icon.ico       | Bin 0 -> 25214 bytes
 .../installers/windows/installer_template.nsi |   4 +-
 .../windows}/uninstall_icon.BMP               | Bin
 .../installers/windows/uninstall_icon.ico     | Bin 0 -> 25214 bytes
 indra/newview/linux_tools/client-readme.txt   |   6 -
 indra/newview/llagent.cpp                     |  22 +-
 indra/newview/llappviewer.cpp                 |  28 +--
 indra/newview/llappviewerlinux.cpp            |  14 +-
 indra/newview/llassetuploadresponders.cpp     |  12 +-
 indra/newview/llchatbar.cpp                   |   3 +-
 indra/newview/lldirpicker.cpp                 |   7 +-
 indra/newview/lldirpicker.h                   |   2 +-
 indra/newview/llfasttimerview.cpp             |   2 +-
 indra/newview/llfilepicker.cpp                |  68 ++++--
 indra/newview/llfloateranimpreview.cpp        |  20 +-
 indra/newview/llfloaterchat.cpp               |   6 +-
 indra/newview/llfloaternamedesc.cpp           |  14 +-
 indra/newview/llfloaterproperties.cpp         |   4 +-
 indra/newview/llfloaterreporter.cpp           |   5 +
 indra/newview/llfloatersnapshot.cpp           |  28 ++-
 indra/newview/llfloatertools.cpp              |   2 +-
 indra/newview/llfloatertopobjects.cpp         |   2 +-
 indra/newview/llfloatertos.cpp                |  38 ++--
 indra/newview/llfloaterworldmap.cpp           |   2 +-
 indra/newview/llinventorymodel.cpp            |   7 +-
 indra/newview/llloginhandler.cpp              |  17 +-
 indra/newview/llmaniptranslate.cpp            |   2 +-
 indra/newview/llmemoryview.cpp                |   2 +-
 indra/newview/llpanelavatar.cpp               |  13 +-
 indra/newview/llpanelgroupgeneral.cpp         |  33 ++-
 indra/newview/llpanellogin.cpp                |  23 +-
 indra/newview/llpanellogin.h                  |   7 +-
 indra/newview/llpreviewgesture.cpp            |  58 ++---
 indra/newview/llpreviewgesture.h              |   3 +-
 indra/newview/llresourcedata.h                |   1 +
 indra/newview/llspatialpartition.cpp          |   2 +-
 indra/newview/llstartup.cpp                   | 115 +++++-----
 indra/newview/llstartup.h                     |  10 +-
 indra/newview/lltextureview.cpp               |   2 +-
 indra/newview/llviewermedia.cpp               |   8 +
 indra/newview/llviewermenu.cpp                |   5 +-
 indra/newview/llviewermenufile.cpp            |  85 ++++---
 indra/newview/llviewermenufile.h              |  48 ++--
 indra/newview/llviewermessage.cpp             |  59 +++--
 indra/newview/llviewerstats.cpp               |   9 +-
 indra/newview/llvoavatar.cpp                  |  42 ++--
 indra/newview/llvoiceclient.cpp               |   2 +-
 indra/newview/llwlparamset.cpp                |   2 +-
 indra/newview/llworldmap.cpp                  |  11 +
 indra/newview/llworldmapview.cpp              | 112 +++++++---
 indra/newview/llworldmapview.h                |   5 +-
 indra/newview/llxmlrpctransaction.cpp         |   2 +-
 indra/newview/res/bitmap2.bmp                 | Bin 25118 -> 0 bytes
 indra/newview/res/loginbackground.bmp         | Bin 336054 -> 0 bytes
 indra/newview/res/resource.h                  |   8 -
 indra/newview/res/viewerRes.rc                |  95 --------
 .../xui/de/floater_preview_gesture.xml        |   2 -
 .../xui/fr/floater_preview_gesture.xml        |   2 -
 .../xui/ja/floater_preview_gesture.xml        |   2 -
 indra/newview/viewer_manifest.py              |  26 ++-
 .../win_crash_logger/llcrashloggerwindows.cpp |   4 +-
 install.xml                                   |  67 ++----
 101 files changed, 1214 insertions(+), 733 deletions(-)
 rename indra/newview/{res => installers/windows}/install_icon.BMP (100%)
 create mode 100644 indra/newview/installers/windows/install_icon.ico
 rename indra/newview/{res => installers/windows}/uninstall_icon.BMP (100%)
 create mode 100644 indra/newview/installers/windows/uninstall_icon.ico
 delete mode 100644 indra/newview/res/bitmap2.bmp
 delete mode 100644 indra/newview/res/loginbackground.bmp

diff --git a/doc/contributions.txt b/doc/contributions.txt
index fb3f7ea466c..2b0d3abd9e0 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -29,6 +29,9 @@ Aimee Trescothick
 	VWR-9255
 Alejandro Rosenthal
 	VWR-1184
+Aleric Inglewood
+	VWR-10759
+	VWR-10837
 Alissa Sabre
 	VWR-81
 	VWR-83
@@ -50,23 +53,25 @@ Alissa Sabre
 	VWR-1351
 	VWR-1353
 	VWR-1410
+        VWR-1843
 	VWR-2116
 	VWR-2826
 	VWR-3290
+	VWR-3410
 	VWR-3857
 	VWR-4010
-	VWR-3410
+	VWR-5575
+        VWR-5929
+        VWR-6384
+        VWR-6385
 	VWR-6386
-	VWR-6384
-	VWR-6385
-	VWR-5929
-	VWR-6430
-	VWR-1843
-	VWR-6668
-	VWR-7153
-	VWR-7168
-	VWR-7087
-	VWR-7086
+        VWR-6430
+	VWR-6858
+        VWR-6668
+        VWR-7086
+        VWR-7087
+        VWR-7153
+        VWR-7168
 	VWR-9190
 	VWR-10728
 Angus Boyd
@@ -193,7 +198,6 @@ Hiro Sommambulist
 	VWR-97
 	VWR-100
 	VWR-105
-	VWR-108
 	VWR-118
 	VWR-132
 	VWR-136
@@ -219,9 +223,13 @@ Kage Pixel
 	VWR-11
 Kerutsen Sellery
 	VWR-1350
+Khyota Wulluf
+	VWR-9256
 Kunnis Basiat
 	VWR-82
 	VWR-102
+Lockhart Cordoso
+	VWR-108
 maciek marksman
 	CT-86
 march Korda
@@ -235,11 +243,13 @@ Matthew Dowd
 McCabe Maxsted
 	VWR-1318
 	VWR-4065
+	VWR-4826
 	VWR-7827
 	VWR-7877
 	VWR-7893
 	VWR-8080
 	VWR-8689
+	VWR-9007
 Michelle2 Zenovka
 	VWR-2652
 	VWR-2662
@@ -254,6 +264,7 @@ Michelle2 Zenovka
 	VWR-7831
 	VWR-8889
 	VWR-8310
+	VWR-9499
 Mm Alder
 	VWR-3777
 	VWR-4794
@@ -351,6 +362,8 @@ Peekay Semyorka
 	VWR-19
 	VWR-49
 	VWR-79
+Peter Lameth
+	VWR-7331
 princess niven
 	VWR-5733
         CT-85
@@ -378,6 +391,7 @@ SignpostMarv Martin
 	VWR-155
 	VWR-218
 	VWR-373
+	VWR-8357
 Simon Nolan
 	VWR-409
 SpacedOut Frye
@@ -436,15 +450,36 @@ Whoops Babii
 	VWR-631
 	VWR-1640
 	VWR-3340
+	VWR-4800
+	VWR-4802
+	VWR-4804
+	VWR-4805
+	VWR-4806
+	VWR-4808
+	VWR-4809
+	VWR-4811
+	VWR-4815
+	VWR-4816
+	VWR-4818
 	VWR-5659
+	VWR-8291
+	VWR-8292
+	VWR-8293
+	VWR-8294
+	VWR-8295
+	VWR-8296
+	VWR-8297
+	VWR-8298
 Wilton Lundquist
 	VWR-7682
 Zarkonnen Decosta
 	VWR-253
 Zi Ree
+	VWR-423
 	VWR-671
 	VWR-682
 	VWR-684
+	VWR-9127
 	VWR-1140
 Zipherius Turas
 	VWR-76
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
index 68ee8817fd1..2a8abdac23a 100644
--- a/indra/cmake/ViewerMiscLibs.cmake
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -2,7 +2,6 @@
 include(Prebuilt)
 
 if (NOT STANDALONE)
-  use_prebuilt_binary(libstdc++)
   use_prebuilt_binary(libuuid)
   use_prebuilt_binary(vivox)
   use_prebuilt_binary(fontconfig)
diff --git a/indra/llcharacter/llanimationstates.cpp b/indra/llcharacter/llanimationstates.cpp
index d62595cf091..365fb673f37 100644
--- a/indra/llcharacter/llanimationstates.cpp
+++ b/indra/llcharacter/llanimationstates.cpp
@@ -40,19 +40,19 @@
 #include "llstring.h"
 
 LLUUID AGENT_WALK_ANIMS[] = {ANIM_AGENT_WALK, ANIM_AGENT_RUN, ANIM_AGENT_CROUCHWALK, ANIM_AGENT_TURNLEFT, ANIM_AGENT_TURNRIGHT};
-S32 NUM_AGENT_WALK_ANIMS = sizeof(AGENT_WALK_ANIMS) / sizeof(LLUUID);
+S32 NUM_AGENT_WALK_ANIMS = LL_ARRAY_SIZE(AGENT_WALK_ANIMS);
 
 LLUUID AGENT_GUN_HOLD_ANIMS[] = {ANIM_AGENT_HOLD_RIFLE_R, ANIM_AGENT_HOLD_HANDGUN_R, ANIM_AGENT_HOLD_BAZOOKA_R, ANIM_AGENT_HOLD_BOW_L};
-S32 NUM_AGENT_GUN_HOLD_ANIMS = sizeof(AGENT_GUN_HOLD_ANIMS) / sizeof(LLUUID);
+S32 NUM_AGENT_GUN_HOLD_ANIMS = LL_ARRAY_SIZE(AGENT_GUN_HOLD_ANIMS);
 
 LLUUID AGENT_GUN_AIM_ANIMS[] = {ANIM_AGENT_AIM_RIFLE_R, ANIM_AGENT_AIM_HANDGUN_R, ANIM_AGENT_AIM_BAZOOKA_R, ANIM_AGENT_AIM_BOW_L};
-S32 NUM_AGENT_GUN_AIM_ANIMS = sizeof(AGENT_GUN_AIM_ANIMS) / sizeof(LLUUID);
+S32 NUM_AGENT_GUN_AIM_ANIMS = LL_ARRAY_SIZE(AGENT_GUN_AIM_ANIMS);
 
 LLUUID AGENT_NO_ROTATE_ANIMS[] = {ANIM_AGENT_SIT_GROUND, ANIM_AGENT_SIT_GROUND_CONSTRAINED, ANIM_AGENT_STANDUP};
-S32 NUM_AGENT_NO_ROTATE_ANIMS = sizeof(AGENT_NO_ROTATE_ANIMS) / sizeof(LLUUID);
+S32 NUM_AGENT_NO_ROTATE_ANIMS = LL_ARRAY_SIZE(AGENT_NO_ROTATE_ANIMS);
 
 LLUUID AGENT_STAND_ANIMS[] = {ANIM_AGENT_STAND, ANIM_AGENT_STAND_1, ANIM_AGENT_STAND_2, ANIM_AGENT_STAND_3, ANIM_AGENT_STAND_4};
-S32 NUM_AGENT_STAND_ANIMS = sizeof(AGENT_STAND_ANIMS) / sizeof(LLUUID);
+S32 NUM_AGENT_STAND_ANIMS = LL_ARRAY_SIZE(AGENT_STAND_ANIMS);
 
 
 LLAnimationLibrary gAnimLibrary;
@@ -334,7 +334,7 @@ const LLAnimStateEntry gUserAnimStates[] = {
 	LLAnimStateEntry("yes_head",				ANIM_AGENT_YES),
 };
 
-const S32 gUserAnimStatesCount = sizeof(gUserAnimStates) / sizeof(gUserAnimStates[0]);
+const S32 gUserAnimStatesCount = LL_ARRAY_SIZE(gUserAnimStates);
 
 
 
diff --git a/indra/llcharacter/llmultigesture.h b/indra/llcharacter/llmultigesture.h
index 39f2696f55d..eb15f600ca9 100644
--- a/indra/llcharacter/llmultigesture.h
+++ b/indra/llcharacter/llmultigesture.h
@@ -108,6 +108,8 @@ class LLMultiGesture
 };
 
 
+// Order must match the library_list in floater_preview_gesture.xml!
+
 enum EStepType
 {
 	STEP_ANIMATION = 0,
diff --git a/indra/llcommon/llbase32.cpp b/indra/llcommon/llbase32.cpp
index c8b6ffff38f..5e6ced9ce1e 100644
--- a/indra/llcommon/llbase32.cpp
+++ b/indra/llcommon/llbase32.cpp
@@ -146,8 +146,6 @@ base32_encode(char *dst, size_t size, const void *data, size_t len)
 
 /* *TODO: Implement base32 encode.
 
-#define ARRAY_LEN(a) (sizeof (a) / sizeof((a)[0]))
-
 static inline int
 ascii_toupper(int c)
 {
@@ -173,7 +171,7 @@ base32_decode(char *dst, size_t size, const void *data, size_t len)
   unsigned max_pad = 3;
 
   if (0 == base32_map[0]) {
-    for (i = 0; i < ARRAY_LEN(base32_map); i++) {
+    for (i = 0; i < LL_ARRAY_SIZE(base32_map); i++) {
       const char *x;
       
       x = memchr(base32_alphabet, ascii_toupper(i), sizeof base32_alphabet);
@@ -197,7 +195,7 @@ base32_decode(char *dst, size_t size, const void *data, size_t len)
       }
     }
 
-    j = i % ARRAY_LEN(s);
+    j = i % LL_ARRAY_SIZE(s);
     s[j] = c;
 
     if (7 == j) {
@@ -209,7 +207,7 @@ base32_decode(char *dst, size_t size, const void *data, size_t len)
       b[3] = ((s[4] & 1) << 7) | ((s[5] & 0x1f) << 2) | ((s[6] >> 3) & 0x03);
       b[4] = ((s[6] & 0x07) << 5) | (s[7] & 0x1f);
 
-      for (j = 0; j < ARRAY_LEN(b); j++) {
+      for (j = 0; j < LL_ARRAY_SIZE(b); j++) {
         if (q != end)
           *q = b[j];
         q++;
diff --git a/indra/llcommon/llerrorlegacy.h b/indra/llcommon/llerrorlegacy.h
index 8b8af4cc9da..143fe201807 100644
--- a/indra/llcommon/llerrorlegacy.h
+++ b/indra/llcommon/llerrorlegacy.h
@@ -53,6 +53,7 @@ const int LL_ERR_FILE_NOT_FOUND = -43;
 const int LL_ERR_FILE_EMPTY     = -44;
 const int LL_ERR_TCP_TIMEOUT    = -23016;
 const int LL_ERR_CIRCUIT_GONE   = -23017;
+const int LL_ERR_PRICE_MISMATCH = -23018;
 
 
 
diff --git a/indra/llcommon/llfindlocale.cpp b/indra/llcommon/llfindlocale.cpp
index a511d3ffede..505f5c540b5 100644
--- a/indra/llcommon/llfindlocale.cpp
+++ b/indra/llcommon/llfindlocale.cpp
@@ -417,10 +417,8 @@ static const IDToCode primary_to_code[] = {
 /*{LANG_WALON,      "wa"},*/
   {LANG_CHINESE,    "zh"},
 };
-static int num_primary_to_code =
-  sizeof(primary_to_code) / sizeof(*primary_to_code);
-static int num_both_to_code =
-  sizeof(both_to_code) / sizeof(*both_to_code);
+static int num_primary_to_code = LL_ARRAY_SIZE(primary_to_code);
+static int num_both_to_code = LL_ARRAY_SIZE(both_to_code);
 
 static const int
 lcid_to_fl(LCID lcid,
diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp
index 29f916bc464..a6de3d2d698 100644
--- a/indra/llcommon/llmemory.cpp
+++ b/indra/llcommon/llmemory.cpp
@@ -39,7 +39,7 @@
 # include <sys/types.h>
 # include <mach/task.h>
 # include <mach/mach_init.h>
-#elif defined(LL_LINUX)
+#elif LL_LINUX || LL_SOLARIS
 # include <unistd.h>
 #endif
 
@@ -389,6 +389,34 @@ U64 getCurrentRSS()
 	return rss;
 }
 
+#elif LL_SOLARIS
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#define _STRUCTURED_PROC 1
+#include <sys/procfs.h>
+
+U64 getCurrentRSS()
+{
+	char path [LL_MAX_PATH];	/* Flawfinder: ignore */ 
+
+	sprintf(path, "/proc/%d/psinfo", (int)getpid());
+	int proc_fd = -1;
+	if((proc_fd = open(path, O_RDONLY)) == -1){
+		llwarns << "LLmemory::getCurrentRSS() unable to open " << path << ". Returning 0 RSS!" << llendl;
+		return 0;
+	}
+	psinfo_t proc_psinfo;
+	if(read(proc_fd, &proc_psinfo, sizeof(psinfo_t)) != sizeof(psinfo_t)){
+		llwarns << "LLmemory::getCurrentRSS() Unable to read from " << path << ". Returning 0 RSS!" << llendl;
+		close(proc_fd);
+		return 0;
+	}
+
+	close(proc_fd);
+
+	return((U64)proc_psinfo.pr_rssize * 1024);
+}
 #else
 
 U64 getCurrentRSS()
diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
index 1ac2c9422b8..2e4fd4787a1 100644
--- a/indra/llcommon/llpreprocessor.h
+++ b/indra/llcommon/llpreprocessor.h
@@ -40,7 +40,16 @@
 #include <endian.h>
 #endif	//	LL_LINUX
 
-#if (defined(LL_WINDOWS) || (defined(LL_LINUX) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || (defined(LL_DARWIN) && defined(__LITTLE_ENDIAN__)))
+#if LL_SOLARIS
+#   ifdef  __sparc     // Since we're talking Solaris 10 and up, only 64 bit is supported.
+#      define LL_BIG_ENDIAN 1
+#      define LL_SOLARIS_ALIGNED_CPU 1     //  used to designate issues where SPARC alignment is addressed
+#      define LL_SOLARIS_NON_MESA_GL 1      //  The SPARC GL does not provide a MESA-based GL API
+#   endif
+#   include <sys/isa_defs.h> // ensure we know which end is up
+#endif // LL_SOLARIS
+
+#if (defined(LL_WINDOWS) || (defined(LL_LINUX) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || (defined(LL_DARWIN) && defined(__LITTLE_ENDIAN__)) || (defined(LL_SOLARIS) && defined(__i386)))
 #define LL_LITTLE_ENDIAN 1
 #else
 #define LL_BIG_ENDIAN 1
diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
index c6f9d3c7585..469e544b16f 100644
--- a/indra/llcommon/llprocessor.cpp
+++ b/indra/llcommon/llprocessor.cpp
@@ -279,7 +279,7 @@ bool CProcessor::AnalyzeIntelProcessor()
 
 	// Only override the brand if we have it in the lookup table.  We should
 	// already have a string here from GetCPUInfo().  JC
-	if (CPUInfo.uiBrandID < (sizeof(INTEL_BRAND)/sizeof(INTEL_BRAND[0])))
+	if ( CPUInfo.uiBrandID < LL_ARRAY_SIZE(INTEL_BRAND) )
 	{
 		strcpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID]);
 
@@ -1665,6 +1665,10 @@ const ProcessorInfo *CProcessor::GetCPUInfo()
 #elif LL_SOLARIS
 #include <kstat.h>
 
+#if defined(__i386)
+#include <sys/auxv.h>
+#endif
+
 // ======================
 // Class constructor:
 /////////////////////////
@@ -1778,6 +1782,37 @@ const ProcessorInfo *CProcessor::GetCPUInfo()
 
 	// DEBUG llinfo << "The system has " << ncpus << " CPUs with a clock rate of " <<  uqwFrequency << "MHz." << llendl;
 	
+#if defined (__i386)  //  we really don't care about the CPU extensions on SPARC but on x86...
+
+	// Now get cpu extensions
+
+	uint_t ui;
+
+	(void) getisax(&ui, 1);
+	
+	if(ui & AV_386_FPU)
+		CPUInfo._Ext.FPU_FloatingPointUnit = true;
+	if(ui & AV_386_CX8)
+		CPUInfo._Ext.CX8_COMPXCHG8B_Instruction = true;
+	if(ui & AV_386_MMX)
+		CPUInfo._Ext.MMX_MultimediaExtensions = true;
+	if(ui & AV_386_AMD_MMX)
+		CPUInfo._Ext.MMX_MultimediaExtensions = true;
+	if(ui & AV_386_FXSR)
+		CPUInfo._Ext.FXSR_FastStreamingSIMD_ExtensionsSaveRestore = true;
+	if(ui & AV_386_SSE)
+		 CPUInfo._Ext.SSE_StreamingSIMD_Extensions = true;
+	if(ui & AV_386_SSE2)
+		CPUInfo._Ext.SSE2_StreamingSIMD2_Extensions = true;
+/* Left these here since they may get used later
+	if(ui & AV_386_SSE3)
+		CPUInfo._Ext.... = true;
+	if(ui & AV_386_AMD_3DNow)
+		CPUInfo._Ext.... = true;
+	if(ui & AV_386_AMD_3DNowx)
+		CPUInfo._Ext.... = true;
+*/
+#endif
 	return (&CPUInfo);
 }
 
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index 8f6626b501d..d728221b54c 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -38,6 +38,13 @@
 #include <wchar.h>
 #endif
 
+#if LL_SOLARIS
+// stricmp and strnicmp do not exist on Solaris:
+#include <string.h>
+#define stricmp strcasecmp
+#define strnicmp strncasecmp
+#endif
+
 const char LL_UNKNOWN_CHAR = '?';
 
 #if LL_DARWIN || LL_LINUX || LL_SOLARIS
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index cf281e92e77..f68d86ff7cd 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -59,6 +59,17 @@
 #	include <sys/sysinfo.h>
 const char MEMINFO_FILE[] = "/proc/meminfo";
 const char CPUINFO_FILE[] = "/proc/cpuinfo";
+#elif LL_SOLARIS
+#	include <stdio.h>
+#	include <unistd.h>
+#	include <sys/utsname.h>
+#	define _STRUCTURED_PROC 1
+#	include <sys/procfs.h>
+#	include <sys/types.h>
+#	include <sys/stat.h>
+#	include <fcntl.h>
+#	include <errno.h>
+extern int errno;
 #endif
 
 
diff --git a/indra/llcommon/lltimer.h b/indra/llcommon/lltimer.h
index 452df2ee580..e2cf1c7689b 100644
--- a/indra/llcommon/lltimer.h
+++ b/indra/llcommon/lltimer.h
@@ -33,7 +33,7 @@
 #ifndef LL_TIMER_H					
 #define LL_TIMER_H
 
-#if LL_LINUX || LL_DARWIN
+#if LL_LINUX || LL_DARWIN || LL_SOLARIS
 #include <sys/time.h>
 #endif
 #include <limits.h>
diff --git a/indra/llcommon/stdtypes.h b/indra/llcommon/stdtypes.h
index 62fe7b98ff0..6b25b2d355d 100644
--- a/indra/llcommon/stdtypes.h
+++ b/indra/llcommon/stdtypes.h
@@ -105,6 +105,8 @@ typedef U32             		TPACKETID;
 
 typedef U8 LLPCode;
 
+#define	LL_ARRAY_SIZE( _kArray ) ( sizeof( (_kArray) ) / sizeof( _kArray[0] ) )
+
 #if LL_LINUX && __GNUC__ <= 2
 typedef int intptr_t;
 #endif
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 87d465fa813..bfa129ea1dc 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -1137,7 +1137,7 @@ file_extensions[] =
 	{ "dxt", IMG_CODEC_DXT },
 	{ "png", IMG_CODEC_PNG }
 };
-#define NUM_FILE_EXTENSIONS sizeof(file_extensions)/sizeof(file_extensions[0])
+#define NUM_FILE_EXTENSIONS LL_ARRAY_SIZE(file_extensions)
 
 static std::string find_file(std::string &name, S8 *codec)
 {
diff --git a/indra/llimage/llimagetga.cpp b/indra/llimage/llimagetga.cpp
index 6d03ccbf25b..a6721bfa0f9 100644
--- a/indra/llimage/llimagetga.cpp
+++ b/indra/llimage/llimagetga.cpp
@@ -105,7 +105,7 @@ LLImageTGA::LLImageTGA(const std::string& file_name)
 
 LLImageTGA::~LLImageTGA()
 {
-	delete mColorMap;
+	delete [] mColorMap;
 }
 
 BOOL LLImageTGA::updateData()
diff --git a/indra/llinventory/lleconomy.cpp b/indra/llinventory/lleconomy.cpp
index ad37c0c27a1..4366d1eb2a0 100644
--- a/indra/llinventory/lleconomy.cpp
+++ b/indra/llinventory/lleconomy.cpp
@@ -74,6 +74,18 @@ void LLGlobalEconomy::processEconomyData(LLMessageSystem *msg, LLGlobalEconomy*
 	econ_data->setPricePublicObjectDelete(i);
 	msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceUpload, i);
 	econ_data->setPriceUpload(i);
+#if LL_LINUX
+	// We can optionally fake the received upload price for testing.
+	// Note that the server is within its rights to not obey our fake
+	// price. :)
+	const char* fakeprice_str = getenv("LL_FAKE_UPLOAD_PRICE");
+	if (fakeprice_str)
+	{
+		S32 fakeprice = (S32)atoi(fakeprice_str);
+		llwarns << "LL_FAKE_UPLOAD_PRICE: Faking upload price as L$" << fakeprice << llendl;
+		econ_data->setPriceUpload(fakeprice);
+	}
+#endif
 	msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceRentLight, i);
 	econ_data->setPriceRentLight(i);
 	msg->getS32Fast(_PREHASH_Info, _PREHASH_TeleportMinPrice, i);
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 7d01ba059c8..1250f539f52 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -1973,34 +1973,29 @@ inline LLVector3 sculpt_xy_to_vector(U32 x, U32 y, U16 sculpt_width, U16 sculpt_
 }
 
 
-F32 LLVolume::sculptGetSurfaceArea(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data)
+F32 LLVolume::sculptGetSurfaceArea()
 {
 	// test to see if image has enough variation to create non-degenerate geometry
 
+	F32 area = 0;
+
 	S32 sizeS = mPathp->mPath.size();
 	S32 sizeT = mProfilep->mProfile.size();
-
-	F32 area = 0;
-	
-	if ((sculpt_width != 0) &&
-		(sculpt_height != 0) &&
-		(sculpt_components != 0) &&
-		(sculpt_data != NULL))
+			
+	for (S32 s = 0; s < sizeS-1; s++)
 	{
-		for (S32 s = 0; s < sizeS - 1; s++)
+		for (S32 t = 0; t < sizeT-1; t++)
 		{
-			for (S32 t = 0; t < sizeT - 1; t++)
-			{
-				// convert image data to vectors
-				LLVector3 p1 = sculpt_st_to_vector(s, t, sizeS, sizeT, sculpt_width, sculpt_height, sculpt_components, sculpt_data);
-				LLVector3 p2 = sculpt_st_to_vector(s+1, t, sizeS, sizeT, sculpt_width, sculpt_height, sculpt_components, sculpt_data);
-				LLVector3 p3 = sculpt_st_to_vector(s, t+1, sizeS, sizeT, sculpt_width, sculpt_height, sculpt_components, sculpt_data);
-
-				// compute the area of the parallelogram by taking the length of the cross product:
-				// (parallegram is an approximation of two triangles)
-				LLVector3 cross = (p1 - p2) % (p1 - p3);
-				area += cross.magVec();
-			}
+			// get four corners of quad
+			LLVector3 p1 = mMesh[(s  )*sizeT + (t  )].mPos;
+			LLVector3 p2 = mMesh[(s+1)*sizeT + (t  )].mPos;
+			LLVector3 p3 = mMesh[(s  )*sizeT + (t+1)].mPos;
+			LLVector3 p4 = mMesh[(s+1)*sizeT + (t+1)].mPos;
+
+			// compute the area of the quad by taking the length of the cross product of the two triangles
+			LLVector3 cross1 = (p1 - p2) % (p1 - p3);
+			LLVector3 cross2 = (p4 - p2) % (p4 - p3);
+			area += (cross1.magVec() + cross2.magVec()) / 2.0;
 		}
 	}
 
@@ -2164,7 +2159,21 @@ S32 sculpt_sides(F32 detail)
 // determine the number of vertices in both s and t direction for this sculpt
 void sculpt_calc_mesh_resolution(U16 width, U16 height, U8 type, F32 detail, S32& s, S32& t)
 {
-	S32 vertices = sculpt_sides(detail);
+	// this code has the following properties:
+	// 1) the aspect ratio of the mesh is as close as possible to the ratio of the map
+	//    while still using all available verts
+	// 2) the mesh cannot have more verts than is allowed by LOD
+	// 3) the mesh cannot have more verts than is allowed by the map
+	
+	S32 max_vertices_lod = (S32)pow((double)sculpt_sides(detail), 2.0);
+	S32 max_vertices_map = width * height / 4;
+	
+	S32 vertices;
+	if (max_vertices_map > 0)
+		vertices = llmin(max_vertices_lod, max_vertices_map);
+	else
+		vertices = max_vertices_lod;
+	
 
 	F32 ratio;
 	if ((width == 0) || (height == 0))
@@ -2173,13 +2182,13 @@ void sculpt_calc_mesh_resolution(U16 width, U16 height, U8 type, F32 detail, S32
 		ratio = (F32) width / (F32) height;
 
 	
-	s = (S32)(vertices / fsqrtf(ratio));
+	s = (S32)fsqrtf(((F32)vertices / ratio));
 
-	s = llmax(s, 3);   // no degenerate sizes, please
-	t = vertices * vertices / s;
+	s = llmax(s, 4);              // no degenerate sizes, please
+	t = vertices / s;
 
-	t = llmax(t, 3);   // no degenerate sizes, please
-	s = vertices * vertices / t;
+	t = llmax(t, 4);              // no degenerate sizes, please
+	s = vertices / t;
 }
 
 // sculpt replaces generate() for sculpted surfaces
@@ -2216,20 +2225,25 @@ void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components,
 	sNumMeshPoints -= mMesh.size();
 	mMesh.resize(sizeS * sizeT);
 	sNumMeshPoints += mMesh.size();
-	
-	if (!data_is_empty && sculptGetSurfaceArea(sculpt_width, sculpt_height, sculpt_components, sculpt_data) < SCULPT_MIN_AREA)
-		data_is_empty = TRUE;
 
 	//generate vertex positions
-	if (data_is_empty) // if empty, make a placeholder mesh
-	{
-		sculptGeneratePlaceholder();
-	}	
-	else
+	if (!data_is_empty)
 	{
 		sculptGenerateMapVertices(sculpt_width, sculpt_height, sculpt_components, sculpt_data, sculpt_type);
+		
+		if (sculptGetSurfaceArea() < SCULPT_MIN_AREA)
+		{
+			data_is_empty = TRUE;
+		}
 	}
 
+	if (data_is_empty)
+	{
+		sculptGeneratePlaceholder();
+	}
+
+
+	
 	for (S32 i = 0; i < (S32)mProfilep->mFaces.size(); i++)
 	{
 		mFaceMask |= mProfilep->mFaces[i].mFaceID;
diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h
index ab30d78333d..e55fe52c91e 100644
--- a/indra/llmath/llvolume.h
+++ b/indra/llmath/llvolume.h
@@ -943,8 +943,8 @@ class LLVolume : public LLRefCount
 	
 	void sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level);
 private:
-	F32 sculptGetSurfaceArea(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data);
 	void sculptGenerateMapVertices(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, U8 sculpt_type);
+	F32 sculptGetSurfaceArea();
 	void sculptGeneratePlaceholder();
 	void sculptCalcMeshResolution(U16 width, U16 height, U8 type, S32& s, S32& t);
 
diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp
index 4d10f1e3dad..2966b602d75 100644
--- a/indra/llmessage/llassetstorage.cpp
+++ b/indra/llmessage/llassetstorage.cpp
@@ -1210,6 +1210,9 @@ const char* LLAssetStorage::getErrorString(S32 status)
 	case LL_ERR_CIRCUIT_GONE:
 		return "Circuit gone";
 
+	case LL_ERR_PRICE_MISMATCH:
+		return "Viewer and server do not agree on price";
+
 	default:
 		return "Unknown status";
 	}
diff --git a/indra/llmessage/llinstantmessage.h b/indra/llmessage/llinstantmessage.h
index 774349036d3..96a2cf9cabe 100644
--- a/indra/llmessage/llinstantmessage.h
+++ b/indra/llmessage/llinstantmessage.h
@@ -159,7 +159,7 @@ enum EInstantMessage
 
 	IM_FRIENDSHIP_OFFERED = 38,
 	IM_FRIENDSHIP_ACCEPTED = 39,
-	IM_FRIENDSHIP_DECLINED = 40,
+	IM_FRIENDSHIP_DECLINED_DEPRECATED = 40,
 
 	IM_TYPING_START = 41,
 	IM_TYPING_STOP = 42,
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 01df71c570f..74313974c96 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -65,7 +65,7 @@ LLMatrix4 gGLObliqueProjectionInverse;
 
 LLGLNamePool::pool_list_t LLGLNamePool::sInstances;
 
-#if (LL_WINDOWS || LL_LINUX) && !LL_MESA_HEADLESS
+#if (LL_WINDOWS || LL_LINUX || LL_SOLARIS)  && !LL_MESA_HEADLESS
 // ATI prototypes
 // vertex blending prototypes
 PFNGLWEIGHTPOINTERARBPROC			glWeightPointerARB = NULL;
@@ -175,7 +175,7 @@ PFNGLGETUNIFORMIVARBPROC glGetUniformivARB = NULL;
 PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB = NULL;
 
 // vertex shader prototypes
-#if LL_LINUX
+#if LL_LINUX || LL_SOLARIS
 PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB = NULL;
 PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB = NULL;
 PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB = NULL;
@@ -194,7 +194,7 @@ PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB = NULL;
 PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB = NULL;
 PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB = NULL;
 PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB = NULL;
-#endif // LL_LINUX
+#endif // LL_LINUX || LL_SOLARIS
 PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB = NULL;
 PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB = NULL;
 PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB = NULL;
@@ -202,7 +202,7 @@ PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB = NULL;
 PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB = NULL;
 PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB = NULL;
 PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB = NULL;
-#if LL_LINUX
+#if LL_LINUX  || LL_SOLARIS
 PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB = NULL;
 PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB = NULL;
 PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB = NULL;
@@ -240,7 +240,7 @@ PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB = NULL;
 PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB = NULL;
 PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB = NULL;
 PFNGLISPROGRAMARBPROC glIsProgramARB = NULL;
-#endif // LL_LINUX
+#endif // LL_LINUX || LL_SOLARIS
 PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB = NULL;
 PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB = NULL;
 PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB = NULL;
@@ -249,10 +249,6 @@ PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB = NULL;
 PFNWGLSWAPINTERVALEXTPROC			wglSwapIntervalEXT = NULL;
 #endif
 
-#if LL_LINUX
-PFNGLCOLORTABLEEXTPROC glColorTableEXT = NULL;
-#endif // LL_LINUX
-
 #endif
 
 LLGLManager gGLManager;
@@ -490,7 +486,7 @@ std::string LLGLManager::getGLInfoString()
 	info_str += std::string("GL_RENDERER    ") + ll_safe_string((const char *)glGetString(GL_RENDERER)) + std::string("\n");
 	info_str += std::string("GL_VERSION     ") + ll_safe_string((const char *)glGetString(GL_VERSION)) + std::string("\n");
 
-#if !LL_MESA_HEADLESS
+#if !LL_MESA_HEADLESS 
 	all_exts = (const char *)gGLHExts.mSysExts;
 	LLStringUtil::replaceChar(all_exts, ' ', '\n');
 	info_str += std::string("GL_EXTENSIONS:\n") + all_exts + std::string("\n");
@@ -597,7 +593,8 @@ void LLGLManager::initExtensions()
 	mHasFragmentShader = ExtensionExists("GL_ARB_fragment_shader", gGLHExts.mSysExts) && ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts);
 #endif
 
-#if LL_LINUX
+#if LL_LINUX || LL_SOLARIS
+	llinfos << "initExtensions() checking shell variables to adjust features..." << llendl;
 	// Our extension support for the Linux Client is very young with some
 	// potential driver gotchas, so offer a semi-secret way to turn it off.
 	if (getenv("LL_GL_NOEXT"))	/* Flawfinder: ignore */
@@ -657,7 +654,7 @@ void LLGLManager::initExtensions()
 		if (strchr(blacklist,'p')) mHasPointParameters = FALSE;//S
 		if (strchr(blacklist,'q')) mHasFramebufferObject = FALSE;//S
 	}
-#endif // LL_LINUX
+#endif // LL_LINUX || LL_SOLARIS
 	
 	if (!mHasMultitexture)
 	{
@@ -720,7 +717,7 @@ void LLGLManager::initExtensions()
 	glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, (GLint*) &mGLMaxVertexRange);
 	glGetIntegerv(GL_MAX_ELEMENTS_INDICES, (GLint*) &mGLMaxIndexRange);
 	
-#if (LL_WINDOWS || LL_LINUX) && !LL_MESA_HEADLESS
+#if (LL_WINDOWS || LL_LINUX || LL_SOLARIS) && !LL_MESA_HEADLESS
 	LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL;
 	if (mHasVertexBufferObject)
 	{
@@ -745,6 +742,7 @@ void LLGLManager::initExtensions()
 	}
 	if (mHasFramebufferObject)
 	{
+		llinfos << "initExtensions() FramebufferObject-related procs..." << llendl;
 		glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glIsRenderbufferEXT");
 		glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glBindRenderbufferEXT");
 		glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteRenderbuffersEXT");
@@ -763,7 +761,7 @@ void LLGLManager::initExtensions()
 		glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGetFramebufferAttachmentParameterivEXT");
 		glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGenerateMipmapEXT");
 	}
-#if !LL_LINUX
+#if !LL_LINUX && !LL_SOLARIS
 	// This is expected to be a static symbol on Linux GL implementations
 	glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements");
 	if (!glDrawRangeElements)
@@ -775,6 +773,7 @@ void LLGLManager::initExtensions()
 
 	if (mHasOcclusionQuery)
 	{
+		llinfos << "initExtensions() OcclusionQuery-related procs..." << llendl;
 		glGenQueriesARB = (PFNGLGENQUERIESARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGenQueriesARB");
 		glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteQueriesARB");
 		glIsQueryARB = (PFNGLISQUERYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glIsQueryARB");
@@ -786,6 +785,7 @@ void LLGLManager::initExtensions()
 	}
 	if (mHasPointParameters)
 	{
+		llinfos << "initExtensions() PointParameters-related procs..." << llendl;
 		glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfARB");
 		glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfvARB");
 	}
@@ -833,6 +833,7 @@ void LLGLManager::initExtensions()
 	}
 	if (mHasVertexShader)
 	{
+		llinfos << "initExtensions() VertexShader-related procs..." << llendl;
 		glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetAttribLocationARB");
 		glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glBindAttribLocationARB");
 		glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetActiveAttribARB");
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index 9c72c179f74..e9a9ad1a772 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -33,11 +33,215 @@
 #ifndef LL_LLGLHEADERS_H
 #define LL_LLGLHEADERS_H
 
-#if LL_MESA
+#if LL_SOLARIS
+#   if defined(__sparc)
+#      define I_NEED_OS2_H 	//  avoiding BOOL conflicts
+#   endif
+#   include "GL/gl.h"
+#   if defined(__sparc)
+#      undef I_NEED_OS2_H
+#      ifdef BOOL
+#         undef BOOL		// now get rid of Xmd.h crap
+#      endif
+#   endif
+#   include "GL/glx.h"
+#   define  GL_GLEXT_PROTOTYPES 1
+#   include "GL/glext.h"
+#   include "GL/glu.h"
+#   include "GL/glx.h"
+#   define  GLX_GLXEXT_PROTOTYPES 1
+#   include "GL/glxext.h"
+//#   define  GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB((const GLubyte*)(p))
+#   define  GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddress((const GLubyte*)(p))
+//  the X headers define 'Status'.  Undefine to avoid confusion.
+#undef Status
+
+// The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly
+// This header is distributed with SL.  You'll find it in linden/libraries/include/GL/
+# define __APPLE__
+# include "GL/glh_extensions.h"
+# undef __APPLE__
+
+
+// GL_ARB_vertex_buffer_object
+extern PFNGLBINDBUFFERARBPROC		glBindBufferARB;
+extern PFNGLDELETEBUFFERSARBPROC	glDeleteBuffersARB;
+extern PFNGLGENBUFFERSARBPROC		glGenBuffersARB;
+extern PFNGLISBUFFERARBPROC			glIsBufferARB;
+extern PFNGLBUFFERDATAARBPROC		glBufferDataARB;
+extern PFNGLBUFFERSUBDATAARBPROC	glBufferSubDataARB;
+extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB;
+extern PFNGLMAPBUFFERARBPROC		glMapBufferARB;
+extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB;
+extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB;
+extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB;
+
+// GL_ATI_vertex_array_object
+extern PFNGLNEWOBJECTBUFFERATIPROC			glNewObjectBufferATI;
+extern PFNGLISOBJECTBUFFERATIPROC			glIsObjectBufferATI;
+extern PFNGLUPDATEOBJECTBUFFERATIPROC		glUpdateObjectBufferATI;
+extern PFNGLGETOBJECTBUFFERFVATIPROC		glGetObjectBufferfvATI;
+extern PFNGLGETOBJECTBUFFERIVATIPROC		glGetObjectBufferivATI;
+extern PFNGLFREEOBJECTBUFFERATIPROC		    glFreeObjectBufferATI;
+extern PFNGLARRAYOBJECTATIPROC				glArrayObjectATI;
+extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC	glVertexAttribArrayObjectATI;
+extern PFNGLGETARRAYOBJECTFVATIPROC			glGetArrayObjectfvATI;
+extern PFNGLGETARRAYOBJECTIVATIPROC			glGetArrayObjectivATI;
+extern PFNGLVARIANTARRAYOBJECTATIPROC		glVariantObjectArrayATI;
+extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC	glGetVariantArrayObjectfvATI;
+extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC	glGetVariantArrayObjectivATI;
+
+// GL_ARB_occlusion_query
+extern PFNGLGENQUERIESARBPROC glGenQueriesARB;
+extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB;
+extern PFNGLISQUERYARBPROC glIsQueryARB;
+extern PFNGLBEGINQUERYARBPROC glBeginQueryARB;
+extern PFNGLENDQUERYARBPROC glEndQueryARB;
+extern PFNGLGETQUERYIVARBPROC glGetQueryivARB;
+extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB;
+extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB;
+
+// GL_ARB_point_parameters
+extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB;
+extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB;
+
+// GL_ARB_shader_objects
+extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
+extern PFNGLGETHANDLEARBPROC glGetHandleARB;
+extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
+extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
+extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
+extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
+extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
+extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
+extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
+extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
+extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB;
+extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
+extern PFNGLUNIFORM2FARBPROC glUniform2fARB;
+extern PFNGLUNIFORM3FARBPROC glUniform3fARB;
+extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
+extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
+extern PFNGLUNIFORM2IARBPROC glUniform2iARB;
+extern PFNGLUNIFORM3IARBPROC glUniform3iARB;
+extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
+extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
+extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
+extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
+extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
+extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
+extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
+extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
+extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
+extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB;
+extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB;
+extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB;
+extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB;
+extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
+extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
+extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB;
+extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
+extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB;
+extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB;
+extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB;
+extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB;
+
+// GL_ARB_vertex_shader
+extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB;
+extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB;
+extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB;
+extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB;
+extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB;
+extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB;
+extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB;
+extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB;
+extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB;
+extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB;
+extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB;
+extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB;
+extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB;
+extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB;
+extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB;
+extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB;
+extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB;
+extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB;
+extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB;
+extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB;
+extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB;
+extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB;
+extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB;
+extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB;
+extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB;
+extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB;
+extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB;
+extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB;
+extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB;
+extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
+extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB;
+extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB;
+extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB;
+extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB;
+extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB;
+extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB;
+extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
+extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
+extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
+extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB;
+extern PFNGLBINDPROGRAMARBPROC glBindProgramARB;
+extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB;
+extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB;
+extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB;
+extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB;
+extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB;
+extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB;
+extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB;
+extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB;
+extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB;
+extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB;
+extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB;
+extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB;
+extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB;
+extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB;
+extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB;
+extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB;
+extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB;
+extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB;
+extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB;
+extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB;
+extern PFNGLISPROGRAMARBPROC glIsProgramARB;
+extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
+extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
+extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
+
+extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB;
+extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB;
+
+extern PFNGLCOLORTABLEEXTPROC glColorTableEXT;
+
+//GL_EXT_framebuffer_object
+extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT;
+extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
+extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT;
+extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT;
+extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT;
+extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT;
+extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT;
+extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
+extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
+extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
+extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
+extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT;
+extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
+extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT;
+extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT;
+extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT;
+extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT;
+
+#elif LL_MESA
 //----------------------------------------------------------------------------
 // MESA headers
 // quotes so we get libraries/.../GL/ version
-#define GL_GLEXT_PROTOTYPES
+#define GL_GLEXT_PROTOTYPES 1
 #include "GL/gl.h"
 #include "GL/glext.h"
 #include "GL/glu.h"
@@ -47,7 +251,7 @@
 # include "GL/glh_extensions.h"
 # undef __APPLE__
 
-#elif LL_LINUX
+#elif LL_LINUX 
 //----------------------------------------------------------------------------
 // Linux, MESA headers, but not necessarily assuming MESA runtime.
 // quotes so we get libraries/.../GL/ version
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 91c6a4ee352..1286e91e49c 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -364,7 +364,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 
 
 	//copy file into memory
-	while(fgets((char *)buff, 1024, file) != NULL && count < (sizeof(buff)/sizeof(buff[0]))) 
+	while( fgets((char *)buff, 1024, file) != NULL && count < LL_ARRAY_SIZE(buff) ) 
 	{
 		text[count++] = (GLcharARB *)strdup((char *)buff); 
 	}
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 1b4d4e7d54c..8ae0137a5e2 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -68,6 +68,7 @@ set(llui_SOURCE_FILES
     lluictrl.cpp
     lluictrlfactory.cpp
     lluistring.cpp
+    lluitrans.cpp
     llundo.cpp
     llviewborder.cpp
     llview.cpp
@@ -124,6 +125,7 @@ set(llui_HEADER_FILES
     lluifwd.h
     llui.h
     lluistring.h
+    lluitrans.h
     lluixmltags.h
     llundo.h
     llviewborder.h
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index c4e928ce557..3d92280828f 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -780,7 +780,7 @@ void LLFloater::snappedTo(const LLView* snap_view)
 
 void LLFloater::userSetShape(const LLRect& new_rect)
 {
-	const LLRect& old_rect = getRect();
+	const LLRect old_rect = getRect();
 	LLView::userSetShape(new_rect);
 
 	// if not minimized, adjust all snapped dependents to new shape
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index ad980d67fcb..64649b664c5 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -59,6 +59,8 @@
 #include "llresmgr.h"
 #include "llui.h"
 
+#include "lluitrans.h"
+
 #include "llstl.h"
 
 #include "v2math.h"
@@ -267,24 +269,24 @@ void LLMenuItemGL::appendAcceleratorString( std::string& st ) const
 	{
 		if ( mAcceleratorMask & MASK_MAC_CONTROL )
 		{
-			st.append( "Ctrl-" );
+			st.append( LLUITrans::getString("accel-mac-control") );
 		}
 		else
 		{
-			st.append( "Cmd-" );		// Symbol would be "\xE2\x8C\x98"
+			st.append( LLUITrans::getString("accel-mac-command") );		// Symbol would be "\xE2\x8C\x98"
 		}
 	}
 	if( mAcceleratorMask & MASK_ALT )
-		st.append( "Opt-" );		// Symbol would be "\xE2\x8C\xA5"
+		st.append( LLUITrans::getString("accel-mac-option") );		// Symbol would be "\xE2\x8C\xA5"
 	if( mAcceleratorMask & MASK_SHIFT )
-		st.append( "Shift-" );		// Symbol would be "\xE2\x8C\xA7"
+		st.append( LLUITrans::getString("accel-mac-shift") );		// Symbol would be "\xE2\x8C\xA7"
 #else
 	if( mAcceleratorMask & MASK_CONTROL )
-		st.append( "Ctrl-" );
+		st.append( LLUITrans::getString("accel-win-control") );
 	if( mAcceleratorMask & MASK_ALT )
-		st.append( "Alt-" );
+		st.append( LLUITrans::getString("accel-win-alt") );
 	if( mAcceleratorMask & MASK_SHIFT )
-		st.append( "Shift-" );
+		st.append( LLUITrans::getString("accel-win-shift") );
 #endif
 
 	std::string keystr = LLKeyboard::stringFromKey( mAcceleratorKey );
diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h
index 424cda12075..dfd0eb3ac1a 100644
--- a/indra/llui/llspinctrl.h
+++ b/indra/llui/llspinctrl.h
@@ -82,6 +82,7 @@ class LLSpinCtrl
 	virtual void	setFocus( BOOL b );
 	virtual void	clear();
 	virtual BOOL	isDirty() const { return( mValue != mInitialValue ); }
+	virtual void    resetDirty() { mInitialValue = mValue; }
 
 	virtual void	setPrecision(S32 precision);
 	virtual void	setMinValue(F32 min)			{ mMinValue = min; }
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 3ad42709298..a626a7a1bc1 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -1322,6 +1322,8 @@ BOOL LLTextEditor::handleMouseUp(S32 x, S32 y, MASK mask)
 			
 			setCursorAtLocalPos( x, y, TRUE );
 			endSelection();
+
+			updateScrollFromCursor();
 		}
 		
 		if( !hasSelection() )
diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp
index 07e7a93f9f8..d6a6eca3415 100644
--- a/indra/llvfs/lldir.cpp
+++ b/indra/llvfs/lldir.cpp
@@ -433,7 +433,7 @@ std::string LLDir::getExpandedFilename(ELLPath location, const std::string& subd
 		expanded_filename.assign("");
 	}
 
-	//llinfos << "*** EXPANDED FILENAME: <" << mExpandedFilename << ">" << llendl;
+	//llinfos << "*** EXPANDED FILENAME: <" << expanded_filename << ">" << llendl;
 
 	return expanded_filename;
 }
@@ -661,6 +661,11 @@ void LLDir::dumpCurrentDirectories()
 	LL_DEBUGS2("AppInit","Directories") << "  TempDir:               " << getTempDir() << LL_ENDL;
 	LL_DEBUGS2("AppInit","Directories") << "  CAFile:				 " << getCAFile() << LL_ENDL;
 	LL_DEBUGS2("AppInit","Directories") << "  SkinDir:               " << getSkinDir() << LL_ENDL;
+
+#if LL_LIBXUL_ENABLED
+ 	LL_DEBUGS2("AppInit","Directories") << "  HTML Path:             " << getExpandedFilename( LL_PATH_HTML, "" ) << llendl;
+ 	LL_DEBUGS2("AppInit","Directories") << "  Mozilla Profile Path:  " << getExpandedFilename( LL_PATH_MOZILLA_PROFILE, "" ) << llendl;
+#endif
 }
 
 
diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h
index 2bdc0ced002..760b6512a54 100644
--- a/indra/llvfs/lldir.h
+++ b/indra/llvfs/lldir.h
@@ -33,6 +33,11 @@
 #ifndef LL_LLDIR_H
 #define LL_LLDIR_H
 
+#if LL_SOLARIS
+#include <sys/param.h>
+#define MAX_PATH MAXPATHLEN
+#endif
+
 // these numbers *may* get serialized, so we need to be explicit
 typedef enum ELLPath
 {
diff --git a/indra/llvfs/lldir_solaris.cpp b/indra/llvfs/lldir_solaris.cpp
index 49e2d3e6c5f..9553d923aaa 100644
--- a/indra/llvfs/lldir_solaris.cpp
+++ b/indra/llvfs/lldir_solaris.cpp
@@ -37,14 +37,13 @@
 #include "llrand.h"
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/param.h>
 #include <unistd.h>
 #include <glob.h>
 #include <pwd.h>
 #include <sys/utsname.h>
 #define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
+#include <fcntl.h>
 
 static std::string getCurrentUserHome(char* fallback)
 {
@@ -83,7 +82,16 @@ LLDir_Solaris::LLDir_Solaris()
 	mDirp = NULL;
 
 	char tmp_str[LL_MAX_PATH];	/* Flawfinder: ignore */ 
-	getcwd(tmp_str, LL_MAX_PATH);
+	if (getcwd(tmp_str, LL_MAX_PATH) == NULL)
+	{
+		strcpy(tmp_str, "/tmp");
+		llwarns << "Could not get current directory; changing to "
+				<< tmp_str << llendl;
+		if (chdir(tmp_str) == -1)
+		{
+			llerrs << "Could not change directory to " << tmp_str << llendl;
+		}
+	}
 
 	mExecutableFilename = "";
 	mExecutablePathAndName = "";
@@ -122,20 +130,35 @@ LLDir_Solaris::LLDir_Solaris()
 		return;
 	}
 
+	char *p = execpath;			// nuke trash in link, if any exists
+	int i = 0;
+	while(*p != NULL && ++i < LL_MAX_PATH && isprint((int)(*p++)));
+	*p = NULL;
+
 	mExecutablePathAndName = strdup(execpath);
 	llinfos << "mExecutablePathAndName = [" << mExecutablePathAndName << "]" << llendl;
 
+	//NOTE: Why force people to cd into the package directory?
+	//      Look for SECONDLIFE env variable and use it, if set.
+
+	char *dcf = getenv("SECONDLIFE");
+	if(dcf != NULL){
+		(void)strcpy(path, dcf);
+		(void)strcat(path, "/bin");	//NOTE:  make sure we point at the bin
+		mExecutableDir = strdup(path);
+	}else{
 			// plunk a null at last '/' to get exec dir
-	char *s = execpath + strlen(execpath) -1;
-	while(*s != '/' && s != execpath){
-		--s;
-	}
+		char *s = execpath + strlen(execpath) -1;
+		while(*s != '/' && s != execpath){
+			--s;
+		}
 	
-	if(s != execpath){
-		*s = (char)NULL;
+		if(s != execpath){
+			*s = (char)NULL;
 	
-		mExecutableDir = strdup(execpath);
-		llinfos << "mExecutableDir = [" << mExecutableDir << "]" << llendl;
+			mExecutableDir = strdup(execpath);
+			llinfos << "mExecutableDir = [" << mExecutableDir << "]" << llendl;
+		}
 	}
 	
 	// *TODO: don't use /tmp, use $HOME/.secondlife/tmp or something.
@@ -355,12 +378,16 @@ void LLDir_Solaris::getRandomFileInDir(const std::string &dirname, const std::st
 std::string LLDir_Solaris::getCurPath()
 {
 	char tmp_str[LL_MAX_PATH];	/* Flawfinder: ignore */ 
-	getcwd(tmp_str, LL_MAX_PATH);
+	if (getcwd(tmp_str, LL_MAX_PATH) == NULL)
+	{
+		llwarns << "Could not get current directory" << llendl;
+		tmp_str[0] = '\0';
+	}
 	return tmp_str;
 }
 
 
-BOOL LLDir_Solaris::fileExists(const std::string &filename)
+BOOL LLDir_Solaris::fileExists(const std::string &filename) const
 {
 	struct stat stat_data;
 	// Check the age of the file
diff --git a/indra/llvfs/lldir_solaris.h b/indra/llvfs/lldir_solaris.h
index f6e7c3cba5e..139754ba28a 100644
--- a/indra/llvfs/lldir_solaris.h
+++ b/indra/llvfs/lldir_solaris.h
@@ -50,7 +50,7 @@ class LLDir_Solaris : public LLDir
 	virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
 	virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname, BOOL wrap);
 	virtual void getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
-	/*virtual*/ BOOL fileExists(const std::string &filename);
+	/*virtual*/ BOOL fileExists(const std::string &filename) const;
 
 private:
 	DIR *mDirp;
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 49fbb78d9d0..8d446f18f1b 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -702,7 +702,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 		"Radeon DDR",
 		"Radeon VE",
 		"GDI Generic" };
-		const S32 CARD_COUNT = sizeof(CARD_LIST)/sizeof(char*);
+		const S32 CARD_COUNT = LL_ARRAY_SIZE(CARD_LIST);
 
 		// Future candidates:
 		// ProSavage/Twister
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index bd38a60fa26..6b1b6f4d609 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -85,8 +85,6 @@ static bool ATIbug = false;
 // be only one object of this class at any time.  Currently this is true.
 static LLWindowSDL *gWindowImplementation = NULL;
 
-static BOOL was_fullscreen = FALSE;
-
 
 void maybe_lock_display(void)
 {
@@ -324,8 +322,7 @@ static int x11_detect_VRAM_kb_fp(FILE *fp, const char *prefix_str)
 
 static int x11_detect_VRAM_kb()
 {
-#if LL_SOLARIS
-#error Can this be done without an explicit architecture test, ie a test FOR xorg? Was followed by: && defined(__sparc)
+#if LL_SOLARIS && defined(__sparc)
       //  NOTE: there's no Xorg server on SPARC so just return 0
       //        and allow SDL to attempt to get the amount of VRAM
       return(0);
@@ -421,7 +418,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 	if (SDL_Init(SDL_INIT_VIDEO) < 0)
 	{
 		llinfos << "sdl_init() failed! " << SDL_GetError() << llendl;
-		setupFailure("window creation error", "error", OSMB_OK);
+		setupFailure("sdl_init() failure,  window creation error", "error", OSMB_OK);
 		return false;
 	}
 
@@ -442,7 +439,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 	if (!videoInfo)
 	{
 		llinfos << "SDL_GetVideoInfo() failed! " << SDL_GetError() << llendl;
-		setupFailure("Window creation error", "Error", OSMB_OK);
+		setupFailure("SDL_GetVideoInfo() failed, Window creation error", "Error", OSMB_OK);
 		return FALSE;
 	}
 
@@ -498,7 +495,6 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
         // *FIX: try to toggle vsync here?
 
 	mFullscreen = fullscreen;
-	was_fullscreen = fullscreen;
 
 	int sdlflags = SDL_OPENGL | SDL_RESIZABLE | SDL_ANYFORMAT;
 
@@ -574,7 +570,6 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 		if (mWindow)
 		{
 			mFullscreen = TRUE;
-			was_fullscreen = TRUE;
 			mFullscreenWidth   = mWindow->w;
 			mFullscreenHeight  = mWindow->h;
 			mFullscreenBits    = mWindow->format->BitsPerPixel;
@@ -591,7 +586,6 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 			llwarns << "createContext: fullscreen creation failure. SDL: " << SDL_GetError() << llendl;
 			// No fullscreen support
 			mFullscreen = FALSE;
-			was_fullscreen = FALSE;
 			mFullscreenWidth   = -1;
 			mFullscreenHeight  = -1;
 			mFullscreenBits    = -1;
@@ -673,8 +667,8 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 	// fixme: actually, it's REALLY important for picking that we get at
 	// least 8 bits each of red,green,blue.  Alpha we can be a bit more
 	// relaxed about if we have to.
-#if LL_SOLARIS
-#error && defined(__sparc)
+#if LL_SOLARIS && defined(__sparc)
+//  again the __sparc required because Xsun support, 32bit are very pricey on SPARC
 	if(colorBits < 24)		//HACK:  on SPARC allow 24-bit color
 #else
 	if (colorBits < 32)
@@ -682,8 +676,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
 	{
 		close();
 		setupFailure(
-#if LL_SOLARIS
-#error && defined(__sparc)
+#if LL_SOLARIS && defined(__sparc)
 			"Second Life requires at least 24-bit color on SPARC to run in a window.\n"
 			"Please use fbconfig to set your default color depth to 24 bits.\n"
 			"You may also need to adjust the X11 setting in SMF.  To do so use\n"
@@ -927,7 +920,6 @@ BOOL LLWindowSDL::getSize(LLCoordScreen *size)
 	return (TRUE);
     }
 
-    llwarns << "LLWindowSDL::getPosition(): no window and not fullscreen!" << llendl;
     return (FALSE);
 }
 
@@ -940,7 +932,6 @@ BOOL LLWindowSDL::getSize(LLCoordWindow *size)
 	return (TRUE);
     }
 
-    llwarns << "LLWindowSDL::getPosition(): no window and not fullscreen!" << llendl;
     return (FALSE);
 }
 
@@ -959,11 +950,18 @@ BOOL LLWindowSDL::setSize(const LLCoordScreen size)
 {
 	if(mWindow)
 	{
-        // *FIX: (???)
-		//SizeWindow(mWindow, size.mX, size.mY, true);
-	}
+		// Push a resize event onto SDL's queue - we'll handle it
+		// when it comes out again.
+		SDL_Event event;
+		event.type = SDL_VIDEORESIZE;
+		event.resize.w = size.mX;
+		event.resize.h = size.mY;
+		SDL_PushEvent(&event); // copied into queue
 
-	return TRUE;
+		return TRUE;
+	}
+		
+	return FALSE;
 }
 
 void LLWindowSDL::swapBuffers()
@@ -1107,24 +1105,28 @@ F32 LLWindowSDL::getPixelAspectRatio()
 }
 
 
-// some of this stuff is to support 'temporarily windowed' mode so that
-// dialogs are still usable in fullscreen.  HOWEVER! - it's not enabled/working
-// yet.
-static LLCoordScreen old_size;
-static BOOL old_fullscreen;
+// This is to support 'temporarily windowed' mode so that
+// dialogs are still usable in fullscreen.
 void LLWindowSDL::beforeDialog()
 {
+	bool running_x11 = false;
+#if LL_X11
+	running_x11 = (mSDL_XWindowID != None);
+#endif //LL_X11
+
 	llinfos << "LLWindowSDL::beforeDialog()" << llendl;
 
-	if (SDLReallyCaptureInput(FALSE) // must ungrab input so popup works!
-	    && getSize(&old_size))
+	if (SDLReallyCaptureInput(FALSE)) // must ungrab input so popup works!
 	{
-		old_fullscreen = was_fullscreen;
-		
-		if (old_fullscreen)
+		if (mFullscreen)
 		{
-			// NOT YET WORKING
-			//switchContext(FALSE, old_size, TRUE);
+			// need to temporarily go non-fullscreen; bless SDL
+			// for providing a SDL_WM_ToggleFullScreen() - though
+			// it only works in X11
+			if (running_x11 && mWindow)
+			{
+				SDL_WM_ToggleFullScreen(mWindow);
+			}
 		}
 	}
 
@@ -1150,17 +1152,24 @@ void LLWindowSDL::beforeDialog()
 
 void LLWindowSDL::afterDialog()
 {
+	bool running_x11 = false;
+#if LL_X11
+	running_x11 = (mSDL_XWindowID != None);
+#endif //LL_X11
+
 	llinfos << "LLWindowSDL::afterDialog()" << llendl;
 
 	maybe_unlock_display();
 
-	if (old_fullscreen && !was_fullscreen)
+	if (mFullscreen)
 	{
-		// *FIX: NOT YET WORKING (see below)
-		//switchContext(TRUE, old_size, TRUE);
+		// need to restore fullscreen mode after dialog - only works
+		// in X11
+		if (running_x11 && mWindow)
+		{
+			SDL_WM_ToggleFullScreen(mWindow);
+		}
 	}
-	// *FIX: we need to restore the GL context using
-	// LLViewerWindow::restoreGL() - but how??
 }
 
 
@@ -1703,12 +1712,12 @@ void LLWindowSDL::gatherInput()
 			// which confuses the focus code [SL-24071].
 			if (event.active.gain != mHaveInputFocus)
 			{
-				if (event.active.gain)
+				mHaveInputFocus = !!event.active.gain;
+
+				if (mHaveInputFocus)
 					mCallbacks->handleFocus(this);
 				else
 					mCallbacks->handleFocusLost(this);
-			
-				mHaveInputFocus = !!event.active.gain;
 			}
                 }
                 if (event.active.state & SDL_APPACTIVE)
@@ -1716,10 +1725,10 @@ void LLWindowSDL::gatherInput()
 			// Change in iconification/minimization state.
 			if ((!event.active.gain) != mIsMinimized)
 			{
-				mCallbacks->handleActivate(this, !!event.active.gain);
-				llinfos << "SDL deiconification state switched to " << BOOL(event.active.gain) << llendl;
-	
 				mIsMinimized = (!event.active.gain);
+
+				mCallbacks->handleActivate(this, !mIsMinimized);
+				llinfos << "SDL deiconification state switched to " << BOOL(event.active.gain) << llendl;
 			}
 			else
 			{
@@ -2047,10 +2056,7 @@ S32 OSMessageBoxSDL(const std::string& text, const std::string& caption, U32 typ
 	if(gWindowImplementation != NULL)
 		gWindowImplementation->beforeDialog();
 
-	if (LLWindowSDL::ll_try_gtk_init()
-	    // We can NOT expect to combine GTK and SDL's aggressive fullscreen
-	    && ((NULL==gWindowImplementation) || (!was_fullscreen))
-	    )
+	if (LLWindowSDL::ll_try_gtk_init())
 	{
 		GtkWidget *win = NULL;
 
@@ -2155,10 +2161,7 @@ BOOL LLWindowSDL::dialog_color_picker ( F32 *r, F32 *g, F32 *b)
 
 	beforeDialog();
 
-	if (ll_try_gtk_init()
-	    // We can NOT expect to combine GTK and SDL's aggressive fullscreen
-	    && !was_fullscreen
-	    )
+	if (ll_try_gtk_init())
 	{
 		GtkWidget *win = NULL;
 
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 58d09672260..d1fdc8caa18 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2931,7 +2931,7 @@ void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
 	/*
 	std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command";
 	WCHAR reg_path_wstr[256];
-	mbstowcs(reg_path_wstr, reg_path_str.c_str(), sizeof(reg_path_wstr)/sizeof(reg_path_wstr[0]));
+	mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) );
 
 	HKEY key;
 	WCHAR browser_open_wstr[1024];
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 750771f6ce2..9ec838ad46b 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -41,6 +41,7 @@ if (WINDOWS)
 endif (WINDOWS)
 
 include_directories(
+    ${DBUSGLIB_INCLUDE_DIRS}
     ${ELFIO_INCLUDE_DIR}
     ${LLAUDIO_INCLUDE_DIRS}
     ${LLCHARACTER_INCLUDE_DIRS}
@@ -937,11 +938,8 @@ if (WINDOWS)
         res/arrowcop.cur
         res/arrowcopmulti.cur
         res/arrowdrag.cur
-        res/bitmap2.bmp
         res/circleandline.cur
         res/icon1.ico
-        res/install_icon.BMP
-        res/install_icon.ico
         res/llarrow.cur
         res/llarrowdrag.cur
         res/llarrowdragmulti.cur
@@ -963,7 +961,6 @@ if (WINDOWS)
         res/lltoolzoomout.cur
         res/ll_icon.BMP
         res/ll_icon.ico
-        res/loginbackground.bmp
         res/resource.h
         res/toolbuy.cur
         res/toolopen.cur
@@ -973,8 +970,6 @@ if (WINDOWS)
         res/toolpickobject3.cur
         res/toolpipette.cur
         res/toolsit.cur
-        res/uninstall_icon.BMP
-        res/uninstall_icon.ico
         )
 
     set_source_files_properties(${viewer_RESOURCE_FILES}
@@ -1070,7 +1065,6 @@ set(viewer_XUI_FILES
     skins/default/xui/en-us/floater_html_simple.xml
     skins/default/xui/en-us/floater_hud.xml
     skins/default/xui/en-us/floater_image_preview.xml
-    skins/default/xui/en-us/floater_import.xml
     skins/default/xui/en-us/floater_im.xml
     skins/default/xui/en-us/floater_inspect.xml
     skins/default/xui/en-us/floater_instant_message_ad_hoc.xml
@@ -1535,6 +1529,25 @@ if (DARWIN)
           ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
       )
 
+
+      add_custom_command(
+        TARGET package POST_BUILD
+        COMMAND ${PYTHON_EXECUTABLE}
+        ARGS
+          ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
+          --grid=${GRID}
+          --configuration=${CMAKE_CFG_INTDIR}
+          --channel=${VIEWER_CHANNEL}
+          --login_channel=${VIEWER_LOGIN_CHANNEL}
+          --source=${CMAKE_CURRENT_SOURCE_DIR}
+          --artwork=${ARTWORK_DIR}
+          --build=${CMAKE_CURRENT_BINARY_DIR}
+          --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app
+          --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
+        DEPENDS
+          ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
+      )
+
   endif (PACKAGE)
 endif (DARWIN)
 
diff --git a/indra/newview/featuretable_solaris.txt b/indra/newview/featuretable_solaris.txt
index 2a514eaab1f..f24cbde5e2e 100644
--- a/indra/newview/featuretable_solaris.txt
+++ b/indra/newview/featuretable_solaris.txt
@@ -35,6 +35,8 @@ RenderRippleWater	1	1
 RenderTerrainDetail	1	2
 VertexShaderEnable	1	1
 RenderTextureMemoryMultiple		1	1.0
+UseOcclusion		1       1
+RenderCubeMap		1       1
 
 //
 // Class 0 Hardware (Unknown or just old)
@@ -108,6 +110,8 @@ RenderAvatarVP		0	0
 RenderLighting		1	0
 RenderParticleCount	1	1024
 RenderTerrainDetail 1	0
+RenderCubeMap		0	0
+UseOcclusion		0	0
 
 
 list low
@@ -146,6 +150,7 @@ RenderVBO			1	0
 RenderAniso			1	0
 RenderLighting		1	0
 RenderTerrainDetail	1	0
+RenderCubeMap		0	0
 
 list GeForce2
 RenderVBO			1	1
@@ -157,6 +162,7 @@ RenderTerrainDetail	1	0
 list GeForce3
 
 list ATI
+UseOcclusion		0	0
 
 list Radeon8500
 RenderLighting		1	0
diff --git a/indra/newview/res/install_icon.BMP b/indra/newview/installers/windows/install_icon.BMP
similarity index 100%
rename from indra/newview/res/install_icon.BMP
rename to indra/newview/installers/windows/install_icon.BMP
diff --git a/indra/newview/installers/windows/install_icon.ico b/indra/newview/installers/windows/install_icon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..1e00530c9016b16548de6890ab5562bbe2cbbe1d
GIT binary patch
literal 25214
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
BywLyv

literal 0
HcmV?d00001

diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi
index 0a68d6badcf..483568f9744 100644
--- a/indra/newview/installers/windows/installer_template.nsi
+++ b/indra/newview/installers/windows/installer_template.nsi
@@ -68,8 +68,8 @@ Name ${INSTNAME}
 SubCaption 0 $(LicenseSubTitleSetup)	; override "license agreement" text
 
 BrandingText " "						; bottom of window text
-Icon %%SOURCE%%\res\install_icon.ico	; our custom icon
-UninstallIcon %%SOURCE%%\res\uninstall_icon.ico    ; our custom icon
+Icon          %%SOURCE%%\installers\windows\install_icon.ico
+UninstallIcon %%SOURCE%%\installers\windows\uninstall_icon.ico
 WindowIcon on							; show our icon in left corner
 BGGradient off							; no big background window
 CRCCheck on								; make sure CRC is OK
diff --git a/indra/newview/res/uninstall_icon.BMP b/indra/newview/installers/windows/uninstall_icon.BMP
similarity index 100%
rename from indra/newview/res/uninstall_icon.BMP
rename to indra/newview/installers/windows/uninstall_icon.BMP
diff --git a/indra/newview/installers/windows/uninstall_icon.ico b/indra/newview/installers/windows/uninstall_icon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c4ec6c70bd7f325369d8763afef61ee8e93f2960
GIT binary patch
literal 25214
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
V66ANQ|7`dYdgX77pi9Oo{J$@MqwxR$

literal 0
HcmV?d00001

diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt
index 543a7a1881d..757e4a08cc1 100644
--- a/indra/newview/linux_tools/client-readme.txt
+++ b/indra/newview/linux_tools/client-readme.txt
@@ -95,12 +95,6 @@ you wish.
 4. KNOWN ISSUES
 -=-=-=-=-=-=-=-
 
-These are the most commonly-encountered known issues which are specific to
-the Beta release of the Linux client.
-
-* UPLOAD / SAVE / COLOR-PICKER DIALOGS - These only appear when the client
-  is in 'windowed' mode, not 'fullscreen' mode.
-
 * UPDATING - when the client detects that a new version of Second Life
   is available, it will ask you if you wish to download the new version.
   This option is not implemented; to upgrade, you should manually download a
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index efa7504a486..7ef757f1bad 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -4348,7 +4348,19 @@ void LLAgent::setFocusObject(LLViewerObject* object)
 //-----------------------------------------------------------------------------
 void LLAgent::setFocusGlobal(const LLPickInfo& pick)
 {
-	setFocusGlobal(pick.mPosGlobal, pick.mObjectID);
+	LLViewerObject* objectp = gObjectList.findObject(pick.mObjectID);
+
+	if (objectp)
+	{
+		// focus on object plus designated offset
+		// which may or may not be same as pick.mPosGlobal
+		setFocusGlobal(objectp->getPositionGlobal() + LLVector3d(pick.mObjectOffset), pick.mObjectID);
+	}
+	else
+	{
+		// focus directly on point where user clicked
+		setFocusGlobal(pick.mPosGlobal, pick.mObjectID);
+	}
 }
 
 
@@ -5831,7 +5843,12 @@ bool LLAgent::teleportCore(bool is_local)
 		return false;
 	}
 
-	// Stop all animation before actual teleporting
+#if 0
+	// This should not exist. It has been added, removed, added, and now removed again.
+	// This change needs to come from the simulator. Otherwise, the agent ends up out of
+	// sync with other viewers. Discuss in DEV-14145/VWR-6744 before reenabling.
+
+	// Stop all animation before actual teleporting 
 	LLVOAvatar* avatarp = gAgent.getAvatarObject();
         if (avatarp)
 	{
@@ -5843,6 +5860,7 @@ bool LLAgent::teleportCore(bool is_local)
                }
                avatarp->processAnimationStateChanges();
        }
+#endif
 
 	// Don't call LLFirstUse::useTeleport because we don't know
 	// yet if the teleport will succeed.  Look in 
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 1be06448407..44b9cb2198b 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -104,6 +104,7 @@
 #include "llviewermenu.h"
 #include "llselectmgr.h"
 #include "lltrans.h"
+#include "lluitrans.h"
 #include "lltracker.h"
 #include "llviewerparcelmgr.h"
 #include "llworldmapview.h"
@@ -604,25 +605,6 @@ bool LLAppViewer::init()
 	/////////////////////////////////////////////////
 	// OS-specific login dialogs
 	/////////////////////////////////////////////////
-#if LL_WINDOWS
-	/*
-	// Display initial login screen, comes up quickly. JC
-	{
-		LLSplashScreen::hide();
-
-		INT_PTR result = DialogBox(hInstance, L"CONNECTBOX", NULL, login_dialog_func);
-		if (result < 0)
-		{
-			llwarns << "Connect dialog box failed, returned " << result << llendl;
-			return 1;
-		}
-		// success, result contains which button user clicked
-		llinfos << "Connect dialog box clicked " << result << llendl;
-
-		LLSplashScreen::show();
-	}
-	*/
-#endif
 
 	//test_cached_control();
 
@@ -1292,6 +1274,13 @@ bool LLAppViewer::cleanup()
 	LLVFile::cleanupClass();
 	llinfos << "VFS cleaned up" << llendflush;
 
+	// Quitting with "Remember Password" turned off should always stomp your
+	// saved password, whether or not you successfully logged in.  JC
+	if (!gSavedSettings.getBOOL("RememberPassword"))
+	{
+		LLStartUp::deletePasswordFromDisk();
+	}
+	
 	// Store the time of our current logoff
 	gSavedPerAccountSettings.setU32("LastLogoff", time_corrected());
 
@@ -2139,6 +2128,7 @@ bool LLAppViewer::initWindow()
 	LLUI::sWindow = gViewerWindow->getWindow();
 
 	LLTrans::parseStrings("strings.xml");
+	LLUITrans::parseStrings("ui_strings.xml");
 
 	// Show watch cursor
 	gViewerWindow->setCursor(UI_CURSOR_WAIT);
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index 427f67c331d..0778503a92f 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -540,9 +540,11 @@ void LLAppViewerLinux::handleCrashReporting(bool reportFreeze)
 	cmd += gDirUtilp->getDirDelimiter();
 #if LL_LINUX
 	cmd += "linux-crash-logger.bin";
-#else // LL_SOLARIS
-	cmd += "bin/solaris-crash-logger";
-#endif // LL_LINUX
+#elif LL_SOLARIS
+	cmd += "solaris-crash-logger";
+#else
+# error Unknown platform
+#endif
 
 	if(reportFreeze)
 	{
@@ -623,7 +625,10 @@ void LLAppViewerLinux::handleCrashReporting(bool reportFreeze)
 bool LLAppViewerLinux::beingDebugged()
 {
 	static enum {unknown, no, yes} debugged = unknown;
-	
+
+#if LL_SOLARIS
+	return debugged == no;	// BUG: fix this for Solaris
+#else
 	if (debugged == unknown)
 	{
 		pid_t ppid = getppid();
@@ -658,6 +663,7 @@ bool LLAppViewerLinux::beingDebugged()
 	}
 
 	return debugged == yes;
+#endif
 }
 
 bool LLAppViewerLinux::initLogging()
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 5bdfbb09759..9dd06687873 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -206,6 +206,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
 
 	LLAssetType::EType asset_type = LLAssetType::lookup(mPostData["asset_type"].asString());
 	LLInventoryType::EType inventory_type = LLInventoryType::lookup(mPostData["inventory_type"].asString());
+	S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
 
 	// Update L$ and ownership credit information
 	// since it probably changed on the server
@@ -222,7 +223,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
 		gAgent.sendReliableMessage();
 
 		LLSD args;
-		args["AMOUNT"] = llformat("%d",LLGlobalEconomy::Singleton::getInstance()->getPriceUpload());
+		args["AMOUNT"] = llformat("%d", expected_upload_cost);
 		LLNotifications::instance().add("UploadPayment", args);
 	}
 
@@ -320,9 +321,14 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
 		U32 everyone_perms   = mPostData.has("everyone_mask")   ? mPostData.get("everyone_mask"  ).asInteger() : PERM_NONE;
 		U32 group_perms      = mPostData.has("group_mask")      ? mPostData.get("group_mask"     ).asInteger() : PERM_NONE;
 		U32 next_owner_perms = mPostData.has("next_owner_mask") ? mPostData.get("next_owner_mask").asInteger() : PERM_NONE;
+		std::string display_name = LLStringUtil::null;
+		LLAssetStorage::LLStoreAssetCallback callback = NULL;
+		void *userdata = NULL;
 		upload_new_resource(next_file, asset_name, asset_name,
-							0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
-							next_owner_perms, group_perms, everyone_perms);
+				    0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
+				    next_owner_perms, group_perms,
+				    everyone_perms, display_name,
+				    callback, expected_upload_cost, userdata);
 	}
 }
 
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index c76cbbeb3e1..2395f3c5ae4 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -523,7 +523,8 @@ void LLChatBar::onInputEditorKeystroke( LLLineEditor* caller, void* userdata )
 		{
 			if (self->mInputEditor)
 			{
-				self->mInputEditor->setText(utf8_out_str);
+				std::string rest_of_match = utf8_out_str.substr(utf8_trigger.size());
+				self->mInputEditor->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part
 				S32 outlength = self->mInputEditor->getLength(); // in characters
 			
 				// Select to end of line, starting from the character
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index c89d56474d4..8b0ed39eb03 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -39,8 +39,9 @@
 #include "llkeyboard.h"
 #include "lldir.h"
 #include "llframetimer.h"
+#include "lltrans.h"
 
-#if LL_LINUX
+#if LL_LINUX || LL_SOLARIS
 # include "llfilepicker.h"
 #endif
 
@@ -264,7 +265,7 @@ void LLDirPicker::reset()
 	mDir.clear();
 }
 
-#elif LL_LINUX
+#elif LL_LINUX || LL_SOLARIS
 
 LLDirPicker::LLDirPicker() 
 {
@@ -294,7 +295,7 @@ BOOL LLDirPicker::getDir(std::string* filename)
 
 		if (picker)
 		{		   
-		   gtk_window_set_title(GTK_WINDOW(picker), "Choose Directory");
+		   gtk_window_set_title(GTK_WINDOW(picker), LLTrans::getString("choose_the_directory").c_str());
 		   gtk_widget_show_all(GTK_WIDGET(picker));
 		   gtk_main();
 		   return (!mFilePicker->getFirstFile().empty());
diff --git a/indra/newview/lldirpicker.h b/indra/newview/lldirpicker.h
index 9c36dc6750b..26f76915aee 100644
--- a/indra/newview/lldirpicker.h
+++ b/indra/newview/lldirpicker.h
@@ -90,7 +90,7 @@ class LLDirPicker
 	
 #endif
 
-#if LL_LINUX
+#if LL_LINUX || LL_SOLARIS
 	// On Linux we just implement LLDirPicker on top of LLFilePicker
 	LLFilePicker *mFilePicker;
 #endif
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 768a728749d..25a26f05d87 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -205,7 +205,7 @@ static struct ft_display_info ft_display_table[] =
 	{ LLFastTimer::FTM_OTHER,				" Other",			&red0 }
 };
 static int ft_display_didcalc = 0;
-static const int FTV_DISPLAY_NUM  = (sizeof(ft_display_table)/sizeof(ft_display_table[0]));
+static const int FTV_DISPLAY_NUM  = LL_ARRAY_SIZE(ft_display_table);
 
 S32 ft_display_idx[FTV_DISPLAY_NUM]; // line of table entry for display purposes (for collapse)
 
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 1ad55ae35c9..8f5882615f9 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -38,6 +38,7 @@
 #include "llkeyboard.h"
 #include "lldir.h"
 #include "llframetimer.h"
+#include "lltrans.h"
 
 #if LL_SDL
 #include "llwindowsdl.h" // for some X/GTK utils to help with filepickers
@@ -893,19 +894,45 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
 	return success;
 }
 
-#elif LL_LINUX
+#elif LL_LINUX || LL_SOLARIS
 
 # if LL_GTK
 
 // static
 void LLFilePicker::add_to_selectedfiles(gpointer data, gpointer user_data)
 {
+	// We need to run g_filename_to_utf8 in the user's locale
+	std::string saved_locale(setlocale(LC_ALL, NULL));
+	setlocale(LC_ALL, "");
+
 	LLFilePicker* picker = (LLFilePicker*) user_data;
+	GError *error = NULL;
 	gchar* filename_utf8 = g_filename_to_utf8((gchar*)data,
-						  -1, NULL, NULL, NULL);
-	picker->mFiles.push_back(std::string(filename_utf8));
-	lldebugs << "ADDED FILE " << filename_utf8 << llendl;
-	g_free(filename_utf8);
+						  -1, NULL, NULL, &error);
+	if (error)
+	{
+		// *FIXME.
+		// This condition should really be notified to the user, e.g.
+		// through a message box.  Just logging it is inappropriate.
+		
+		// g_filename_display_name is ideal, but >= glib 2.6, so:
+		// a hand-rolled hacky makeASCII which disallows control chars
+		std::string display_name;
+		for (const gchar *str = (const gchar *)data; *str; str++)
+		{
+			display_name += (char)((*str >= 0x20 && *str <= 0x7E) ? *str : '?');
+		}
+		llwarns << "g_filename_to_utf8 failed on \"" << display_name << "\": " << error->message << llendl;
+	}
+
+	if (filename_utf8)
+	{
+		picker->mFiles.push_back(std::string(filename_utf8));
+		lldebugs << "ADDED FILE " << filename_utf8 << llendl;
+		g_free(filename_utf8);
+	}
+
+	setlocale(LC_ALL, saved_locale.c_str());
 }
 
 // static
@@ -934,8 +961,7 @@ void LLFilePicker::chooser_responder(GtkWidget *widget, gint response, gpointer
 
 GtkWindow* LLFilePicker::buildFilePicker(bool is_save, bool is_folder, std::string context)
 {
-	if (LLWindowSDL::ll_try_gtk_init() &&
-	    ! gViewerWindow->getWindow()->getFullscreen())
+	if (LLWindowSDL::ll_try_gtk_init())
 	{
 		GtkWidget *win = NULL;
 		GtkFileChooserAction pickertype =
@@ -1017,7 +1043,7 @@ static void add_common_filters_to_gtkchooser(GtkFileFilter *gfilter,
 				    gfilter);
 	GtkFileFilter *allfilter = gtk_file_filter_new();
 	gtk_file_filter_add_pattern(allfilter, "*");
-	gtk_file_filter_set_name(allfilter, "All Files");
+	gtk_file_filter_set_name(allfilter, LLTrans::getString("all_files").c_str());
 	gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker), allfilter);
 	gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(picker), gfilter);
 }
@@ -1045,13 +1071,13 @@ static std::string add_simple_mime_filter_to_gtkchooser(GtkWindow *picker,
 static std::string add_wav_filter_to_gtkchooser(GtkWindow *picker)
 {
 	return add_simple_mime_filter_to_gtkchooser(picker,  "audio/x-wav",
-						    "Sounds (*.wav)");
+						    LLTrans::getString("sound_files") + " (*.wav)");
 }
 
 static std::string add_bvh_filter_to_gtkchooser(GtkWindow *picker)
 {
 	return add_simple_pattern_filter_to_gtkchooser(picker,  "*.bvh",
-						       "Animations (*.bvh)");
+						       LLTrans::getString("animation_files") + " (*.bvh)");
 }
 
 static std::string add_imageload_filter_to_gtkchooser(GtkWindow *picker)
@@ -1061,7 +1087,7 @@ static std::string add_imageload_filter_to_gtkchooser(GtkWindow *picker)
 	gtk_file_filter_add_mime_type(gfilter, "image/jpeg");
 	gtk_file_filter_add_mime_type(gfilter, "image/png");
 	gtk_file_filter_add_mime_type(gfilter, "image/bmp");
-	std::string filtername = "Images (*.tga; *.bmp; *.jpg; *.png)";
+	std::string filtername = LLTrans::getString("image_files") + " (*.tga; *.bmp; *.jpg; *.png)";
 	add_common_filters_to_gtkchooser(gfilter, picker, filtername);
 	return filtername;
 }
@@ -1081,7 +1107,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 	{
 		std::string suggest_name = "untitled";
 		std::string suggest_ext = "";
-		std::string caption = "Save ";
+		std::string caption = LLTrans::getString("save_file_verb") + " ";
 		switch (filter)
 		{
 		case FFSAVE_WAV:
@@ -1090,39 +1116,39 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 			break;
 		case FFSAVE_TGA:
 			caption += add_simple_pattern_filter_to_gtkchooser
-				(picker, "*.tga", "Targa Images (*.tga)");
+				(picker, "*.tga", LLTrans::getString("targa_image_files") + " (*.tga)");
 			suggest_ext = ".tga";
 			break;
 		case FFSAVE_BMP:
 			caption += add_simple_mime_filter_to_gtkchooser
-				(picker, "image/bmp", "Bitmap Images (*.bmp)");
+				(picker, "image/bmp", LLTrans::getString("bitmap_image_files") + " (*.bmp)");
 			suggest_ext = ".bmp";
 			break;
 		case FFSAVE_AVI:
 			caption += add_simple_mime_filter_to_gtkchooser
 				(picker, "video/x-msvideo",
-				 "AVI Movie File (*.avi)");
+				 LLTrans::getString("avi_movie_file") + " (*.avi)");
 			suggest_ext = ".avi";
 			break;
 		case FFSAVE_ANIM:
 			caption += add_simple_pattern_filter_to_gtkchooser
-				(picker, "*.xaf", "XAF Anim File (*.xaf)");
+				(picker, "*.xaf", LLTrans::getString("xaf_animation_file") + " (*.xaf)");
 			suggest_ext = ".xaf";
 			break;
 		case FFSAVE_XML:
 			caption += add_simple_pattern_filter_to_gtkchooser
-				(picker, "*.xml", "XML File (*.xml)");
+				(picker, "*.xml", LLTrans::getString("xml_file") + " (*.xml)");
 			suggest_ext = ".xml";
 			break;
 		case FFSAVE_RAW:
 			caption += add_simple_pattern_filter_to_gtkchooser
-				(picker, "*.raw", "RAW File (*.raw)");
+				(picker, "*.raw", LLTrans::getString("raw_file") + " (*.raw)");
 			suggest_ext = ".raw";
 			break;
 		case FFSAVE_J2C:
 			caption += add_simple_mime_filter_to_gtkchooser
 				(picker, "images/jp2",
-				 "Compressed Images (*.j2c)");
+				 LLTrans::getString("compressed_image_files") + " (*.j2c)");
 			suggest_ext = ".j2c";
 			break;
 		default:;
@@ -1168,7 +1194,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter )
 
 	if (picker)
 	{
-		std::string caption = "Load ";
+		std::string caption = LLTrans::getString("load_file_verb") + " ";
 		std::string filtername = "";
 		switch (filter)
 		{
@@ -1215,7 +1241,7 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter )
 		gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER(picker),
 						      TRUE);
 
-		gtk_window_set_title(GTK_WINDOW(picker), "Load Files");
+		gtk_window_set_title(GTK_WINDOW(picker), LLTrans::getString("load_files").c_str());
 
 		gtk_widget_show_all(GTK_WIDGET(picker));
 		gtk_main();
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 0cdd3f5b66f..045ca6aa364 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -989,15 +989,19 @@ void LLFloaterAnimPreview::onBtnOK(void* userdata)
 			{
 				std::string name = floaterp->childGetValue("name_form").asString();
 				std::string desc = floaterp->childGetValue("description_form").asString();
+				LLAssetStorage::LLStoreAssetCallback callback = NULL;
+				S32 expected_upload_cost = sUploadAmount;
+				void *userdata = NULL;
 				upload_new_resource(floaterp->mTransactionID, // tid
-									LLAssetType::AT_ANIMATION,
-									name,
-									desc,
-									0,
-									LLAssetType::AT_NONE,
-									LLInventoryType::IT_ANIMATION,
-									LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
-									name);
+						    LLAssetType::AT_ANIMATION,
+						    name,
+						    desc,
+						    0,
+						    LLAssetType::AT_NONE,
+						    LLInventoryType::IT_ANIMATION,
+						    LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
+						    name,
+						    callback, expected_upload_cost, userdata);
 			}
 			else
 			{
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index 793ae954aef..f57042eedb3 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -393,7 +393,11 @@ void LLFloaterChat::addChat(const LLChat& chat,
 			text_color = gSavedSettings.getColor("IMChatColor");
 			size = INSTANT_MSG_SIZE;
 		}
-		gConsole->addLine(chat.mText, size, text_color);
+		// We display anything if it's not an IM. If it's an IM, check pref...
+		if	( !from_instant_message || gSavedSettings.getBOOL("IMInChatHistory") ) 
+		{
+			gConsole->addLine(chat.mText, size, text_color);
+		}
 	}
 
 	if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM"))
diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp
index db9d943ed3a..acfcfab445a 100644
--- a/indra/newview/llfloaternamedesc.cpp
+++ b/indra/newview/llfloaternamedesc.cpp
@@ -49,6 +49,7 @@
 #include "llviewermenufile.h"	// upload_new_resource()
 #include "lluictrlfactory.h"
 #include "llstring.h"
+#include "lleconomy.h"
 
 // linden includes
 #include "llassetstorage.h"
@@ -179,11 +180,16 @@ void LLFloaterNameDesc::onBtnOK( void* userdata )
 
 	fp->childDisable("ok_btn"); // don't allow inadvertent extra uploads
 	
+	LLAssetStorage::LLStoreAssetCallback callback = NULL;
+	S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); // kinda hack - assumes that unsubclassed LLFloaterNameDesc is only used for uploading chargeable assets, which it is right now (it's only used unsubclassed for the sound upload dialog, and THAT should be a subclass).
+	void *nruserdata = NULL;
+	std::string display_name = LLStringUtil::null;
 	upload_new_resource(fp->mFilenameAndPath, // file
-		fp->childGetValue("name_form").asString(), 
-		fp->childGetValue("description_form").asString(), 
-		0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
-		LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms());
+			    fp->childGetValue("name_form").asString(), 
+			    fp->childGetValue("description_form").asString(), 
+			    0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
+			    LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
+			    display_name, callback, expected_upload_cost, nruserdata);
 	fp->close(false);
 }
 
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index 8a057b442cd..406d940cf0f 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -248,7 +248,7 @@ void LLFloaterProperties::refresh()
 			"RadioSaleType",
 			"EditPrice"
 		};
-		for(size_t t=0; t<sizeof(enableNames)/sizeof(char*); ++t)
+		for(size_t t=0; t<LL_ARRAY_SIZE(enableNames); ++t)
 		{
 			childSetEnabled(enableNames[t],false);
 		}
@@ -259,7 +259,7 @@ void LLFloaterProperties::refresh()
 			"EveryoneMaskDebug",
 			"NextMaskDebug"
 		};
-		for(size_t t=0; t<sizeof(hideNames)/sizeof(char*); ++t)
+		for(size_t t=0; t<LL_ARRAY_SIZE(hideNames); ++t)
 		{
 			childSetVisible(hideNames[t],false);
 		}
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 1f401acc4c8..3f699fda99b 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -693,6 +693,9 @@ LLSD LLFloaterReporter::gatherReport()
 #elif LL_LINUX
 	const char* platform = "Lnx";
 	const char* short_platform = "O:L";
+#elif LL_SOLARIS
+	const char* platform = "Sol";
+	const char* short_platform = "O:S";
 #else
 	const char* platform = "???";
 	const char* short_platform = "O:?";
@@ -885,6 +888,8 @@ void LLFloaterReporter::takeScreenshot()
 
 	// create a resource data
 	mResourceDatap->mInventoryType = LLInventoryType::IT_NONE;
+	mResourceDatap->mNextOwnerPerm = 0; // not used
+	mResourceDatap->mExpectedUploadCost = 0; // we expect that abuse screenshots are free
 	mResourceDatap->mAssetInfo.mTransactionID.generate();
 	mResourceDatap->mAssetInfo.mUuid = mResourceDatap->mAssetInfo.mTransactionID.makeAssetID(gAgent.getSecureSessionID());
 	if (BUG_REPORT == mReportType)
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index dd5f2662d6a..14caed9d97a 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -51,6 +51,7 @@
 #include "llfocusmgr.h"
 #include "llbutton.h"
 #include "llcombobox.h"
+#include "lleconomy.h"
 #include "llsliderctrl.h"
 #include "llspinctrl.h"
 #include "llviewercontrol.h"
@@ -952,17 +953,21 @@ void LLSnapshotLivePreview::saveTexture()
 		gAgent.buildLocationString(pos_string);
 		std::string who_took_it;
 		gAgent.buildFullname(who_took_it);
+		LLAssetStorage::LLStoreAssetCallback callback = NULL;
+		S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
+		void *userdata = NULL;
 		upload_new_resource(tid,	// tid
-							LLAssetType::AT_TEXTURE,
-							"Snapshot : " + pos_string,
-							"Taken by " + who_took_it + " at " + pos_string,
-							0,
-							LLAssetType::AT_SNAPSHOT_CATEGORY,
-							LLInventoryType::IT_SNAPSHOT,
-							PERM_ALL,  // Note: Snapshots to inventory is a special case of content upload
-							PERM_NONE, // that ignores the user's premissions preferences and continues to
-							PERM_NONE, // always use these fairly permissive hard-coded initial perms. - MG
-							"Snapshot : " + pos_string);
+				    LLAssetType::AT_TEXTURE,
+				    "Snapshot : " + pos_string,
+				    "Taken by " + who_took_it + " at " + pos_string,
+				    0,
+				    LLAssetType::AT_SNAPSHOT_CATEGORY,
+				    LLInventoryType::IT_SNAPSHOT,
+				    PERM_ALL,  // Note: Snapshots to inventory is a special case of content upload
+				    PERM_NONE, // that ignores the user's premissions preferences and continues to
+				    PERM_NONE, // always use these fairly permissive hard-coded initial perms. - MG
+				    "Snapshot : " + pos_string,
+				    callback, expected_upload_cost, userdata);
 		gViewerWindow->playSnapshotAnimAndSound();
 	}
 	else
@@ -1271,6 +1276,9 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
 	LLLocale locale(LLLocale::USER_LOCALE);
 	std::string bytes_string;
 	LLResMgr::getInstance()->getIntegerString(bytes_string, (previewp->getDataSize()) >> 10 );
+	S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
+	floater->childSetLabelArg("texture", "[AMOUNT]", llformat("%d",upload_cost));
+	floater->childSetLabelArg("upload_btn", "[AMOUNT]", llformat("%d",upload_cost));
 	floater->childSetTextArg("file_size_label", "[SIZE]", got_snap ? bytes_string : floater->getString("unknown"));
 	floater->childSetColor("file_size_label", 
 		shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD 
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 9a0d831be48..704b53e8164 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -271,7 +271,7 @@ BOOL	LLFloaterTools::postBuild()
 			&LLToolPlacerPanel::sTriangleTorus,
 			&LLToolPlacerPanel::sTree,
 			&LLToolPlacerPanel::sGrass};
-	for(size_t t=0; t<sizeof(toolNames)/sizeof(toolNames[0]); ++t)
+	for(size_t t=0; t<LL_ARRAY_SIZE(toolNames); ++t)
 	{
 		LLButton *found = getChild<LLButton>(toolNames[t]);
 		if(found)
diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
index a9c182455c0..16428ce6d1c 100644
--- a/indra/newview/llfloatertopobjects.cpp
+++ b/indra/newview/llfloatertopobjects.cpp
@@ -185,7 +185,7 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
 		{
 			have_extended_data = true;
 			msg->getU32("DataExtended", "TimeStamp", time_stamp, block);
-			msg->getF32(_PREHASH_ReportData, "MonoScore", mono_score, block);
+			msg->getF32("DataExtended", "MonoScore", mono_score, block);
 		}
 
 		LLSD element;
diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp
index 1ba85e6e536..6a392e03fbc 100644
--- a/indra/newview/llfloatertos.cpp
+++ b/indra/newview/llfloatertos.cpp
@@ -34,21 +34,25 @@
 
 #include "llfloatertos.h"
 
-#include "llbutton.h"
-#include "llradiogroup.h"
-#include "llvfile.h"
-#include "lltextbox.h"
-#include "llviewertexteditor.h"
+// viewer includes
+#include "llagent.h"
 #include "llappviewer.h"
 #include "llstartup.h"
-#include "message.h"
-#include "llagent.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
 #include "llviewerstats.h"
-#include "llui.h"
+#include "llviewertexteditor.h"
+#include "llviewerwindow.h"
+
+// linden library includes
+#include "llbutton.h"
 #include "llhttpclient.h"
+#include "llhttpstatuscodes.h"	// for HTTP_FOUND
 #include "llradiogroup.h"
+#include "lltextbox.h"
+#include "llui.h"
+#include "lluictrlfactory.h"
+#include "llvfile.h"
+#include "message.h"
+
 
 // static 
 LLFloaterTOS* LLFloaterTOS::sInstance = NULL;
@@ -115,7 +119,13 @@ class LLIamHere : public LLHTTPClient::Responder
 		virtual void error( U32 status, const std::string& reason )
 		{
 			if ( mParent )
-				mParent->setSiteIsAlive( false );
+			{
+				// *HACK: For purposes of this alive check, 302 Found
+				// (aka Moved Temporarily) is considered alive.  The web site
+				// redirects this link to a "cache busting" temporary URL. JC
+				bool alive = (status == HTTP_FOUND);
+				mParent->setSiteIsAlive( alive );
+			}
 		};
 };
 
@@ -185,12 +195,6 @@ void LLFloaterTOS::setSiteIsAlive( bool alive )
 			// but if the page is unavailable, we need to do this now
 			LLCheckBoxCtrl* tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk");
 			tos_agreement->setEnabled( true );
-
-			if ( web_browser )
-			{
-				// hide browser control (revealing default text message)
-				web_browser->setVisible( FALSE );
-			};
 		};
 	};
 }
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 7f2321aafbe..d59f5139252 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -742,7 +742,7 @@ void LLFloaterWorldMap::updateLocation()
 void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S32 y_coord, S32 z_coord)
 {
 	LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromName(region_name);
-	z_coord = llclamp(z_coord, 0, 1000);
+	z_coord = llclamp(z_coord, 0, 4096);
 	if (sim_info)
 	{
 		LLVector3 local_pos;
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 48d9a8a76b3..f98a3f9ee51 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1067,7 +1067,7 @@ void  LLInventoryModel::fetchInventoryResponder::result(const LLSD& content)
 	S32 count = content["items"].size();
 	bool all_one_folder = true;
 	LLUUID folder_id;
-	// Does this loop ever execute more than once? -Gigs
+	// Does this loop ever execute more than once?
 	for(S32 i = 0; i < count; ++i)
 	{
 		LLPointer<LLViewerInventoryItem> titem = new LLViewerInventoryItem;
@@ -2645,7 +2645,7 @@ void LLInventoryModel::processFetchInventoryReply(LLMessageSystem* msg, void**)
 
 bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account)
 {
-	//make sure our added inventory observer is active -Gigs
+	//make sure our added inventory observer is active
 	start_new_inventory_observer();
 
 	LLUUID agent_id;
@@ -2661,7 +2661,7 @@ bool LLInventoryModel::messageUpdateCore(LLMessageSystem* msg, bool account)
 	S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData);
 	bool all_one_folder = true;
 	LLUUID folder_id;
-	// Does this loop ever execute more than once? -Gigs
+	// Does this loop ever execute more than once?
 	for(S32 i = 0; i < count; ++i)
 	{
 		LLPointer<LLViewerInventoryItem> titem = new LLViewerInventoryItem;
@@ -3791,7 +3791,6 @@ void LLInventoryAddedObserver::changed(U32 mask)
 
 	// *HACK: If this was in response to a packet off
 	// the network, figure out which item was updated.
-	// Code from Gigs Taggert, sin allowed by JC.
 	LLMessageSystem* msg = gMessageSystem;
 
 	std::string msg_name;
diff --git a/indra/newview/llloginhandler.cpp b/indra/newview/llloginhandler.cpp
index d298f8e0e7b..053f7988827 100644
--- a/indra/newview/llloginhandler.cpp
+++ b/indra/newview/llloginhandler.cpp
@@ -192,27 +192,18 @@ bool LLLoginHandler::handle(const LLSD& tokens,
 			LLMD5 pass((unsigned char*)password.c_str());
 			char md5pass[33];		/* Flawfinder: ignore */
 			pass.hex_digest(md5pass);
-			password = ll_safe_string(md5pass, 32);
-			save_password_to_disk(password.c_str());
+			std::string hashed_password = ll_safe_string(md5pass, 32);
+			LLStartUp::savePasswordToDisk(hashed_password);
 		}
 	}
-	else
-	{
-		save_password_to_disk(NULL);
-		gSavedSettings.setBOOL("RememberPassword", FALSE);
-	}
 			
 
 	if (LLStartUp::getStartupState() < STATE_LOGIN_CLEANUP)  //on splash page
 	{
 		if (!mFirstName.empty() || !mLastName.empty())
 		{
-			// Fill in the name, and maybe the password, preserving the
-			// remember-password setting. JC
-			std::string ignore;
-			BOOL remember;
-			LLPanelLogin::getFields(ignore, ignore, ignore, remember);
-			LLPanelLogin::setFields(mFirstName, mLastName, password, remember);
+			// Fill in the name, and maybe the password
+			LLPanelLogin::setFields(mFirstName, mLastName, password);
 		}
 
 		if (mWebLoginKey.isNull())
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index b9a700991e0..959a575950a 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -1635,7 +1635,7 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal,
 	}
 	
 	U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_ALPHA, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY };
-	U32 num_types = sizeof(types)/sizeof(U32);
+	U32 num_types = LL_ARRAY_SIZE(types);
 
 	GLuint stencil_mask = 0xFFFFFFFF;
 	//stencil in volumes
diff --git a/indra/newview/llmemoryview.cpp b/indra/newview/llmemoryview.cpp
index 2a8fa2bf358..97dc373b07b 100644
--- a/indra/newview/llmemoryview.cpp
+++ b/indra/newview/llmemoryview.cpp
@@ -138,7 +138,7 @@ static const struct mtv_display_info mtv_display_table[] =
 
  	{ LLMemType::MTYPE_OTHER,			"Other",			&red0 },
 };
-static const int MTV_DISPLAY_NUM  = (sizeof(mtv_display_table)/sizeof(mtv_display_table[0]));
+static const int MTV_DISPLAY_NUM  = LL_ARRAY_SIZE(mtv_display_table);
 
 void LLMemoryView::draw()
 {
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 8b5cb942219..41f8f3941a3 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -78,9 +78,6 @@
 #include "llweb.h"
 #include "llinventorymodel.h"
 #include "roles_constants.h"
-
-#define	kArraySize( _kArray ) ( sizeof( (_kArray) ) / sizeof( _kArray[0] ) )
-
 #include "lluictrlfactory.h"
 
 // Statics
@@ -504,17 +501,17 @@ BOOL LLPanelAvatarPicks::postBuild(void)
 
 BOOL LLPanelAvatarAdvanced::postBuild()
 {
-	for(size_t ii = 0; ii < kArraySize(mWantToCheck); ++ii)
+	for(size_t ii = 0; ii < LL_ARRAY_SIZE(mWantToCheck); ++ii)
 		mWantToCheck[ii] = NULL;
-	for(size_t ii = 0; ii < kArraySize(mSkillsCheck); ++ii)
+	for(size_t ii = 0; ii < LL_ARRAY_SIZE(mSkillsCheck); ++ii)
 		mSkillsCheck[ii] = NULL;
-	mWantToCount = (8>kArraySize(mWantToCheck))?kArraySize(mWantToCheck):8;
+	mWantToCount = (8>LL_ARRAY_SIZE(mWantToCheck))?LL_ARRAY_SIZE(mWantToCheck):8;
 	for(S32 tt=0; tt < mWantToCount; ++tt)
 	{	
 		std::string ctlname = llformat("chk%d", tt);
 		mWantToCheck[tt] = getChild<LLCheckBoxCtrl>(ctlname);
 	}	
-	mSkillsCount = (6>kArraySize(mSkillsCheck))?kArraySize(mSkillsCheck):6;
+	mSkillsCount = (6>LL_ARRAY_SIZE(mSkillsCheck))?LL_ARRAY_SIZE(mSkillsCheck):6;
 
 	for(S32 tt=0; tt < mSkillsCount; ++tt)
 	{
@@ -1817,7 +1814,7 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
 				"AcctTypeCharterMember",
 				"AcctTypeEmployee"
 			};
-			caption_index = llclamp(caption_index, (U8)0, (U8)(sizeof(ACCT_TYPE)/sizeof(ACCT_TYPE[0])-1));
+			caption_index = llclamp(caption_index, (U8)0, (U8)(LL_ARRAY_SIZE(ACCT_TYPE)-1));
 			args["[ACCTTYPE]"] = self->mPanelSecondLife->getString(ACCT_TYPE[caption_index]);
 
 			std::string payment_text = " ";
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index ceca360967e..cbf4a8740c0 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -195,6 +195,7 @@ BOOL LLPanelGroupGeneral::postBuild()
 		mSpinEnrollmentFee->setCommitCallback(onCommitAny);
 		mSpinEnrollmentFee->setCallbackUserData(this);
 		mSpinEnrollmentFee->setPrecision(0);
+		mSpinEnrollmentFee->resetDirty();
 	}
 
 	BOOL accept_notices = FALSE;
@@ -221,6 +222,7 @@ BOOL LLPanelGroupGeneral::postBuild()
 		mCtrlListGroup->setCallbackUserData(this);
 		mCtrlListGroup->set(list_in_profile);
 		mCtrlListGroup->setEnabled(data.mID.notNull());
+		mCtrlListGroup->resetDirty();
 	}
 
 	mActiveTitleLabel = getChild<LLTextBox>("active_title_label", recurse);
@@ -230,6 +232,7 @@ BOOL LLPanelGroupGeneral::postBuild()
 	{
 		mComboActiveTitle->setCommitCallback(onCommitTitle);
 		mComboActiveTitle->setCallbackUserData(this);
+		mComboActiveTitle->resetDirty();
 	}
 
 	mIncompleteMemberDataStr = getString("incomplete_member_data_str");
@@ -259,7 +262,7 @@ BOOL LLPanelGroupGeneral::postBuild()
 void LLPanelGroupGeneral::onFocusEdit(LLFocusableElement* ctrl, void* data)
 {
 	LLPanelGroupGeneral* self = (LLPanelGroupGeneral*)data;
-	self->mChanged = TRUE;
+	self->updateChanged();
 	self->notifyObservers();
 }
 
@@ -317,6 +320,7 @@ void LLPanelGroupGeneral::onCommitTitle(LLUICtrl* ctrl, void* data)
 	if (self->mGroupID.isNull() || !self->mAllowEdit) return;
 	LLGroupMgr::getInstance()->sendGroupTitleUpdate(self->mGroupID,self->mComboActiveTitle->getCurrentID());
 	self->update(GC_TITLES);
+	self->mComboActiveTitle->resetDirty();
 }
 
 // static
@@ -398,6 +402,7 @@ void LLPanelGroupGeneral::openProfile(void* data)
 
 bool LLPanelGroupGeneral::needsApply(std::string& mesg)
 { 
+	updateChanged();
 	mesg = getString("group_info_unchanged");
 	return mChanged || mGroupID.isNull();
 }
@@ -660,6 +665,8 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 				mComboActiveTitle->setCurrentByID(LLUUID::null);
 			}
 		}
+
+		mComboActiveTitle->resetDirty();
 	}
 
 	// If this was just a titles update, we are done.
@@ -674,6 +681,8 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 	{
 		mCtrlShowInGroupList->set(gdatap->mShowInList);
 		mCtrlShowInGroupList->setEnabled(mAllowEdit && can_change_ident);
+		mCtrlShowInGroupList->resetDirty();
+
 	}
 	if (mComboMature)
 	{
@@ -687,24 +696,29 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 		}
 		mComboMature->setEnabled(mAllowEdit && can_change_ident);
 		mComboMature->setVisible( !gAgent.isTeen() );
+		mComboMature->resetDirty();
 	}
 	if (mCtrlOpenEnrollment) 
 	{
 		mCtrlOpenEnrollment->set(gdatap->mOpenEnrollment);
 		mCtrlOpenEnrollment->setEnabled(mAllowEdit && can_change_member_opts);
+		mCtrlOpenEnrollment->resetDirty();
 	}
 	if (mCtrlEnrollmentFee) 
 	{	
 		mCtrlEnrollmentFee->set(gdatap->mMembershipFee > 0);
 		mCtrlEnrollmentFee->setEnabled(mAllowEdit && can_change_member_opts);
+		mCtrlEnrollmentFee->resetDirty();
 	}
 	
 	if (mSpinEnrollmentFee)
 	{
 		S32 fee = gdatap->mMembershipFee;
 		mSpinEnrollmentFee->set((F32)fee);
-		mSpinEnrollmentFee->setEnabled( mAllowEdit 
-								&& (fee > 0) && can_change_member_opts);
+		mSpinEnrollmentFee->setEnabled( mAllowEdit &&
+						(fee > 0) &&
+						can_change_member_opts);
+		mSpinEnrollmentFee->resetDirty();
 	}
 	if ( mBtnJoinGroup )
 	{
@@ -733,8 +747,9 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 		{
 			mCtrlReceiveNotices->setEnabled(mAllowEdit);
 		}
+		mCtrlReceiveNotices->resetDirty();
 	}
-	
+
 
 	if (mInsignia) mInsignia->setEnabled(mAllowEdit && can_change_ident);
 	if (mEditCharter) mEditCharter->setEnabled(mAllowEdit && can_change_ident);
@@ -750,11 +765,15 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
 		}
 		else
 		{
-			
 			mInsignia->setImageAssetID(mDefaultIconID);
 		}
 	}
-	if (mEditCharter) mEditCharter->setText(gdatap->mCharter);
+
+	if (mEditCharter)
+	{
+		mEditCharter->setText(gdatap->mCharter);
+		mEditCharter->resetDirty();
+	}
 	
 	if (mListVisibleMembers)
 	{
@@ -882,7 +901,7 @@ void LLPanelGroupGeneral::updateChanged()
 
 	mChanged = FALSE;
 
-	for( int i= 0; i< sizeof(check_list)/sizeof(*check_list); i++ )
+	for( int i= 0; i< LL_ARRAY_SIZE(check_list); i++ )
 	{
 		if( check_list[i] && check_list[i]->isDirty() )
 		{
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 46ced60b448..bc5e8f2482e 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -546,8 +546,9 @@ void LLPanelLogin::show(const LLRect &rect,
 }
 
 // static
-void LLPanelLogin::setFields(const std::string& firstname, const std::string& lastname, const std::string& password,
-							 BOOL remember)
+void LLPanelLogin::setFields(const std::string& firstname,
+			     const std::string& lastname,
+			     const std::string& password)
 {
 	if (!sInstance)
 	{
@@ -581,8 +582,6 @@ void LLPanelLogin::setFields(const std::string& firstname, const std::string& la
 		pass.hex_digest(munged_password);
 		sInstance->mMungedPassword = munged_password;
 	}
-
-	sInstance->childSetValue("remember_check", remember);
 }
 
 
@@ -601,8 +600,9 @@ void LLPanelLogin::addServer(const std::string& server, S32 domain_name)
 }
 
 // static
-void LLPanelLogin::getFields(std::string &firstname, std::string &lastname, std::string &password,
-							BOOL &remember)
+void LLPanelLogin::getFields(std::string *firstname,
+			     std::string *lastname,
+			     std::string *password)
 {
 	if (!sInstance)
 	{
@@ -610,14 +610,13 @@ void LLPanelLogin::getFields(std::string &firstname, std::string &lastname, std:
 		return;
 	}
 
-	firstname = sInstance->childGetText("first_name_edit");
-	LLStringUtil::trim(firstname);
+	*firstname = sInstance->childGetText("first_name_edit");
+	LLStringUtil::trim(*firstname);
 
-	lastname = sInstance->childGetText("last_name_edit");
-	LLStringUtil::trim(lastname);
+	*lastname = sInstance->childGetText("last_name_edit");
+	LLStringUtil::trim(*lastname);
 
-	password = sInstance->mMungedPassword;
-	remember = sInstance->childGetValue("remember_check");
+	*password = sInstance->mMungedPassword;
 }
 
 // static
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index 5dffaa8323d..47d42da7f1a 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -59,14 +59,15 @@ class LLPanelLogin:
 		void (*callback)(S32 option, void* user_data), 
 		void* callback_data);
 
+	// Remember password checkbox is set via gSavedSettings "RememberPassword"
 	static void setFields(const std::string& firstname, const std::string& lastname, 
-		const std::string& password, BOOL remember);
+		const std::string& password);
 
 	static void addServer(const std::string& server, S32 domain_name);
 	static void refreshLocation( bool force_visible );
 
-	static void getFields(std::string& firstname, std::string& lastname,
-						  std::string& password, BOOL& remember);
+	static void getFields(std::string *firstname, std::string *lastname,
+						  std::string *password);
 
 	static BOOL isGridComboDirty();
 	static void getLocation(std::string &location);
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 09cdfabfc17..ff3b9433f48 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -236,14 +236,14 @@ BOOL LLPreviewGesture::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 					LLScrollListItem* line = NULL;
 					if (cargo_type == DAD_ANIMATION)
 					{
-						line = addStep("Animation");
+						line = addStep( STEP_ANIMATION );
 						LLGestureStepAnimation* anim = (LLGestureStepAnimation*)line->getUserdata();
 						anim->mAnimAssetID = item->getAssetUUID();
 						anim->mAnimName = item->getName();
 					}
 					else if (cargo_type == DAD_SOUND)
 					{
-						line = addStep("Sound");
+						line = addStep( STEP_SOUND );
 						LLGestureStepSound* sound = (LLGestureStepSound*)line->getUserdata();
 						sound->mSoundAssetID = item->getAssetUUID();
 						sound->mSoundName = item->getName();
@@ -847,18 +847,18 @@ void LLPreviewGesture::refresh()
 void LLPreviewGesture::initDefaultGesture()
 {
 	LLScrollListItem* item;
-	item = addStep("Animation");
+	item = addStep( STEP_ANIMATION );
 	LLGestureStepAnimation* anim = (LLGestureStepAnimation*)item->getUserdata();
 	anim->mAnimAssetID = ANIM_AGENT_HELLO;
 	anim->mAnimName = "Wave";
 	updateLabel(item);
 
-	item = addStep("Wait");
+	item = addStep( STEP_WAIT );
 	LLGestureStepWait* wait = (LLGestureStepWait*)item->getUserdata();
 	wait->mFlags = WAIT_FLAG_ALL_ANIM;
 	updateLabel(item);
 
-	item = addStep("Chat");
+	item = addStep( STEP_CHAT );
 	LLGestureStepChat* chat_step = (LLGestureStepChat*)item->getUserdata();
 	chat_step->mChatText = "Hello, avatar!";
 	updateLabel(item);
@@ -1597,38 +1597,44 @@ void LLPreviewGesture::onClickAdd(void* data)
 	LLScrollListItem* library_item = self->mLibraryList->getFirstSelected();
 	if (!library_item) return;
 
+	S32 library_item_index = self->mLibraryList->getFirstSelectedIndex();
+
 	const LLScrollListCell* library_cell = library_item->getColumn(0);
 	const std::string& library_text = library_cell->getValue().asString();
 
-	self->addStep(library_text);
+	if( library_item_index >= STEP_EOF )
+	{
+		llerrs << "Unknown step type: " << library_text << llendl;
+		return;
+	}
 
+	self->addStep( (EStepType)library_item_index );
 	self->mDirty = TRUE;
 	self->refresh();
 }
 
-LLScrollListItem* LLPreviewGesture::addStep(const std::string& library_text)
+LLScrollListItem* LLPreviewGesture::addStep( const EStepType step_type )
 {
+	// Order of enum EStepType MUST match the library_list element in floater_preview_gesture.xml
+
 	LLGestureStep* step = NULL;
-	if (!LLStringUtil::compareInsensitive(library_text, "Animation"))
-	{
-		step = new LLGestureStepAnimation();
-	}
-	else if (!LLStringUtil::compareInsensitive(library_text, "Sound"))
-	{
-		step = new LLGestureStepSound();
-	}
-	else if (!LLStringUtil::compareInsensitive(library_text, "Chat"))
+	switch( step_type)
 	{
-		step = new LLGestureStepChat();
-	}
-	else if (!LLStringUtil::compareInsensitive(library_text, "Wait"))
-	{
-		step = new LLGestureStepWait();
-	}
-	else
-	{
-		llerrs << "Unknown step type: " << library_text << llendl;;
-		return NULL;
+		case STEP_ANIMATION:
+			step = new LLGestureStepAnimation();
+			break;
+		case STEP_SOUND:
+			step = new LLGestureStepSound();
+			break;
+		case STEP_CHAT:
+			step = new LLGestureStepChat();
+			break;
+		case STEP_WAIT:
+			step = new LLGestureStepWait();
+			break;
+		default:
+			llerrs << "Unknown step type: " << (S32)step_type << llendl;
+			return NULL;
 	}
 
 	// Create an enabled item with this step
diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h
index 91c214be62f..c245c0e8da5 100644
--- a/indra/newview/llpreviewgesture.h
+++ b/indra/newview/llpreviewgesture.h
@@ -34,6 +34,7 @@
 #define LL_LLPREVIEWGESTURE_H
 
 #include "llpreview.h"
+#include "llmultigesture.h"
 
 class LLMultiGesture;
 class LLLineEditor;
@@ -109,7 +110,7 @@ class LLPreviewGesture : public LLPreview
 
 	// Add a step.  Pass the name of the step, like "Animation",
 	// "Sound", "Chat", or "Wait"
-	LLScrollListItem* addStep(const std::string& step_name);
+	LLScrollListItem* addStep(const enum EStepType step_type);
 
 	static void updateLabel(LLScrollListItem* item);
 
diff --git a/indra/newview/llresourcedata.h b/indra/newview/llresourcedata.h
index 26097757941..46b79150bbf 100644
--- a/indra/newview/llresourcedata.h
+++ b/indra/newview/llresourcedata.h
@@ -42,6 +42,7 @@ struct LLResourceData
 	LLAssetType::EType mPreferredLocation;
 	LLInventoryType::EType mInventoryType;
 	U32 mNextOwnerPerm;
+	S32 mExpectedUploadCost;
 	void *mUserData;
 };
 
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index ebbc49fbd6a..dc4b8134dca 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -1896,7 +1896,7 @@ void pushVertsColorCoded(LLSpatialGroup* group, U32 mask)
 		LLColor4::green6
 	};
 		
-	static const U32 col_count = sizeof(colors)/sizeof(LLColor4);
+	static const U32 col_count = LL_ARRAY_SIZE(colors);
 
 	U32 col = 0;
 
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 6663b5ec191..b4f8f6b71ec 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -232,8 +232,6 @@ EStartupState LLStartUp::gStartupState = STATE_FIRST;
 
 void login_show();
 void login_callback(S32 option, void* userdata);
-std::string load_password_from_disk();
-void save_password_to_disk(const char* hashed_password);
 bool is_hex_string(U8* str, S32 len);
 void show_first_run_dialog();
 bool first_run_dialog_callback(const LLSD& notification, const LLSD& response);
@@ -351,7 +349,6 @@ bool idle_startup()
 	static S32  location_which = START_LOCATION_ID_LAST;
 
 	static bool show_connect_box = true;
-	static BOOL remember_password = TRUE;
 
 	static bool stipend_since_login = false;
 
@@ -684,7 +681,6 @@ bool idle_startup()
 			char md5pass[33];               /* Flawfinder: ignore */
 			pass.hex_digest(md5pass);
 			password = md5pass;
-			remember_password = gSavedSettings.getBOOL("RememberPassword");
 			
 #ifdef USE_VIEWER_AUTH
 			show_connect_box = true;
@@ -697,9 +693,8 @@ bool idle_startup()
 		{
 			firstname = gSavedSettings.getString("FirstName");
 			lastname = gSavedSettings.getString("LastName");
-			password = load_password_from_disk();
+			password = LLStartUp::loadPasswordFromDisk();
 			gSavedSettings.setBOOL("RememberPassword", TRUE);
-			remember_password = TRUE;
 			
 #ifdef USE_VIEWER_AUTH
 			show_connect_box = true;
@@ -713,8 +708,7 @@ bool idle_startup()
 			// a valid grid is selected
 			firstname = gSavedSettings.getString("FirstName");
 			lastname = gSavedSettings.getString("LastName");
-			password = load_password_from_disk();
-			remember_password = gSavedSettings.getBOOL("RememberPassword");
+			password = LLStartUp::loadPasswordFromDisk();
 			show_connect_box = true;
 		}
 
@@ -753,7 +747,7 @@ bool idle_startup()
 			// Load all the name information out of the login view
 			// NOTE: Hits "Attempted getFields with no login view shown" warning, since we don't
 			// show the login view until login_show() is called below.  
-			// LLPanelLogin::getFields(firstname, lastname, password, remember_password);
+			// LLPanelLogin::getFields(firstname, lastname, password);
 
 			if (gNoRender)
 			{
@@ -765,7 +759,7 @@ bool idle_startup()
 			// Show the login dialog
 			login_show();
 			// connect dialog is already shown, so fill in the names
-			LLPanelLogin::setFields( firstname, lastname, password, remember_password );
+			LLPanelLogin::setFields( firstname, lastname, password);
 
 			LLPanelLogin::giveFocus();
 
@@ -834,7 +828,7 @@ bool idle_startup()
 		{
 			// TODO if not use viewer auth
 			// Load all the name information out of the login view
-			LLPanelLogin::getFields(firstname, lastname, password, remember_password);
+			LLPanelLogin::getFields(&firstname, &lastname, &password);
 			// end TODO
 	 
 			// HACK: Try to make not jump on login
@@ -846,16 +840,6 @@ bool idle_startup()
 			gSavedSettings.setString("FirstName", firstname);
 			gSavedSettings.setString("LastName", lastname);
 
-			if (remember_password)
-			{
-				   save_password_to_disk(password.c_str());
-			}
-			else
-			{
-				   save_password_to_disk(NULL);
-			}
-			gSavedSettings.setBOOL("RememberPassword", remember_password);
-
 			LL_INFOS("AppInit") << "Attempting login as: " << firstname << " " << lastname << LL_ENDL;
 			gDebugInfo["LoginName"] = firstname + " " + lastname;	
 		}
@@ -1362,15 +1346,17 @@ bool idle_startup()
 			gSavedSettings.setString("FirstName", firstname);
 			gSavedSettings.setString("LastName", lastname);
 
-			if (remember_password)
+			if (gSavedSettings.getBOOL("RememberPassword"))
 			{
-				   save_password_to_disk(password.c_str());
+				// Successful login means the password is valid, so save it.
+				LLStartUp::savePasswordToDisk(password);
 			}
 			else
 			{
-				   save_password_to_disk(NULL);
+				// Don't leave password from previous session sitting around
+				// during this login session.
+				LLStartUp::deletePasswordFromDisk();
 			}
-			gSavedSettings.setBOOL("RememberPassword", remember_password);
 
 			text = LLUserAuth::getInstance()->getResponse("agent_access");
 			if(!text.empty() && (text[0] == 'M'))
@@ -1563,7 +1549,7 @@ bool idle_startup()
 			// Pass the user information to the voice chat server interface.
 			gVoiceClient->userAuthorized(firstname, lastname, gAgentID);
 		}
-		else
+		else // if(successful_login)
 		{
 			if (gNoRender)
 			{
@@ -1578,8 +1564,6 @@ bool idle_startup()
 			reset_login();
 			gSavedSettings.setBOOL("AutoLogin", FALSE);
 			show_connect_box = true;
-			// Don't save an incorrect password to disk.
-			save_password_to_disk(NULL);
 		}
 		return FALSE;
 	}
@@ -2571,16 +2555,11 @@ void login_callback(S32 option, void *userdata)
 	{
 		// Make sure we don't save the password if the user is trying to clear it.
 		std::string first, last, password;
-		BOOL remember = TRUE;
-		LLPanelLogin::getFields(first, last, password, remember);
-		if (!remember)
+		LLPanelLogin::getFields(&first, &last, &password);
+		if (!gSavedSettings.getBOOL("RememberPassword"))
 		{
 			// turn off the setting and write out to disk
-			gSavedSettings.setBOOL("RememberPassword", FALSE);
 			gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile") , TRUE );
-
-			// stomp the saved password on disk
-			save_password_to_disk(NULL);
 		}
 
 		// Next iteration through main loop should shut down the app cleanly.
@@ -2598,8 +2577,18 @@ void login_callback(S32 option, void *userdata)
 	}
 }
 
-std::string load_password_from_disk()
+
+// static
+std::string LLStartUp::loadPasswordFromDisk()
 {
+	// Only load password if we also intend to save it (otherwise the user
+	// wonders what we're doing behind his back).  JC
+	BOOL remember_password = gSavedSettings.getBOOL("RememberPassword");
+	if (!remember_password)
+	{
+		return std::string("");
+	}
+
 	std::string hashed_password("");
 
 	// Look for legacy "marker" password from settings.ini
@@ -2651,41 +2640,45 @@ std::string load_password_from_disk()
 	return hashed_password;
 }
 
-void save_password_to_disk(const char* hashed_password)
+
+// static
+void LLStartUp::savePasswordToDisk(const std::string& hashed_password)
 {
 	std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,
 													   "password.dat");
-	if (!hashed_password)
+	LLFILE* fp = LLFile::fopen(filepath, "wb");		/* Flawfinder: ignore */
+	if (!fp)
 	{
-		// No password, remove the file.
-		LLFile::remove(filepath);
+		return;
 	}
-	else
-	{
-		LLFILE* fp = LLFile::fopen(filepath, "wb");		/* Flawfinder: ignore */
-		if (!fp)
-		{
-			return;
-		}
-
-		// Encipher with MAC address
-		const S32 HASHED_LENGTH = 32;
-		U8 buffer[HASHED_LENGTH+1];
 
-		LLStringUtil::copy((char*)buffer, hashed_password, HASHED_LENGTH+1);
+	// Encipher with MAC address
+	const S32 HASHED_LENGTH = 32;
+	U8 buffer[HASHED_LENGTH+1];
 
-		LLXORCipher cipher(gMACAddress, 6);
-		cipher.encrypt(buffer, HASHED_LENGTH);
+	LLStringUtil::copy((char*)buffer, hashed_password.c_str(), HASHED_LENGTH+1);
 
-		if (fwrite(buffer, HASHED_LENGTH, 1, fp) != 1)
-		{
-			LL_WARNS("AppInit") << "Short write" << LL_ENDL;
-		}
+	LLXORCipher cipher(gMACAddress, 6);
+	cipher.encrypt(buffer, HASHED_LENGTH);
 
-		fclose(fp);
+	if (fwrite(buffer, HASHED_LENGTH, 1, fp) != 1)
+	{
+		LL_WARNS("AppInit") << "Short write" << LL_ENDL;
 	}
+
+	fclose(fp);
 }
 
+
+// static
+void LLStartUp::deletePasswordFromDisk()
+{
+	std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,
+														  "password.dat");
+	LLFile::remove(filepath);
+}
+
+
 bool is_hex_string(U8* str, S32 len)
 {
 	bool rv = true;
@@ -2869,6 +2862,8 @@ bool update_dialog_callback(const LLSD& notification, const LLSD& response)
 	query_map["os"] = "mac";
 #elif LL_LINUX
 	query_map["os"] = "lnx";
+#elif LL_SOLARIS
+	query_map["os"] = "sol";
 #endif
 	// *TODO change userserver to be grid on both viewer and sim, since
 	// userserver no longer exists.
@@ -2952,7 +2947,7 @@ bool update_dialog_callback(const LLSD& notification, const LLSD& response)
 	// Run the auto-updater.
 	system(LLAppViewer::sUpdaterInfo->mUpdateExePath.c_str()); /* Flawfinder: ignore */
 
-#elif LL_LINUX
+#elif LL_LINUX || LL_SOLARIS
 	OSMessageBox("Automatic updating is not yet implemented for Linux.\n"
 		"Please download the latest version from www.secondlife.com.",
 		LLStringUtil::null, OSMB_OK);
diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h
index e455c4aed16..fe347e9efe2 100644
--- a/indra/newview/llstartup.h
+++ b/indra/newview/llstartup.h
@@ -37,7 +37,6 @@
 
 // functions
 bool idle_startup();
-std::string load_password_from_disk();
 void release_start_screen();
 bool login_alert_done(const LLSD& notification, const LLSD& response);
 
@@ -99,6 +98,15 @@ class LLStartUp
 	static void loadInitialOutfit( const std::string& outfit_folder_name,
 								   const std::string& gender_name );
 
+	// Load MD5 of user's password from local disk file.
+	static std::string loadPasswordFromDisk();
+	
+	// Record MD5 of user's password for subsequent login.
+	static void savePasswordToDisk(const std::string& hashed_password);
+	
+	// Delete the saved password local disk file.
+	static void deletePasswordFromDisk();
+	
 	static bool dispatchURL();
 		// if we have a SLURL or sim string ("Ahern/123/45") that started
 		// the viewer, dispatch it
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index b1ad80cdd93..450e5d83afc 100644
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -235,7 +235,7 @@ void LLTextureBar::draw()
 		{ "MIS", LLColor4::red }, // LAST_STATE+4
 		{ "---", LLColor4::white }, // LAST_STATE+5
 	};
-	const S32 fetch_state_desc_size = (S32)(sizeof(fetch_state_desc)/sizeof(fetch_state_desc[0]));
+	const S32 fetch_state_desc_size = (S32)LL_ARRAY_SIZE(fetch_state_desc);
 	S32 state =
 		mImagep->mNeedsCreateTexture ? LAST_STATE+1 :
 		mImagep->mFullyLoaded ? LAST_STATE+2 :
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index fe94863f2d5..70fc78d2774 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -526,6 +526,14 @@ void LLViewerMedia::buildMediaManagerData( LLMediaManagerData* init_data )
 	std::string component_dir( gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "" ) );
 	component_dir += gDirUtilp->getDirDelimiter();
 	component_dir += "mozilla-runtime-linux-i686";
+#elif LL_SOLARIS
+	std::string component_dir( gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "" ) );
+	component_dir += gDirUtilp->getDirDelimiter();
+	#ifdef  __sparc
+		component_dir += "mozilla-solaris-sparc";
+	#else
+		component_dir += "mozilla-solaris-i686";
+	#endif
 #else
 	std::string component_dir( gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "" ) );
 	component_dir += gDirUtilp->getDirDelimiter();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 17f59595f67..e0b7b233ecd 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -285,9 +285,6 @@ typedef LLMemberListener<LLView> view_listener_t;
 void handle_leave_group(void *);
 
 // File Menu
-const char* upload_pick(void* data);
-void handle_upload(void* data);
-//void handle_upload_object(void* data);
 void handle_compress_image(void*);
 BOOL enable_save_as(void *);
 
@@ -654,7 +651,7 @@ void init_menus()
     gViewerWindow->setMenuBackgroundColor(false, 
         LLViewerLogin::getInstance()->isInProductionGrid());
 
-	// *TODO:Get the cost info from the server
+	// Assume L$10 for now, the server will tell us the real cost at login
 	const std::string upload_cost("10");
 	gMenuHolder->childSetLabelArg("Upload Image", "[COST]", upload_cost);
 	gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", upload_cost);
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index ff8d717b12a..a6dede1e382 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -274,6 +274,7 @@ class LLFileUploadSound : public view_listener_t
 		{
 			LLFloaterNameDesc* floaterp = new LLFloaterNameDesc(filename);
 			LLUICtrlFactory::getInstance()->buildFloater(floaterp, "floater_sound_preview.xml");
+			floaterp->childSetLabelArg("ok_btn", "[AMOUNT]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload() ));
 		}
 		return true;
 	}
@@ -324,8 +325,14 @@ class LLFileUploadBulk : public view_listener_t
 			LLStringUtil::stripNonprintable(asset_name);
 			LLStringUtil::trim(asset_name);
 			
+			std::string display_name = LLStringUtil::null;
+			LLAssetStorage::LLStoreAssetCallback callback = NULL;
+			S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
+			void *userdata = NULL;
 			upload_new_resource(filename, asset_name, asset_name, 0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
-				LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms());
+				LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
+					    display_name,
+					    callback, expected_upload_cost, userdata);
 
 			// *NOTE: Ew, we don't iterate over the file list here,
 			// we handle the next files in upload_done_callback()
@@ -482,6 +489,7 @@ void handle_upload(void* data)
 	{
 		LLFloaterNameDesc* floaterp = new LLFloaterNameDesc(filename);
 		LLUICtrlFactory::getInstance()->buildFloater(floaterp, "floater_name_description.xml");
+		floaterp->childSetLabelArg("ok_btn", "[AMOUNT]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload() ));
 	}
 }
 
@@ -517,15 +525,16 @@ void handle_compress_image(void*)
 }
 
 void upload_new_resource(const std::string& src_filename, std::string name,
-						 std::string desc, S32 compression_info,
-						 LLAssetType::EType destination_folder_type,
-						 LLInventoryType::EType inv_type,
-						 U32 next_owner_perms,
-						 U32 group_perms,
-						 U32 everyone_perms,
-						 const std::string& display_name,
-						 LLAssetStorage::LLStoreAssetCallback callback,
-						 void *userdata)
+			 std::string desc, S32 compression_info,
+			 LLAssetType::EType destination_folder_type,
+			 LLInventoryType::EType inv_type,
+			 U32 next_owner_perms,
+			 U32 group_perms,
+			 U32 everyone_perms,
+			 const std::string& display_name,
+			 LLAssetStorage::LLStoreAssetCallback callback,
+			 S32 expected_upload_cost,
+			 void *userdata)
 {	
 	// Generate the temporary UUID.
 	std::string filename = gDirUtilp->getTempFilename();
@@ -809,8 +818,8 @@ void upload_new_resource(const std::string& src_filename, std::string name,
 			t_disp_name = src_filename;
 		}
 		upload_new_resource(tid, asset_type, name, desc, compression_info, // tid
-							destination_folder_type, inv_type, next_owner_perms, group_perms, everyone_perms,
-							display_name, callback, userdata);
+				    destination_folder_type, inv_type, next_owner_perms, group_perms, everyone_perms,
+				    display_name, callback, expected_upload_cost, userdata);
 	}
 	else
 	{
@@ -829,8 +838,10 @@ void upload_new_resource(const std::string& src_filename, std::string name,
 void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed)
 {
 	LLResourceData* data = (LLResourceData*)user_data;
+	S32 expected_upload_cost = data ? data->mExpectedUploadCost : 0;
 	//LLAssetType::EType pref_loc = data->mPreferredLocation;
 	BOOL is_balance_sufficient = TRUE;
+
 	if(result >= 0)
 	{
 		LLAssetType::EType dest_loc = (data->mPreferredLocation == LLAssetType::AT_NONE) ? data->mAssetInfo.mType : data->mPreferredLocation;
@@ -841,20 +852,19 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
 		{
 			// Charge the user for the upload.
 			LLViewerRegion* region = gAgent.getRegion();
-			S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
 
-			if(!(can_afford_transaction(upload_cost)))
+			if(!(can_afford_transaction(expected_upload_cost)))
 			{
 				LLFloaterBuyCurrency::buyCurrency(
 					llformat("Uploading %s costs",
 							 data->mAssetInfo.getName().c_str()), // *TODO: Translate
-					upload_cost);
+					expected_upload_cost);
 				is_balance_sufficient = FALSE;
 			}
 			else if(region)
 			{
 				// Charge user for upload
-				gStatusBar->debitBalance(upload_cost);
+				gStatusBar->debitBalance(expected_upload_cost);
 				
 				LLMessageSystem* msg = gMessageSystem;
 				msg->newMessageFast(_PREHASH_MoneyTransferRequest);
@@ -865,7 +875,9 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
 				msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID());
 				msg->addUUIDFast(_PREHASH_DestID, LLUUID::null);
 				msg->addU8("Flags", 0);
-				msg->addS32Fast(_PREHASH_Amount, upload_cost);
+				// we tell the sim how much we were expecting to pay so it
+				// can respond to any discrepancy
+				msg->addS32Fast(_PREHASH_Amount, expected_upload_cost);
 				msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY);
 				msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY);
 				msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE);
@@ -921,22 +933,31 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
 		LLStringUtil::stripNonprintable(asset_name);
 		LLStringUtil::trim(asset_name);
 
+		std::string display_name = LLStringUtil::null;
+		LLAssetStorage::LLStoreAssetCallback callback = NULL;
+		void *userdata = NULL;
 		upload_new_resource(next_file, asset_name, asset_name,	// file
-							0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE);
+				    0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,
+				    PERM_NONE, PERM_NONE, PERM_NONE,
+				    display_name,
+				    callback,
+				    expected_upload_cost, // assuming next in a group of uploads is of roughly the same type, i.e. same upload cost
+				    userdata);
 	}
 }
 
 void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_type,
-						 std::string name,
-						 std::string desc, S32 compression_info,
-						 LLAssetType::EType destination_folder_type,
-						 LLInventoryType::EType inv_type,
-						 U32 next_owner_perms,
-						 U32 group_perms,
-						 U32 everyone_perms,
-						 const std::string& display_name,
-						 LLAssetStorage::LLStoreAssetCallback callback,
-						 void *userdata)
+			 std::string name,
+			 std::string desc, S32 compression_info,
+			 LLAssetType::EType destination_folder_type,
+			 LLInventoryType::EType inv_type,
+			 U32 next_owner_perms,
+			 U32 group_perms,
+			 U32 everyone_perms,
+			 const std::string& display_name,
+			 LLAssetStorage::LLStoreAssetCallback callback,
+			 S32 expected_upload_cost,
+			 void *userdata)
 {
 	if(gDisconnected)
 	{
@@ -985,6 +1006,7 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
 	llinfos << "UUID: " << uuid << llendl;
 	llinfos << "Name: " << name << llendl;
 	llinfos << "Desc: " << desc << llendl;
+	llinfos << "Expected Upload Cost: " << expected_upload_cost << llendl;
 	lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type) << llendl;
 	lldebugs << "Asset Type: " << LLAssetType::lookup(asset_type) << llendl;
 	std::string url = gAgent.getRegion()->getCapability("NewFileAgentInventory");
@@ -1000,6 +1022,7 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
 		body["next_owner_mask"] = LLSD::Integer(next_owner_perms);
 		body["group_mask"] = LLSD::Integer(group_perms);
 		body["everyone_mask"] = LLSD::Integer(everyone_perms);
+		body["expected_upload_cost"] = LLSD::Integer(expected_upload_cost);
 		
 		//std::ostringstream llsdxml;
 		//LLSDSerialize::toPrettyXML(body, llsdxml);
@@ -1016,12 +1039,11 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
 			LLAssetType::AT_TEXTURE == asset_type ||
 			LLAssetType::AT_ANIMATION == asset_type)
 		{
-			S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
 			S32 balance = gStatusBar->getBalance();
-			if (balance < upload_cost)
+			if (balance < expected_upload_cost)
 			{
 				// insufficient funds, bail on this upload
-				LLFloaterBuyCurrency::buyCurrency("Uploading costs", upload_cost);
+				LLFloaterBuyCurrency::buyCurrency("Uploading costs", expected_upload_cost);
 				return;
 			}
 		}
@@ -1033,6 +1055,7 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty
 		data->mAssetInfo.mCreatorID = gAgentID;
 		data->mInventoryType = inv_type;
 		data->mNextOwnerPerm = next_owner_perms;
+		data->mExpectedUploadCost = expected_upload_cost;
 		data->mUserData = userdata;
 		data->mAssetInfo.setName(name);
 		data->mAssetInfo.setDescription(desc);
diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h
index 5a7aa427b4a..bf21292082b 100644
--- a/indra/newview/llviewermenufile.h
+++ b/indra/newview/llviewermenufile.h
@@ -42,30 +42,32 @@ class LLTransactionID;
 void init_menu_file();
 
 void upload_new_resource(const std::string& src_filename, 
-						 std::string name,
-						 std::string desc, 
-						 S32 compression_info,
-						 LLAssetType::EType destination_folder_type,
-						 LLInventoryType::EType inv_type,
-						 U32 next_owner_perms = 0x0,	// PERM_NONE
-						 U32 group_perms = 0x0,	// PERM_NONE
-						 U32 everyone_perms = 0x0,	// PERM_NONE
-						 const std::string& display_name = LLStringUtil::null,
-						 LLAssetStorage::LLStoreAssetCallback callback = NULL,
-						 void *userdata = NULL);
+			 std::string name,
+			 std::string desc, 
+			 S32 compression_info,
+			 LLAssetType::EType destination_folder_type,
+			 LLInventoryType::EType inv_type,
+			 U32 next_owner_perms,
+			 U32 group_perms,
+			 U32 everyone_perms,
+			 const std::string& display_name,
+			 LLAssetStorage::LLStoreAssetCallback callback,
+			 S32 expected_upload_cost,
+			 void *userdata);
 
 void upload_new_resource(const LLTransactionID &tid, 
-						 LLAssetType::EType type,
-						 std::string name,
-						 std::string desc, 
-						 S32 compression_info,
-						 LLAssetType::EType destination_folder_type,
-						 LLInventoryType::EType inv_type,
-						 U32 next_owner_perms = 0x0,	// PERM_NONE
-						 U32 group_perms = 0x0,	// PERM_NONE
-						 U32 everyone_perms = 0x0,	// PERM_NONE
-						 const std::string& display_name = LLStringUtil::null,
-						 LLAssetStorage::LLStoreAssetCallback callback = NULL,
-						 void *userdata = NULL);
+			 LLAssetType::EType type,
+			 std::string name,
+			 std::string desc, 
+			 S32 compression_info,
+			 LLAssetType::EType destination_folder_type,
+			 LLInventoryType::EType inv_type,
+			 U32 next_owner_perms,
+			 U32 group_perms,
+			 U32 everyone_perms,
+			 const std::string& display_name,
+			 LLAssetStorage::LLStoreAssetCallback callback,
+			 S32 expected_upload_cost,
+			 void *userdata);
 
 #endif
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 08dbc5b3b8d..c840557f018 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -73,6 +73,7 @@
 #include "lldrawpool.h"
 #include "llfirstuse.h"
 #include "llfloateractivespeakers.h"
+#include "llfloateranimpreview.h"
 #include "llfloaterbuycurrency.h"
 #include "llfloaterbuyland.h"
 #include "llfloaterchat.h"
@@ -133,7 +134,6 @@
 #include "pipeline.h"
 #include "llappviewer.h"
 #include "llfloaterworldmap.h"
-#include "llkeythrottle.h"
 #include "llviewerdisplay.h"
 #include "llkeythrottle.h"
 
@@ -227,6 +227,8 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)
 		break;
 	case 1:
 		// decline
+		// We no longer notify other viewers, but we DO still send
+		// the rejection to the simulator to delete the pending userop.
 		msg->newMessageFast(_PREHASH_DeclineFriendship);
 		msg->nextBlockFast(_PREHASH_AgentData);
 		msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
@@ -721,7 +723,7 @@ class LLOpenAgentOffer : public LLInventoryFetchObserver
 //instance of the AddedObserver for TaskOffers
 //and it never dies.  We do this because we don't know the UUID of 
 //task offers until they are accepted, so we don't wouldn't 
-//know what to watch for, so instead we just watch for all additions. -Gigs
+//know what to watch for, so instead we just watch for all additions.
 class LLOpenTaskOffer : public LLInventoryAddedObserver
 {
 protected:
@@ -797,7 +799,7 @@ class LLDiscardAgentOffer : public LLInventoryFetchComboObserver
 
 //Returns TRUE if we are OK, FALSE if we are throttled
 //Set check_only true if you want to know the throttle status 
-//without registering a hit -Gigs
+//without registering a hit
 bool check_offer_throttle(const std::string& from_name, bool check_only)
 {
 	static U32 throttle_count;
@@ -824,14 +826,14 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)
 	{
 		LL_DEBUGS("Messaging") << "Throttle Not Expired, Count: " << throttle_count << LL_ENDL;
 		// When downloading the initial inventory we get a lot of new items
-		// coming in and can't tell that from spam.  JC
+		// coming in and can't tell that from spam.
 		if (LLStartUp::getStartupState() >= STATE_STARTED
 			&& throttle_count >= OFFER_THROTTLE_MAX_COUNT)
 		{
 			if (!throttle_logged)
 			{
 				// Use the name of the last item giver, who is probably the person
-				// spamming you. JC
+				// spamming you.
 				std::ostringstream message;
 				message << LLAppViewer::instance()->getSecondLifeTitle();
 				if (!from_name.empty())
@@ -879,10 +881,10 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name)
 		}
 		LLAssetType::EType asset_type = item->getType();
 
-		//if we are throttled, don't display them - Gigs
+		//if we are throttled, don't display them
 		if (check_offer_throttle(from_name, false))
 		{
-			// I'm not sure this is a good idea.  JC
+			// I'm not sure this is a good idea.
 			bool show_keep_discard = item->getPermissions().getCreator() != gAgent.getID();
 			//bool show_keep_discard = true;
 			switch(asset_type)
@@ -934,7 +936,7 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name)
 			return;
 		}
 
-		//Not sure about this check.  Could make it easy to miss incoming items. -Gigs
+		//Not sure about this check.  Could make it easy to miss incoming items.
 		//don't dick with highlight while the user is working
 		//if(inventory_has_focus && !user_is_away)
 		//	break;
@@ -1037,7 +1039,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 	// This must be done here because:
 	// * callback may be called immediately,
 	// * adding the mute sends a message,
-	// * we can't build two messages at once.  JC
+	// * we can't build two messages at once.
 	if (2 == button)
 	{
 		gCacheName->get(mFromID, mFromGroup, inventory_offer_mute_callback, this);
@@ -1301,7 +1303,7 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
 	}
 
 	// Name cache callbacks don't store userdata, so can't save
-	// off the LLOfferInfo.  Argh.  JC
+	// off the LLOfferInfo.  Argh.
 	BOOL name_found = FALSE;
 	if (info->mFromGroup)
 	{
@@ -1948,6 +1950,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 					<< LLURI::mapToQueryString(query_string);
 
 			chat.mURL = link.str();
+			chat.mText = name + separator_string + message.substr(message_offset);
 
 			// Note: lie to LLFloaterChat::addChat(), pretending that this is NOT an IM, because
 			// IMs from objcts don't open IM sessions.
@@ -2092,11 +2095,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 		}
 		break;
 
-	case IM_FRIENDSHIP_DECLINED:
-		args["NAME"] = name;
-		LLNotifications::instance().add("FriendshipDeclined", args);
-		break;
-
+	case IM_FRIENDSHIP_DECLINED_DEPRECATED:
 	default:
 		LL_WARNS("Messaging") << "Instant message calling for unknown dialog "
 				<< (S32)dialog << LL_ENDL;
@@ -2769,7 +2768,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 	if (!avatarp)
 	{
 		// Could happen if you were immediately god-teleported away on login,
-		// maybe other cases.  Continue, but warn.  JC
+		// maybe other cases.  Continue, but warn.
 		LL_WARNS("Messaging") << "agent_movement_complete() with NULL avatarp." << LL_ENDL;
 	}
 
@@ -2809,7 +2808,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 
 	if( is_teleport )
 	{
-		// Force the camera back onto the agent, don't animate. JC
+		// Force the camera back onto the agent, don't animate.
 		gAgent.setFocusOnAvatar(TRUE, FALSE);
 		gAgent.slamLookAt(look_at);
 		gAgent.updateCamera();
@@ -4261,7 +4260,7 @@ void process_mean_collision_alert_message(LLMessageSystem *msgsystem, void **use
 {
 	if (gAgent.inPrelude())
 	{
-		// JC: In prelude, bumping is OK.  This dialog is rather confusing to 
+		// In prelude, bumping is OK.  This dialog is rather confusing to 
 		// newbies, so we don't show it.  Drop the packet on the floor.
 		return;
 	}
@@ -4336,7 +4335,11 @@ void process_economy_data(LLMessageSystem *msg, void** /*user_data*/)
 	LLGlobalEconomy::processEconomyData(msg, LLGlobalEconomy::Singleton::getInstance());
 
 	S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
+
+	LL_INFOS_ONCE("Messaging") << "EconomyData message arrived; upload cost is L$" << upload_cost << LL_ENDL;
+
 	LLFloaterImagePreview::setUploadAmount(upload_cost);
+	LLFloaterAnimPreview::setUploadAmount(upload_cost);
 
 	gMenuHolder->childSetLabelArg("Upload Image", "[COST]", llformat("%d", upload_cost));
 	gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", llformat("%d", upload_cost));
@@ -4521,14 +4524,26 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
 	msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, owner_name);
 	msg->getS32Fast(_PREHASH_Data, _PREHASH_Questions, questions );
 
-	// don't display permission requests if this object is muted - JS.
+	// Special case. If the objects are owned by this agent, throttle per-object instead
+	// of per-owner. It's common for residents to reset a ton of scripts that re-request
+	// permissions, as with tier boxes. UUIDs can't be valid agent names and vice-versa,
+	// so we'll reuse the same namespace for both throttle types.
+	std::string throttle_name = owner_name;
+	std::string self_name;
+	gAgent.getName( self_name );
+	if( owner_name == self_name )
+	{
+		throttle_name = taskid.getString();
+	}
+	
+	// don't display permission requests if this object is muted
 	if (LLMuteList::getInstance()->isMuted(taskid)) return;
-
+	
 	// throttle excessive requests from any specific user's scripts
 	typedef LLKeyThrottle<std::string> LLStringThrottle;
 	static LLStringThrottle question_throttle( LLREQUEST_PERMISSION_THROTTLE_LIMIT, LLREQUEST_PERMISSION_THROTTLE_INTERVAL );
 
-	switch (question_throttle.noteAction(owner_name))
+	switch (question_throttle.noteAction(throttle_name))
 	{
 		case LLStringThrottle::THROTTLE_NEWLY_BLOCKED:
 			LL_INFOS("Messaging") << "process_script_question throttled"
@@ -5426,7 +5441,7 @@ void invalid_message_callback(LLMessageSystem* msg,
 }
 
 // Please do not add more message handlers here. This file is huge.
-// Put them in a file related to the functionality you are implementing. JC
+// Put them in a file related to the functionality you are implementing.
 
 void LLOfferInfo::forceResponse(InventoryOfferResponse response)
 {
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 1b4517372d9..07569a5e546 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -58,6 +58,7 @@
 #include "llviewerwindow.h"		// *TODO: remove, only used for width/height
 #include "llworld.h"
 #include "llfeaturemanager.h"
+#include "llviewernetwork.h"
 #if LL_LCD_COMPILE
 #include "lllcd.h"
 #endif
@@ -662,7 +663,7 @@ void send_stats()
 	time(&ltime);
 	F32 run_time = F32(LLFrameTimer::getElapsedSeconds());
 
-	agent["start_time"] = ltime - run_time;
+	agent["start_time"] = S32(ltime - S32(run_time));
 
 	// The first stat set must have a 0 run time if it doesn't actually
 	// contain useful data in terms of FPS, etc.  We use half the
@@ -701,7 +702,11 @@ void send_stats()
 	system["ram"] = (S32) gSysMemory.getPhysicalMemoryKB();
 	system["os"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple();
 	system["cpu"] = gSysCPU.getCPUString();
-
+	std::string macAddressString = llformat("%02x-%02x-%02x-%02x-%02x-%02x",
+											gMACAddress[0],gMACAddress[1],gMACAddress[2],
+											gMACAddress[3],gMACAddress[4],gMACAddress[5]);
+	system["mac_address"] = macAddressString;
+	system["serial_number"] = LLAppViewer::instance()->getSerialNumber();
 	std::string gpu_desc = llformat(
 		"%-6s Class %d ",
 		gGLManager.mGLVendorShort.substr(0,6).c_str(),
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 597513ba0c4..4f2504fc172 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -3216,69 +3216,69 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
 				(is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute)
 				|| is_appearance != mNameAppearance)
 			{
-				char line[MAX_STRING];		/* Flawfinder: ignore */
+				std::string line;
 				if (!sRenderGroupTitles)
 				{
 					// If all group titles are turned off, stack first name
 					// on a line above last name
-					strncpy(line, firstname->getString(), MAX_STRING -1 );		/* Flawfinder: ignore */
-					line[MAX_STRING -1] = '\0';
-					strcat(line, "\n");
+					line += firstname->getString();
+					line += "\n";
 				}
 				else if (title && title->getString() && title->getString()[0] != '\0')
 				{
-					strncpy(line, title->getString(), MAX_STRING -1 );		/* Flawfinder: ignore */
-					line[MAX_STRING -1] = '\0';
-					strcat(line, "\n");		/* Flawfinder: ignore */
-					strncat(line, firstname->getString(), MAX_STRING - strlen(line) -1 );		/* Flawfinder: ignore */
+					line += title->getString();
+					LLStringFn::replace_ascii_controlchars(line,LL_UNKNOWN_CHAR);
+					line += "\n";
+					line += firstname->getString();
 				}
 				else
 				{
-					strncpy(line, firstname->getString(), MAX_STRING -1 );		/* Flawfinder: ignore */
-					line[MAX_STRING -1] = '\0';
+					line += firstname->getString();
 				}
 
-				strcat(line, " ");		/* Flawfinder: ignore */
-				strncat(line, lastname->getString(), MAX_STRING - strlen(line) -1);		/* Flawfinder: ignore */
+				line += " ";
+				line += lastname->getString();
 				BOOL need_comma = FALSE;
 
 				if (is_away || is_muted || is_busy)
 				{
-					strcat(line, " (");		/* Flawfinder: ignore */
+					line += " (";
 					if (is_away)
 					{
-						strcat(line, "Away");		/* Flawfinder: ignore */
+						line += "Away";
 						need_comma = TRUE;
 					}
 					if (is_busy)
 					{
 						if (need_comma)
 						{
-							strcat(line, ", ");		/* Flawfinder: ignore */
+							line += ", ";
 						}
-						strcat(line, "Busy");		/* Flawfinder: ignore */
+						line += "Busy";
 						need_comma = TRUE;
 					}
 					if (is_muted)
 					{
 						if (need_comma)
 						{
-							strcat(line, ", ");		/* Flawfinder: ignore */
+							line += ", ";
 						}
-						strcat(line, "Muted");		/* Flawfinder: ignore */
+						line += "Muted";
 						need_comma = TRUE;
 					}
-					strcat(line,")");		/* Flawfinder: ignore */
+					line += ")";
 				}
 				if (is_appearance)
 				{
-					strcat(line, "\n(Editing Appearance)");		/* Flawfinder: ignore */
+					line += "\n";
+					line += "(Editing Appearance)";
 				}
 				mNameAway = is_away;
 				mNameBusy = is_busy;
 				mNameMute = is_muted;
 				mNameAppearance = is_appearance;
 				mTitle = title ? title->getString() : "";
+				LLStringFn::replace_ascii_controlchars(mTitle,LL_UNKNOWN_CHAR);
 				mNameString = utf8str_to_wstring(line);
 				new_name = TRUE;
 			}
@@ -3915,7 +3915,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 	// Generate footstep sounds when feet hit the ground
 	//-------------------------------------------------------------------------
 	const LLUUID AGENT_FOOTSTEP_ANIMS[] = {ANIM_AGENT_WALK, ANIM_AGENT_RUN, ANIM_AGENT_LAND};
-	const S32 NUM_AGENT_FOOTSTEP_ANIMS = sizeof(AGENT_FOOTSTEP_ANIMS) / sizeof(LLUUID);
+	const S32 NUM_AGENT_FOOTSTEP_ANIMS = LL_ARRAY_SIZE(AGENT_FOOTSTEP_ANIMS);
 
 	if ( gAudiop && isAnyAnimationSignaled(AGENT_FOOTSTEP_ANIMS, NUM_AGENT_FOOTSTEP_ANIMS) )
 	{
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 6a6064e0a2d..1a4f28a8aa3 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -863,7 +863,7 @@ LLVoiceClient::LLVoiceClient()
 	// This now happens when init() is called instead.
 	mPump = NULL;
 	
-#if LL_DARWIN || LL_LINUX
+#if LL_DARWIN || LL_LINUX || LL_SOLARIS
 		// MBW -- XXX -- THIS DOES NOT BELONG HERE
 		// When the vivox daemon dies, the next write attempt on our socket generates a SIGPIPE, which kills us.
 		// This should cause us to ignore SIGPIPE and handle the error through proper channels.
diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp
index 1cb5ee77543..ea9c00ae815 100644
--- a/indra/newview/llwlparamset.cpp
+++ b/indra/newview/llwlparamset.cpp
@@ -69,7 +69,7 @@ LLWLParamSet::LLWLParamSet(void) :
 		std::make_pair("gamma",					LLVector4(2.0f, 2.0f, 2.0f, 0.0f)),
 	};
 	std::map<std::string, LLVector4>::value_type const * endHardcodedPreset = 
-		hardcodedPreset + sizeof(hardcodedPreset)/sizeof(hardcodedPreset[0]);
+		hardcodedPreset + LL_ARRAY_SIZE(hardcodedPreset);
 
 	mParamValues.insert(hardcodedPreset, endHardcodedPreset);
 */
diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp
index e01e5957475..4d46ff19cc8 100644
--- a/indra/newview/llworldmap.cpp
+++ b/indra/newview/llworldmap.cpp
@@ -49,6 +49,13 @@
 
 const F32 REQUEST_ITEMS_TIMER =  10.f * 60.f; // 10 minutes
 
+// For DEV-17507, do lazy image loading in llworldmapview.cpp instead,
+// limiting requests to currently visible regions and minimizing the
+// number of textures being requested simultaneously.
+//
+// Uncomment IMMEDIATE_IMAGE_LOAD to restore the old behavior
+//
+//#define IMMEDIATE_IMAGE_LOAD
 LLItemInfo::LLItemInfo(F32 global_x, F32 global_y,
 					   const std::string& name, 
 					   LLUUID id,
@@ -611,13 +618,17 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**)
 			siminfo->mRegionFlags = region_flags;
 			siminfo->mWaterHeight = (F32) water_height;
 			siminfo->mMapImageID[agent_flags] = image_id;
+#ifdef IMMEDIATE_IMAGE_LOAD
 			siminfo->mCurrentImage = gImageList.getImage(siminfo->mMapImageID[LLWorldMap::getInstance()->mCurrentMap], MIPMAP_TRUE, FALSE);
 			gGL.getTexUnit(0)->bind(siminfo->mCurrentImage.get());
 			siminfo->mCurrentImage->setClamp(TRUE, TRUE);
+#endif
 			
 			if (siminfo->mMapImageID[2].notNull())
 			{
+#ifdef IMMEDIATE_IMAGE_LOAD
 				siminfo->mOverlayImage = gImageList.getImage(siminfo->mMapImageID[2], MIPMAP_TRUE, FALSE);
+#endif
 			}
 			else
 			{
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 685ca8bba55..1cf8755e626 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -61,6 +61,7 @@
 #include "llviewerregion.h"
 #include "llviewerwindow.h"
 #include "llworldmap.h"
+#include "lltexturefetch.h"
 #include "llappviewer.h"				// Only for constants!
 #include "lltrans.h"
 
@@ -422,30 +423,24 @@ void LLWorldMapView::draw()
 	F32 sim_alpha = 1.f;
 
 	// Draw one image per region, centered on the camera position.
+	const S32 MAX_SIMULTANEOUS_TEX = 100;
+	const S32 MAX_REQUEST_PER_TICK = 5;
+	const S32 MIN_REQUEST_PER_TICK = 1;
+	S32 textures_requested_this_tick = 0;
+
 	for (LLWorldMap::sim_info_map_t::iterator it = LLWorldMap::getInstance()->mSimInfoMap.begin();
 		 it != LLWorldMap::getInstance()->mSimInfoMap.end(); ++it)
 	{
 		U64 handle = (*it).first;
 		LLSimInfo* info = (*it).second;
 
-		if (info->mCurrentImage.isNull())
-		{
-			info->mCurrentImage = gImageList.getImage(info->mMapImageID[LLWorldMap::getInstance()->mCurrentMap], MIPMAP_TRUE, FALSE);
-		}
-		if (info->mOverlayImage.isNull() && info->mMapImageID[2].notNull())
-		{
-			info->mOverlayImage = gImageList.getImage(info->mMapImageID[2], MIPMAP_TRUE, FALSE);
-			gGL.getTexUnit(0)->bind(info->mOverlayImage.get());
-			info->mOverlayImage->setClamp(TRUE, TRUE);
-		}
-		
 		LLViewerImage* simimage = info->mCurrentImage;
 		LLViewerImage* overlayimage = info->mOverlayImage;
 
 		if (gMapScale < SIM_MAP_SCALE)
 		{
-			simimage->setBoostLevel(0);
-			if (overlayimage) overlayimage->setBoostLevel(0);
+			if (simimage != NULL) simimage->setBoostLevel(0);
+			if (overlayimage != NULL) overlayimage->setBoostLevel(0);
 			continue;
 		}
 		
@@ -476,6 +471,7 @@ void LLWorldMapView::draw()
 
 		bool sim_visible =
 			(gMapScale >= map_scale_cutoff) &&
+			(simimage != NULL) &&
 			(simimage->getHasGLTexture());
 
 		if (sim_visible)
@@ -502,11 +498,38 @@ void LLWorldMapView::draw()
 			right < 0.f ||
 			left > width )
 		{
-			simimage->setBoostLevel(0);
-			if (overlayimage) overlayimage->setBoostLevel(0);
+			if (simimage != NULL) simimage->setBoostLevel(0);
+			if (overlayimage != NULL) overlayimage->setBoostLevel(0);
 			continue;
 		}
 
+		if (info->mCurrentImage.isNull())
+		{
+			if ((textures_requested_this_tick < MIN_REQUEST_PER_TICK) ||
+				((LLAppViewer::getTextureFetch()->getNumRequests() < MAX_SIMULTANEOUS_TEX) &&
+				 (textures_requested_this_tick < MAX_REQUEST_PER_TICK)))
+			{
+				textures_requested_this_tick++;
+				info->mCurrentImage = gImageList.getImage(info->mMapImageID[LLWorldMap::getInstance()->mCurrentMap], MIPMAP_TRUE, FALSE);
+				info->mCurrentImage->setClamp(TRUE, TRUE);
+				simimage = info->mCurrentImage;
+				gGL.getTexUnit(0)->bind(simimage);
+			}
+		}
+		if (info->mOverlayImage.isNull() && info->mMapImageID[2].notNull())
+		{
+			if ((textures_requested_this_tick < MIN_REQUEST_PER_TICK) ||
+				((LLAppViewer::getTextureFetch()->getNumRequests() < MAX_SIMULTANEOUS_TEX) &&
+				 (textures_requested_this_tick < MAX_REQUEST_PER_TICK)))
+			{
+				textures_requested_this_tick++;
+				info->mOverlayImage = gImageList.getImage(info->mMapImageID[2], MIPMAP_TRUE, FALSE);
+				info->mOverlayImage->setClamp(TRUE, TRUE);
+				overlayimage = info->mOverlayImage;
+				gGL.getTexUnit(0)->bind(overlayimage);
+			}
+		}
+
 		mVisibleRegions.push_back(handle);
 		// See if the agents need updating
 		if (current_time - info->mAgentsUpdateTime > AGENTS_UPDATE_TIME)
@@ -521,10 +544,13 @@ void LLWorldMapView::draw()
 		center_global.mdV[VY] += 128.0;
 
 		S32 draw_size = llround(gMapScale);
-		simimage->setBoostLevel(LLViewerImage::BOOST_MAP);
-		simimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY]));
+		if (simimage != NULL)
+		{
+			simimage->setBoostLevel(LLViewerImage::BOOST_MAP);
+			simimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY]));
+		}
 
-		if (overlayimage)
+		if (overlayimage != NULL)
 		{
 			overlayimage->setBoostLevel(LLViewerImage::BOOST_MAP);
 			overlayimage->setKnownDrawSize(llround(draw_size * LLUI::sGLScaleFactor.mV[VX]), llround(draw_size * LLUI::sGLScaleFactor.mV[VY]));
@@ -537,7 +563,8 @@ void LLWorldMapView::draw()
 			// Draw using the texture.  If we don't clamp we get artifact at
 			// the edge.
 			LLGLSUIDefault gls_ui;
-			gGL.getTexUnit(0)->bind(simimage);
+			if (simimage != NULL)
+				gGL.getTexUnit(0)->bind(simimage);
 
 			gGL.setSceneBlendType(LLRender::BT_ALPHA);
 			F32 alpha = sim_alpha * info->mAlpha;
@@ -663,7 +690,8 @@ void LLWorldMapView::draw()
 			
 			// If map texture is still loading,
 			// display "Loading" placeholder text.
-			if (simimage->getDiscardLevel() != 1 &&
+			if ((simimage != NULL) &&
+				simimage->getDiscardLevel() != 1 &&
 				simimage->getDiscardLevel() != 0)
 			{
 				font->renderUTF8(
@@ -1658,43 +1686,59 @@ BOOL LLWorldMapView::handleMouseUp( S32 x, S32 y, MASK mask )
 	return FALSE;
 }
 
-void LLWorldMapView::updateBlock(S32 block_x, S32 block_y)
+U32 LLWorldMapView::updateBlock(S32 block_x, S32 block_y)
 {
+	U32 blocks_requested = 0;
 	S32 offset = block_x | (block_y * MAP_BLOCK_RES);
 	if (!LLWorldMap::getInstance()->mMapBlockLoaded[LLWorldMap::getInstance()->mCurrentMap][offset])
 	{
 // 		llinfos << "Loading Block (" << block_x << "," << block_y << ")" << llendl;
 		LLWorldMap::getInstance()->sendMapBlockRequest(block_x << 3, block_y << 3, (block_x << 3) + 7, (block_y << 3) + 7);
 		LLWorldMap::getInstance()->mMapBlockLoaded[LLWorldMap::getInstance()->mCurrentMap][offset] = TRUE;
+		blocks_requested++;
 	}
+	return blocks_requested;
 }
 
-void LLWorldMapView::updateVisibleBlocks()
+U32 LLWorldMapView::updateVisibleBlocks()
 {
 	if (gMapScale < SIM_MAP_SCALE)
 	{
 		// We don't care what is loaded if we're zoomed out
-		return;
+		return 0;
 	}
-	// check if we've loaded the 9 potentially visible zones
-	LLVector3d camera_global = gAgent.getCameraPositionGlobal();
 
+	LLVector3d camera_global = gAgent.getCameraPositionGlobal();
+	
+	F32 pixels_per_region = gMapScale;
+	const S32 width = getRect().getWidth();
+	const S32 height = getRect().getHeight();
 	// Convert pan to sim coordinates
-	S32 world_center_x = S32((-sPanX / gMapScale) + (camera_global.mdV[0] / REGION_WIDTH_METERS));
-	S32 world_center_y = S32((-sPanY / gMapScale) + (camera_global.mdV[1] / REGION_WIDTH_METERS));
-
+	S32 world_center_x_lo = S32(((-sPanX - width/2) / pixels_per_region) + (camera_global.mdV[0] / REGION_WIDTH_METERS));
+	S32 world_center_x_hi = S32(((-sPanX + width/2) / pixels_per_region) + (camera_global.mdV[0] / REGION_WIDTH_METERS));
+	S32 world_center_y_lo = S32(((-sPanY - height/2) / pixels_per_region) + (camera_global.mdV[1] / REGION_WIDTH_METERS));
+	S32 world_center_y_hi = S32(((-sPanY + height/2)/ pixels_per_region) + (camera_global.mdV[1] / REGION_WIDTH_METERS));
+	
 	// Find the corresponding 8x8 block
-	S32 world_block_x = world_center_x >> 3;
-	S32 world_block_y = world_center_y >> 3;
+	S32 world_block_x_lo = world_center_x_lo >> 3;
+	S32 world_block_x_hi = world_center_x_hi >> 3;
+	S32 world_block_y_lo = world_center_y_lo >> 3;
+	S32 world_block_y_hi = world_center_y_hi >> 3;
+	
+	U32 blocks_requested = 0;
+	const U32 max_blocks_requested = 9;
 
-	for (S32 block_x = llmax(world_block_x-1, 0); block_x <= llmin(world_block_x+1, MAP_BLOCK_RES-1); ++block_x)
+	for (S32 block_x = llmax(world_block_x_lo, 0); block_x <= llmin(world_block_x_hi, MAP_BLOCK_RES-1); ++block_x)
 	{
-		for (S32 block_y = llmax(world_block_y-1, 0); block_y <= llmin(world_block_y+1, MAP_BLOCK_RES-1); ++block_y)
+		for (S32 block_y = llmax(world_block_y_lo, 0); block_y <= llmin(world_block_y_hi, MAP_BLOCK_RES-1); ++block_y)
 		{
-			updateBlock(block_x, block_y);
+			blocks_requested += updateBlock(block_x, block_y);
+			if (blocks_requested >= max_blocks_requested)
+				return blocks_requested;
 		}
 	}
-}
+	return blocks_requested;
+} 
 
 BOOL LLWorldMapView::handleHover( S32 x, S32 y, MASK mask )
 {
diff --git a/indra/newview/llworldmapview.h b/indra/newview/llworldmapview.h
index 566468fa0c8..980ddf9c730 100644
--- a/indra/newview/llworldmapview.h
+++ b/indra/newview/llworldmapview.h
@@ -127,8 +127,9 @@ class LLWorldMapView : public LLPanel
 	static void		clearLastClick() { sHandledLastClick = FALSE; }
 
 	// if the view changes, download additional sim info as needed
-	void			updateBlock(S32 block_x, S32 block_y);
-	void			updateVisibleBlocks();
+	// return value is number of blocks newly requested.
+	U32				updateBlock(S32 block_x, S32 block_y);
+	U32				updateVisibleBlocks();
 
 protected:
 	void			setDirectionPos( LLTextBox* text_box, F32 rotation );
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
index 0a7dd17ef58..a2fd0f0d9c2 100644
--- a/indra/newview/llxmlrpctransaction.cpp
+++ b/indra/newview/llxmlrpctransaction.cpp
@@ -414,7 +414,7 @@ void LLXMLRPCTransaction::Impl::setStatus(Status status,
 				
 			default:
 				// Usually this means that there's a problem with the login server,
-				// not with the client.  Direct user to status page. JC
+				// not with the client.  Direct user to status page.
 				mStatusMessage =
 					"Despite our best efforts, something unexpected has gone wrong. \n"
 					" \n"
diff --git a/indra/newview/res/bitmap2.bmp b/indra/newview/res/bitmap2.bmp
deleted file mode 100644
index 770b07558cf2e4c7ce98f08e1a0a7ce3099b84f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 25118
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
Tn48M=i5=wG7T0h3LdE|9@IW^$

diff --git a/indra/newview/res/loginbackground.bmp b/indra/newview/res/loginbackground.bmp
deleted file mode 100644
index 288a0b03987b51f440e19130bd603a698f25d5ed..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 336054
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%0AUda55zc}$*@0f$T*WEtF<(u!B=6vql
zB*3}vzFE$cJauZE%#S|2Xdw_NatT_Eqj$f14mqHUAHR6&rI$7|@tGYmju?Z=_%?C0
zsK-nrGg{wMT*pddc+~3}*TKsGN3Xr{2({+lF5^0k*~g17ZrpJP+b`tIV-Y}WYk&QJ
zpE8aZSv;&{`^JUuW+pHJSzLmwuSbB#=)>^z)d&t5vl2(2`|J|&AtOiwN8f&C?PovR
z^dzyw(Vs+&SI&=EAqQ^Yhy@A<MfQZosn1E+wI`5Ewpn)Zs^G}P?1`zQIcsGO33D-s
z>(Yc$O1s37*BP)w1!F(mWH4fh00<C<9bFp3@{JVipY+0lHt>;lFM0QtTP8Wk1U`n0
z%X8`S2G_T~wFWTJ8Y2ifU=#HjN6$RH=JALH2XOs6@10{jdg4o(A9*}_<dNq5$n%Rb
zoJb+0g_zELIU^7v)!`Ajs%$?k@Vdoy^av$B@KL*Gjl$4R9G+F$TnuoOCX`az6OM?B
z-v0JkjP`*)IE-OG{Vgq&aWFq(++mPfUK-1#HWDl{pckSw1}T>WeV~lX-~Yg26y(s(
zh;tgCQ2=DQJYCob@4Z(+;HN)zl<Cp~4;*Hx;gLs<y37y0ufq4;H^q7#p&gq6*xJFq
zJ08Wt9UJ>|Ul7k>nId7#Ope%;1;N^UHC~ySY_HlL(=@!%G3I^RJY$=*eNuf)YyL7<
z<jI+bxnxeUzbiJ<*aFERzcC)gj#({$5OyxaCeI8?*$Lpio$PC30?2sEj+BK3ZOjWF
zLi<2fvpf^*s37|C(*)52onV<WThzEzNniz4K`Qy;G>WAqI6+BpBxb3leK>LpYApsM
z9zgg(Jd|Jz1kA{GE~0B@rk1(3lq^;|>v#-7fX$xjBa14D)>vwonbkg3J$ldrCOP5-
zF6gB}3~)}di=JV`Td`1<q$0&=0a23=slFr;?dujZV(!`lAjx<R!sG8y!6M?-#&5*V
zmT&CGy2wZQjinwKw-DT&DcKW_;P+qt3*qQPA37o}j8<xbY-ncfPBs%V=NS+xBkjvz
zK}wN6;`tE<%&k%yjWh-Gzz8{*+IY>4!9@~SW)+TC3`XAnevM6Ud;8R}W0C+n0glDy
zH17vM2<%h!eg-7qZQdx6r4k6Rc-;|Ppe9H)J0(4ov^jB0%8lJY-bLw43b?uxut|BE
z<x<OoG7>FwmE#eFu~RzMK=kCLz>(;OFBplfYtl6q$PtfhI9Iku`)DKyM!dF0cg-a#
zkRotqL4VkxG{7abD8RX7)9I+LyDnf&xi5r<WqR*4Ao5;8N6zfULf`<$+iCD=f>mr;
z=NX?2^@wo9!7BstAWyv`e`tma)7&72PLV2PkWT@~CQVMG7?+}UqBDllGKV>(BJGEu
zEPp+Jgm@4Q<*5Rs%>jtm?JQj!VYe+_P80A3j#wqI3J^t7vPT@TP<E0LVP#dL55(J+
zENbHj>dij4(iw)VBsblQzxw|qq?w>V9>x)(h~4Je7la(xVTfwj-1V>j^}NQTw@w~E
zSveC~VC;~z5acuGkiQ-xV*?oW?Ch9n=4{VQU!+A}1%Zx;pe*eWCBlnwl$s?004HMm
zH#~CJ<sqA9O?(?iJU>b$HgLoyRraW0lis?<&Tv@p8!Na1=tqx8gT~`k2t5stKbaF0
zLXX%9dUD(`r)Y$dkVi2{CDD*OcPqYPz@iM;fn}<5#_Z|WIKri)1-3wAjaU&@hXeQa
zTA;);2%zNgh*33Gdjuj5!gYou8sSkmgOMJx$J-Fl-1vhS`GFco5F@<AWus)*d>Z7i
zF6avtu*=SGuOLitRJ$_yF^!ve;A11K`r4<-idIJ0_0+%-G!xYXFgq0Q5=R)SkC%SD
z!J?Uz5}pwHVV1L~m8fM=@W>_X`!3rJ$uy^y6#}uc8qz2)ErePWa^}$A8IKMtPQc5d
zxPKEkdh1&!8ISblQS8#kH?AI&w?_z+#07yPk7zTzxf3RVU?BrWutQ55Uic%E^A2Jv
zf37hXMhNq`Z|<mQTlFQZS>2o|!(EL>l23CyVxt8xX^%%J5rf2&$9qY#(kLTm?zj#)
za6q<cpz-Kh^tx+0B`v}tW<U`XO{(%%P_=_i-}0awZB}+mUr|^BjNU~Fh}Ql(_Absr
zq>K>B^V*l=IxNtx!1l>qv;YfXy$(%f*ia>qPFC25fb!2~V|F0GM?*D~C&wPUtQ+|f
z0tX;M3(*%FRu$A?4^V<&!<7j{JnDjSB%k}e$;65%(AZz6Ej^(E8q6MdgClyx2(84q
z`7wlPzl0t+@{eXczs{Uq39Gd&kg~iR_t{3Ms4U*vfEXk|$PJEo?*PAdW^44+#>o2d
zk$4G<9sAn28!wL_H+F!JGR2^lR3H1*F$@dV@2UWQbYz_x6eT63xfQOXW3i0_jZ2Hg
z#M2km+c*Ls45?jl1e8!B2lm-eB3i(u&>BaID0_FmdATo%?1hB6@GJvLLZtHQ&}l<z
z><ilEb6A;WY$t0FOpn$}BfoKpApu58w(?ay+`Gbfv;gIx;PBxwpoCR3vr83VFc=cp
z=XDRp)Ai${yfi^3-Wcx6{dENARzWH4J>duh5!rIKGqi+D;`>9REZH?34bq0d>BfDw
z*+4v9qdN}x!VQ8W4#IB`bn28O!0UT>6*)$|j37T5YvZ7%sz?j8gGfCF*~nwBojMIs
z7p|eEQa-H?x$C?u|KDJNe#`k0EW}t-LB_E}p05r^SEgz2CE8rT2q4-Gj_eSyF%$vZ
zFx_(D)N197E)Xvrwf~U(?wxa^x+$mS(v?9r?$mFCS_L%(WHZc<c>4yjZ9*}OVm$kd
zBWMUC+~Ew(KK$CNx7|X6yFQnQG6F3{P34g|vii^k8nGKhL2$jg%JfkFB<&DSnCe4Z
zrTSoj2Fv#QkaR7#$}Z@!jU%&Q$Ry=X{OaJSl+v|GyIr?zxnV*cNimGwsNf)Q#1PC7
z>G8;eDQEc;K2V@I91F*@$gu+`VkC_&^`a{|r1{e_axCtV_B1MP=^hghH5)Gk(JbB3
zm(SYl&D)^U3T}}A6F^PC6?hMwI61O;hM=z67etiK0KK%Vz>mNw=0}W8gm!Ami<SsB
z+9%`^sUB`bbIc}0bA$?Us~Ir3Slp5$wa>(jh_~X8M)DZo2y5&*9;Jv#?C)RM@(qO}
zERbmh=I3Y=L-NWM(<PxLf-z6hfdc?>IK-Ju?#kZ6w79hGaT$RzV_6m7`WD7Xf<t)J
zVv*3~Wg=Eu7?g?Av~doYXhC)O%+}b+QzKqvU_@r|ff*wC%%M1dl3#-M3@gS3O<14-
z$~n9D>>6azZ?Gn}K!H-fQEMz0lcT!mY!tIJQk4T74RC}TVH_l;!jkdln1t6EVx$nP
zFg6<u=ENRU(1K-p-P?;rMg(`Gn94_5mr*wcuX;FRXcI!!LY%doPo44<6#`f_t#B0I
z+tF}yWO(z;=$SJtHSp~nMRzQ@5EnVFV-CW2L@kd;1|tJg;)uSy+QXSK1$yGKX+@+i
zTR0*Ul({0Sk%m&E*Z@Zvpk{zQ7>|r2mi-x$grf-Ugdpt)P*7yEAz<S&(sJnr5trB)
zR%aZM25VfBXyHh;T#=hm%L9`-b$|zmnCy75E1r@A6HSg-uVXyoy<l*}cm$5L1aVm3
z3!-qWb3#MBS|0E;j-bCJ4Elpeu|tAeU2z16pbgw{mokh^3}FDDTIHX8i_dg7m>&&r
zWE|nfiR&00VpOUI9qc6kVkFYo)aQ?zvej_%l$@-_FBxQ6%jTy7lMF!EZME1XEY$0D
z3fShF>kO>d@hEM1NsnLvT4R!kF>}xwE#n8g`d#*0rlAv{0huyWJZf^MNgU%Bm;6y6
zPG!N)<cM3>f+I&nRsrmrezQQ!?S6L<am^R*!e?^<0gz!u01e1vwFgCn?~*#oBLjm$
zT$gd3rN_8nCCU}oo6}NV4XexiUI~{^Ys_M)KCGQc&l+r~FUFb*M{7IR>v#mfVC3ai
z7A2B}5=Y(+*T)W_3i8?ooZppGGvX@A0twUKSogLCVrd+u?U8mS^uy!T;YhuU_#I9l
z#oH@U)8DDp=3;=ObY&?<yOD+x{rIe_60u|qyT*|sACA;jXrXG`8u3NwVs9#Ks}KBg
z@BoXr4ruTygulH2@vM6vKf!}nJv>TY7_Dj+^t_<$&*7p06VsW($wW<mX<gMAWI8G7
z1kxaCjo|PK;}J_G@%%_TIU6{Fi~0Izl#L?_!*%*G>rp-KWFh5Gf@l+B7%^*41wH&#
zJeBEWlLUo{5K^a<w}{Lg5<>;{1`xx#4TPmPz;VSP72wC>;Y;NZtc#562yCbx@>g&o
zbBYL|q=a-3>63&RIaQ)nvdx{CHT|&QUXUAI$065>6=5OJW`ozlRAE1GfnF#8gB(-w
z2r}%y6A~mDd%}^{yJD$<xXz}+nYhbyBCTfEy9&ui7oiTZ<1{k}O9Q@qE6HdlECipC
zGZJ8G#(svF>4<l>Y_Y$Nht8}suvoXbsdewp=BUN$d#cEReX6;ifgM(33QL0QSa>Au
z-l0nLciVUjYnlqhj^bno7O+*Dt20AcYT5jnc(~5-G{+;Y+sDInzQPxa^BwqOfvl6T
z>WEEx10L%n>||qOm`zukY-3**?bA4YMR>^vu@z}s^6=ur8=267NrGCKwfw0?;kM+H
zeiw6OOJ7`~cMcR`N}wuelfPmU9S<7V*61ggu)x972TU<AMZPxU@flAvs27uELRN%W
zU`>hk8^k~!Av8>J3u-xA+U;Ui4J8A0Y+6t)(@X+!fgQS|Q@ZA0M^lX>Z3c!ypu}eH
z*p?|>Xm)T6?!+4I+A4tZ@d?c@Xv$6?DcKW_kRCW<JhC2P6M|t4W}zARlLND)$wxR`
za&YMcB}wxqvBXq8$!I4inTKh{;B$W+ZV(W`Ce{d!SodbVj{S9P*5#3OrOGw71Ib$=
zgvNev)=8KdK?aNjg%!=Dy@_4d#UCZ%PGpCpfIA8}M`j$naP~5Vt=i`2icoG>kT^n#
z5Y}~{s&JJ1y;rptmoI_G;00bF0GTs3VSA#HGwOf_(s(m$hKU=5aY<S^L6yjeiJnVx
z38$!oM8Rd1jOz7^6|p7T<z<lZnPt2gWB?-UDqOm>;2o;Se{D^>0$A<gAfcf)zQu<Y
zG<eNmldR7`k5~u`SHd*6iLt=RSAlT9<TQ!}QnX5pUf_$n5X^xPB$k*3+k~**7zniI
zJXW7XIXi4I80cg?;!}{w-yx0j<%i?Tw-68IFb)dZIHI~Z-8nb(Fn4xkdh>;U-hBR_
z&b;tXoHt+ir_)v9pPiHW6svAgEJ{*X2_65q`2xp3S2>;h`tI}pNIR;oGEvM4wWE%z
zTXC5LsASc6bY0e^$GUDsVO&CqFFToTp)RjB|2z)StlsIaE-V(Rv=i!44f;^s%vZB@
z#b~4=`}v9&bEMWRjTip8Q~`R#CK*_9-~bIJ^0-;AAcYdKKz=WYpYVI`Pd~#Cka1R8
z2bYg=i^S!p9_8TYn^iK>%5<&z%-yK+871PVaw0$4tP0c(W-nF#<)<Et<59O0#Y_eb
z{*Su+N;FOa8iL43a7jf`XtL|OVnoFtJBW`&#g}+dBT+^bm5AyURl57sqtC`U8F7PA
zQj|msoi0o;ccXkoIb}=$cL9Z8L1H}8SEr8fMQb3B@7g1dR;RItgZlxXJ+<8R=QYXv
zJC0xeEltI5t?K7i^JrD!_lAD%pJa6vN@gMpQ$UB>@wwBWf38S<)fMU8m)WV?bT4(L
z8m!Z%v-+iSX9C_5M?@4FQe#y07D4nlJEtig8pI#+<1g8u*@v%ep9FN)e5qew##zOv
z0{tbwbz#w#`E|vp5)zg`qCoU+jw;sNLRme^RAhv>nvyR&qUE}~Ql3@gZi)hGr=Z-m
zoUd~zj)Ze4oJV9<1iL^gw~|Ku7FB&qEf`0Pq<(b;9O<VS7WC%SUU77ObsEoEHvX!l
zW&9;N>Yv|A?L(CdgsC6|8N-e$p{AO6<XQcI7ddGF*%}oaW~ugf0-^3m0&m>S99Q97
zbrCkeU1K@BLyrt(1OQz_0)mS6dL1}&FE`XVIf5z+zdF}WDb3yme76!#2fwm*-!gZk
zQ-GPHGBs+rTWZH;dYz-GstdJH_vIFJ8H%PD<CG@|%$}GX#H*mhenifD7?02?9`gLk
z6e{jT()G+QZLbirJ&Y`Qr<>ZTh!D7iR?@r^EWe-ywG)n)GnZMwnOQeAn>i#be<w&s
zYZZCAj0Vf{Wg2H?9I?~bpZZ7s4z0W5h~FOT-(cDJbxTW1)v#3=x#h;$D)VK~W65x?
zN1Q@{NpP)b6?VGLseD(;JPWvPRk(6}s-Bc&T2*S_=tN%n7UK~CHZvwdf_S{bf&-H{
zfoS*Rk#Tg>u^TC_tNjmb>ga?nap}xjViHAx3(`m_aM6*f#pQD<s1j-2TIQ?A7}PT7
zABr(9KquUF?uL$NEw$r>(VCg2lZg@n_b<UQH}}%3al|SRP+~;_4d#}0eiV=v3bWiH
zfgttO%&`!XypBw2rI>5-DN~DLM?6UZ-3pnT)4Euth2)Vk#jT2Ka<Wr5l>m3eMuBXN
z1h>!;XC`r7U0IGtUTVk{55^rkLsVHF<lnTeb%wH+S34c9sW#Ejlyby=fgsyzgH(yG
zu9%4|lS5DDxJ^fZk!b*SCJVL`HzfpBIPKVmZ@C>8E*p2+>PE;&9t5o)=dH2o{TFgj
zLE?yIu?~*b*V|3K>N(~m4Y<?@wBdHh37LcvYn7$4EF#V+H*+MbuH0IsYqeIZl5`eu
zkELGRg3sA3iA=k9w@*d&9(|EuJnG}ha_PH`Bix`5qX{KmJU+u3S4qr`kWL|3ATVy;
z%Y2U=NXb$a*&+Fw{vG~`%o0a#ElPHLz9ekj)pCwn9S3M_x;xHJh_<NJ(6z}(vJ*$g
zkFy5L(op5lPyvU>BXGo!WM}BO&W+qSXWOJhwL0B#ag{)7EpRFIRRB?1Ikjv_sD)z8
z&FUm1%(|Uy!E(q(GT$Y2u4B%WShU%}CixVLippf+uI<WF1rF^PlJXBt890ffj4LjI
zqZ?y9l6>j`H|1c)bxw6CQAvi(5L9LAS&V!&RY=uoH&Uf*mnHdU<7K*N+#MAqRfTq(
z;|2@6s>zEk+$qiq74Z8_;E0DW;3!ql14psWP_U3hzPbrB+n~YHHm8x^v9y?lxs_#{
z>71@@Rs}j*=qNP1Ad!t{gHD7xbk{v9v7@jkNgQ=m0XXuIlsIxwSAxh&M6-dTSAV_E
z%vJ_jdo2qj&nayQKV(u$CdK7q^(_fMbIKvf%@(yZ@u_Q7iR?x0vAEkNi5wLu%2b_3
z4*57MWX_MEoj4&JF;Pktpu`OAaEA7W{3v?%a^oaYK2<Q_furV8bV@JM4hIr|@g$zK
zWkQbS>02np`IW?KUz&v}=5{!nfbv#$SJ0+TvrJiw%!;tEA08?Jf%X(BqiaJcag>9R
z7mLazqgzkT@Myyvy^3cuXi<pqTK>+LB<<U41eK(w#8j+a9a6=*5%OK8R$sa)B}#C)
z7qwIPu52gUOw~6^av2TQ)N)x5C_JPSj#h_Hob2GpPy$B{e~2E-=SOb#MmkGwaR3$#
zJ(63^yD#ekl_V|ykZRUd3(lc#3Rz9n!Y4B-R*l!?qhej9tms~%YkE;fbqiJdF-X<M
zz`FNSkEIIIm1T6Ddo@cOQ6Bi<2J>(WuRA$=gT!@kEkg|%){^WD<sqEPN)b^d-df<D
zyB1yO)Do`Fb;-Krj^f;}Tj(f-b}HMDIz(9H2#L{@Ni7=Rp?z1OaL}nUI70rcFq}N8
z7pc$!msSB@t{jrAN9IQ+>4rL|d@2TOFH!rV4o0$MAtFOB1RJvTtq{?Uc&{Vj5}UQ;
z=~}8ug%-N5q+RE5Nim(B6KO8980!qB3i1I&14@abHi(QS@^522x^eb1gm5e(OTbn{
z+L@L>W=f<XBIj_H&_Y~wj#2P)J0g`=7s@P@Sm`%2v%9hp(v9A^jAo^&yk$CFG4iXK
z0?rDVv%+xll$Pw4mb7+94k}>Z7omk-NIaqqliGDWb>oglDM^d56q?etrkroFSSF;A
zd8My9mb0M3F;?T6bFw1kbM$v+6v*K(YSl1tN1WAH4Kz_w=VSqs!Tbm<#A67lfZbUf
zsR9CQ2Y4lp3>?(w!<V?k+c#!!1RTMjglrtuVyPrw<HC0()dD*WiCGIF{0=%g8V@a3
z?bJHuvTV>TNcd<lIx5r`c4G2^+JfN96^n~3P*gXLm>HegsNViKd6I94Nr~)W=c&3s
zsL0N6^vL%p6xZ!UZW8t?CQ4CAL_2LY2`lpD01;z@mlRQ|udGtHQw${`N$0yRX%mwz
z7cJCit#v`+tfh2KHv1V)of=(RW0#}687koY0(Lx>Py$W)XVfe&;{!VffFl2njkz0P
zUr-9xESu8~@AfCP1e)3`q(ns@wBtjXsw=v|x_UJ#`L2r9;&sKk_qtdO=WLloT}C>s
zo86H~8OJ;b8G-X2;>Kx(b_`5>i;s=dBu<>vhE@L_J>Qy+7?0R*y}?M?@2izIk8oWx
zTg3^GTIcK#W6GyZu)tN+it3f_%3AGa<8FAZLSK?q?Y=xGrK0ObFB-P8sXF}&;yPZ&
z;k`Bn6qZu`CX2t&>z!Hz1|0bZUW}lX6_$*2_>%lP8INv=b%tVqF6<NGq*Rp-(Uk(p
zu?FFEBpE_W+4`32T87y|CF)c`HWGNu!W46B)_$)}vkNN5Q4Lb0+4YUgiRd;r71{|$
z8~UszP~v-HtmBaYO;)1z_OIQD^CK8R$SDn9a<0W9u1g_UXwIRQD(-B-w@Ss)LLTK^
zwOrSA0k_sD>|Q#V1-0DDicWwdw7{elAP^Gpc~!ibKl{&+<WY$*JO3IWD$#W3>A4$d
zok3g!s2BpeKqk~w*gVoegB(?r&aKLTOGT6tu2oQV<ROE?%8!1lv~^dEapX&zb&d?6
z_Ip;1t6OE(yQ>g9BX-{B-8{oc1dfJSZQ$^m^5N*JK;6rC#C2}O&E7a?GX*{7REaw6
zoa!99NER%FN+3~%isfBjQb39NR%lioSwZfLvkw>M+$it6?Z(L`Q~5DFqZT;gBUJb_
z<WG!!;sik*8qsSkx$*;=^3T9oU1grDg9L{&?>uuu;3&C<S;;&Or#tNXmc(e7<YcoF
zEG1Q?E|7AjwY=qyGROIK?-c8_S(Z$NmgQ+A^;;p)1k~M`7?Z(xgv^QP&YV$bXDwI-
zcsa+|xq`=>_r~1MAfv6lx<z3govs8P?#L3WWEf(xY$;O}%gowg`j%CXJgJ*%a>5ne
zm+!i8BVQ!#v>#Uy0q(1|5XE&T^-dxxa7aLCM^wP#j~^--O(l*JM21oV>J6JW#5#in
z9$P?3C|z?ZnH0LSsB5w0tqx2q(n7G+t-8&QY7zpi);hhbyO6x}Qt6$$)w)Eqxno{X
z_1?izr+09K%!%l>wuVn{vW!sqv|dmWjygS>q*wpkVo)kbqeUPoC1+af$`5c^)H~8O
zk1j)j$|HrqX|1aeGLypDn!9$7wN52}3e=aC0Lk&edR>kw5wj^INN<*pXcI>XBGi|M
zq4cIRHw2EvZ{US<gK@E3WFkXL%)%+;-;q*7Zfe|c2za`q5O_z<DSt{P#LA9Lp<6Cm
zt2+&QaQV6^K}^I4{RGcQo}ljhg^{goB04Do6`-1g5&;HYkr)GisC9-QyVFRG=$-6T
zmgZi3rhqMtOB3uWzRYuZw=Pz>3yY}Eta*&q%pG;JdP+$I*EDC{YV)dZg^EjJ5VadL
zn^CKv*;1{!P^ZCKr|aUD+KEfkQ|{F_G0v~jfos<58Y)2e93_-MQ~nt;iJ(l7e^=m$
z)g%IVzX4sPtJkr~)SK7J<aKPno$ZpmWUWMfH{Q8c4u?vTh*!U>_pGCFy<{DY@OJi}
z>!oZptBO%8D#nZ0@fNw8;_Q~Ix@x?xRlnt}GSO6#P?@+?<JH}uM+E4WI*J#}qqRuK
zE#+5~$BXBF{XDAF#Q$T(U~mzc?yJK{-8(sYS3Mg1N2Wy=ZW_IC)5uMiMmIJzBqfwk
z1OdkJ6Iyd%8I}VaF-78>iMZsn#tkx$A3q*9JH=R<;4ax5Q8><#xw8?~i*~98@^0L4
zrV6Oc&OhZSGw#J*rzllr)m2ooW}&9E)0Xbm6|!!bP|;@R$}9fjcGZX)^R28z!Z)ji
zisD5hl<9c046qYQIJ5?itTo(V9?rRYYxbV4*}Jx9-@G+<_twna+tXa$y<Mfbd)L+s
z2Z_5WaAx{VTQe$fW?F@}I8%N4?rjyghx2x%bxC@T{JS`|rtjLCee+qGjk;=c`q#GR
z)pA|_o^9H6BXmTYGxwa)nRX~f%Xgh2F~=cFwoMhiSKUPyE~6^qC~ifqq+ea!qZVjq
zCcCS++g7FzajF*PLNekpND}>#7ClOcHFXz!>5Leau9%Ww-vp`KlFU8ZbF9?ea!cUo
z<`HH|mcLybo9;F@St-(n2S%lnr}(KpjZOSi4Ze|}op^(#B-WHrYpf|%@1!#?<`xG_
zd|q+#&j(-t{-6itxyzFgYLVtwZ*&>Ik;)}yICIIWZ!E%VY7i@j8Ww#pT%JD7LYC%q
z+uNfjP7GbTW%Q<-M+i{QoEd>~GP%38MHejTkFb&qBP3W)h6N_?d;*sQ{o)^BM?cTH
zlO4E#3=W8dR7#ptXZnl~PMpy9Nl0*43j*;QMp-6U)=*9trkq(Plt91Zv4j9|_1SZZ
zt}`ltH3tS=p;V4X*+>IN*#h0s2n5jk$&-3Gg#_3SMgqwo2cB4=WzM)wbPcm;8FBeZ
z7MJp<$Mrj3q>sYF3Uzt&UFrVEQa;u4vV6TB0?kmnbr!3mmtoZR`a4E1UK%AjI(Z5r
zhtS>DHa>i(Kv+vzLrS6+jvxubpvr_nEhNDLmry06MfE3ZnwMFQRsn9ovN&Q5hhl5P
z{GKLNsE!S|BAHN5nsdcMP5)}F=cLS!ALqw1h9DIdZo6&tw%3iGJx8Zvfqd?sK0UmB
z7MX`{)HF&<;`ELRXc<Q6ovtAXjX<F&IXwyiBpAXtlMmSdQ0%}X;6i0JFS^A@x2`s6
z#9VVpMd;_Q8r)EWq(O8n$n#AzVTbhAHqGks@%Gt~bLU5Hy$u`<pFclx{=(??_VC&B
zG&_9m9JN@D)VI-CgybBQhy{QN{m@B{1O>RvPS6Y^^bU^*7HLyP7R664?lc?gkpiX@
z7NAz_tV$hyRA7S#{)ifZLnI#H`~{s!lW7$gQ&Pd2<O3YQf&;v($5AL^<MikT--|n;
zt(CYMcqhHJH7XJ5!G|&>EA$v??vgLH#$_%4>e89L&b&>)fpbG695Bd%%CI+dcgw99
z-te7o9J}?l5$y1$i)e88=1ZDr+<My>1#tD4qHC%827=<pDb(h18pI}Rf=wQzazKn|
z7W|dgaU4%ICdkCC`Vo(AQ4z+s&yKky26JW$1E?!fzM$VM5WGPZv@!aiwM&<Tpj&Pm
zdBd-bT?*pK<lyf1_Q=hbM)8pH3}+E36-PEUBydwAA~StT1Xp4wQE(@A;;w3)9NvbP
znnDt2#H!>j)wy(=aKWV;q!@^XH3%>lXSSpTh%^_(r5A5O_%cNwXaO$J5sF~;$H9Um
zTyv%obZV+-6Ff?KL36TGS(MEtC`l7i;rgID)(Cg!&X1Eo{<H%NsaZ-we40?I07_B?
z7WjpmhA#&Frrau^49Y@f7?1XD>C3%>5(8ZR;Z^J#IUAn7BtOTa9MJ$HjM#TU7-NbL
z;S>iLk35|2e^xDmfvDB%oQ+db5<}^TqJ|Q(!sBsBk6S=y^!D4a!_l+nF+2@V7j7Q8
zZ~>7@Wv~y9kRH`h-?{T+@lpLI{k<q59|AT`(^14QK{h%<Wm$y=`G6iYlan&3SO~G0
z1({9F0#w<kP!p~|EZi~ry4y$3otIg1K)f`#$=CUynS4guu=cQj#G)g*OEPwuz{dFE
zAFAAC`D6rBwDDUJ(0~3s$P$r(^x+E^hA-SKcF6RBDc*EZWf+@KRw_bZsTnza22EAc
zD@od=MZw5v{o07ms#4fhQl3`SPyu8kWQjT)S~y{t68xRXUCN{hp+34GFl&!TC6p3V
z38D<@99TNSbf`(ZN<d50&5xw-?~ws5zaPQDt8MOGkw%2ID+G9z#p(&B)D&Uu@e_)L
zbnq@uz3@e0bHNa=kRV!9%k?Y3B(6yR5q<TdQ_OX<7PE=+uJc{S^j9oIn6Vr&o&vmj
zjT8@tzN|h13^}yp>=cUChBbmW1(^h0a)UMf(O@;5(Ildv?TYCjtP8<iD<&6hMZgF_
zmt1Zzf{kH*TW969P=vX#bEW_Xj8x`Sa3Mt?+gcr6X}Dsh<iArvRH-N@vD1VifMn_y
zg0%`l)C7272S0``NJDv=P(}HQqC}5Go_yta)Mwq>EPDu}ZXif=AEt8kHzzfx<Fk`~
z$jg~MV3~$BiY>&>f8B}?*ZYY)=X{uzIb9R6)wX(L7s`>0febwrpjKpT#5~002qD}N
zIMO&y8ty1oKFWk(SU~2q98+l#Ov1f8C(~Jg9MV35B(cLmj&IS34=xvWa#ym@px-Q5
z1;SCi?k&r#r?=ddgAE*o<h4!3y}L&^V#^S{n37Zhw2^i`XQ~Kp@i?AK?vnO7xg+7U
zTXtb*QYGXs?Q4=7yJa|gN`<LFCx!<X_%uM&C#tb0&qV-J=w1%!Y~tOc!3E`|30dIK
z%(z2D$C-4hAWeuW4dN3=mVnzS&*U3N?$Omz1RIS)acqB;39$o~QHe8Yb|2~2>Lbl>
z*6TRxPY0_Q2VbY;GqAiBh5Gn0anwY**U=DZilSkP5Q(E>p01$ooE|_Eco2Z$8zbgt
z0Y?%`_96cGiRwGFe2<#XgG0>fs(vrYiP%FW8zU3j<MU<Y`!1h3B_{}D(#<qhERaJQ
zU~=g%b;GzfVl`MuJwlA7nyvt9S@#A<7cOc_o*E1-z=$T-Ovzc;Apqd1I`eM3FM33<
z{z5f0&@X!7K&s?Z#sY^D$fFnqpjo<zlH^c8#IGO|X{Ta2*hvMM5#HTkV~n)VnqDmH
zfo={hWrVeWBZWz4DjeCIz?TiFp$MeWMo=$fxR(4<3#kIEsG)-JSJhGjDgZ}GIcjoY
zW6+Jb*~C%l5=+L-JJnx#dF#nPS)v73M>Q|KwDILHFC*l;@1Fc`|MlGO{q7u}&xO;^
zJa+Uy{cMvQjxT?CML+U&WcblX7M*kH(gan!$M28-SeeI<^NnR~`Fr-+H7?)y#!1qj
z{!~@|d*3@j{=fTotF-*-Pb-tPO=$R&CzhVOyk=AU$xEj`^VlL}GY5R=p@pCSP1XC?
zzqZ17MCkrsUfKS^4^AYAf(2P1=0~$w4lg5MJpRtM&t&pRZCTe5LCltBI?bljwnoxf
zp1Z!K*M(|MokL%#O^dOiM<9RG%}nkzsxpHsHHi6zp~}J;3ov7jtutems?Ug>->-*L
zUq1Qd@=HHH^@o3Wc<apg6HhEV^Ocvk$$=vXe(v%*ng97eZ31~Hgi~G$K-$zw#<`2?
zO+UJDBTqfG@{^Y~9(?dHa7GLN&rdd3EyqZ#2yBl96H31AZIgBdFFY^Ja{R|1oOu8H
z=TOA^-Z#hPBabXvAV`M8y&UK{RZu$Q29%%~1Tmi4l^Fshh^)JWKW*k8YD%wYui|r7
zN0^u{Ex<S}5JDhHG=;$LzDqdzo%hb^r&{NSAAIo0``$NC;{3UBwD#zuN6CNb#~a`H
z#wwcPi<EpRosYY+OV(iFi2&(0yg`j{kf0)oFMe@}{7-#S*!l2>7TBil^56~{o(LRa
zhbRU0J@(ilf$puhj{blDW&5jNU50oJ^7EfR%G~qPE#rUlpEsX>Zp}`hX1@assN&Pv
zqD_Q>2z@)9bbQereg!4Sh8PYNSW*Gfoa3heb*n0N7;_Rk&H+kJbEaZih>fQWB^Jb3
zu)1)w4lvcwAR`gs6Sd3&KmZ^J=e_TpGx5-a@X2}q`{wZshRLN%hamEiM~>cd>m)S%
z(H|bBz?<GQxp7(;1XFx#7viCi1jJvyypFQCgm`pE8C1_DDj-c?y!!O~^8(=Qub(6c
zdH%U|EP+Qh999H@!NrTh(Ocg-i7WV@zq|w(U-!CkZ0x}Y7w)-d5=H#xZ%$JHM_R%M
z^62Q`j@_sLgNJ4U16FuAlO`uoU=uP5P+}6FI0BL-lw7y0ZXCHTXFhj~w4eNwWj@ww
z2)yV1xv6+h6Y~qb44*v<j<x^-pXmSbi>E&MiACPj&~FXI_Y8Ua=~FT2FfNe(#-FWH
z7}?%&$0V1ezx&-2BnYd>q;YB)Q{WDReBw(>m!DmOBUqFA9u<xre_VRMc*__T$Ve2X
zsBj1iv;=IxRENSCI4V02T=VH{eL_U!#Y-i=G|f(PmqZ{%AJrs{>2i>EMWJbt-wjj?
ze7%;>+S3}B93*^Ln|6#K!YtS&f+HS;G0QWKN)6&J2<IXsuGB|gh(f}7kA&ln-u`yk
zr)7@NNF!bmP?G_0$o!4pm_2bqI6`-5#PrX_Pr5(*?RAtD><s_xXBvz+xP05&)bb}k
z$p|w1{`U)0XU>ch78*y0m+6uf!DRgA8b>JNl~=aD{N*LA3m!8hNJXHFl#B(%+4Sto
zIol+W9oeB-1<1ct0dzt$lLDrAEK=E(Svxi%J24|DfuA^n!Gx04XU5Gt9U)9i*VVxe
zwnSV<w15_{e588+{d2ry%RvbA?PscS{P8a=ITO`<;uDKb^K}RxpZK`On&qWYj+bBF
zdM0YU{`HgGef{l|-~G!fig4pd6(y3!FrfcSfg{ubZK&_jM;9UcPrp({FBJ3f!4J-3
zegr}kvji+di~$xnm&!7EoRh-Lae{Bu^NTs4gM@PcpnnU-Rrm#y`Gpa;kaf#0Qk#&`
zh7!XKYuY>%14_&|QUz#`D2|_TVIBv|X?u1uNZwtz#|Qpk;b%XsB3p!jyC5H_TAsvy
zj7`u<K6jCGGE0J=u|NwizIci%zx{5(kV{n0C0#u5z>bzTHpUQO9S3$4f$b3tQ1`z3
zCb!NgQ64Y7M9_$n5f^EP4eXc^&X825OH#{QS;mPh=F5ist%A~<VH+GFWT5~<Vkw>}
z9%s_MK$O0V_VX_rF`8VLb2<>?C^ZN%K;!Yp1rv`)Xw&q6{p+hQ|8k2T>*13`dA#`7
zr#}Ai#k_Qa93)K1FMNK9DsOp<Jl^fMPx`J~17c*NQ#xWqBaQLE!k50dga)k<RKxs>
zrQpwgRt3(U!`_D8@vqbx=Z%d~i2wfgPn5b##nEhvJrfN&ukJEibApbnQ0oyE5=z#i
zT^Y;xgynd`)L^Or`t8S3gSadS=eH}#XOAZM-2ntE0%W0rk`eN$o6^o(&pf?GNq$e^
z$1iShAah(?woC#>&^2|fh-bg;`IOw06#?a}mQdg=_f3*U_)k8$ge_rXKluI$D}q@7
z1sFFER1qcFPWMp(<XHvK%wr}VigC6U$hVH#DsY2|qY{s85K$dzz_<_MF@hQ5x-UMy
z40-rE@-IKT?jKiTlwn$gict+|etC@_ZhP^?4N!x-BhA@bGmZ!k01;3^r?g|u0!HJ`
z#=x15JbpPo{N8s@KoaUOZOm99`{KnhmK6S{&n|+a|Mi=zgynd6;yRo#L0}qTSTgaL
zh83EH9u6l=SPVB6k-p2>Kh;6PEKnYPDak=56|<z};HL5%<%L;G-dHH1WLL(MO`f-&
zI^A4g#7bEl;NaI=s7oV60_*FF&2Tb7mB>KsfA(jq@40`TG$Q3Lcp;6r7-b-Ab#?54
z2M$A(aYQU(`ng3h^1uDeI?4i@)TNz2{^O%)hkO?LzVVG?9{axZC5`(82ABcf4DqsV
zz@iEoVXk!N9f#igJF^sEJYwM#5TOVLrc0L;=QAgQ>woz#<mDnwzr?+j{Q1?$l-Rx}
zdZ_>t;xGgZCCH9NZ-SQ2P(qo~gsexm*}#z-NgScsgdq|jltP0xLVisNXZ6IFmXW|)
z?vqSD^{J!4=Yt<yICg9tt&zh)0>z;kUs8Zeep8ZPUgK-79$)?}#;?Ui_LT`ooVoS;
zzrXO8e^E6;Kw^<%82D9UMT(JNF5nd;)|UVaPbAq|@Zk^7|4ppd5$xUj>ys=>cx4_T
zcrdjC#0U=`Vd5aIP0uik5xV(-IWGCpLw>A{-|2%$tcx_ie5dmv{URzk{x!fL36sW_
z_@zsXfktGpx{TjWt!@>AGF2@0upEW!jxL}Lm>_CmIo9ggTy$nzkM&VUssIG}CwN%p
z;K%HsoL_}ot8rwKX85tusS*4ShHZg=>|?~z!{pz2=M?C0CU8K)pu?B=Lx_j3xp`6k
z?6b^|HeUQ|4Mw!~=}!qq{vk;8l`S)r03znXg!j)qx6VLAYn<Qx+p{d+k^ati*4cf>
z&M{ospTAHUKu!%5SF>C*r#P8IzcM)^72u<gl0Q-kk=K6E6h|nlI`>k6P2JwiQ2}SL
zU=^Ssn~-BsTalZh@%+n1&|MyGf$ALK$O~wOp?{PRn}K%@Tb+J%bqw>6IxGQl!h4UP
zl+S-|$@)TNzWecy5i@L~CT@{)@4dn!IP#A_He{HhfOyA9foP$_cF5Ce24aFDcAfdd
z6wE1DVc;1@TLRF`uR%cx%|amu>6rjHRtNo<5Y)mBXO7ufess7Z8?O10M3cwwnZhq=
zv&rwa>oR`FmhxGJ0;$c09?KzV?byin_83zn4pzC5f2tsW2KKdz7)lh5Jf<*M*F=gV
z`VydmY%al(DKx?SBqgLm7>)~Rzw2Fdc584Hd=0VA;OW)<_s>%d_lSZh<CZxiF-qF`
zFja&e)&p5EWX+r*iKP#0kC_FFT?9q!XJ#8JOL<3P4w8ysR9#wTdWH1lmuM3xO-)PS
zrt@0P{_)Co3%gMPK!AQ68uW7}ZD>GwV=zh(L45w%A6jvCgVrF8xCP_LFvN^6Ueeg{
zz3-k3P07-bIluDBIj|$K!%qBUCyE<==IQmXeQnjs<vhxde2xq`u6y~H+l+2pzVn@m
zC2qY{IBFc0NhybP>1l@$9Bza?kW8X+cf_|W6!X+lzW`MZMo2(7ny+jFdayLk{M;%X
zVQG*@8sZ@Xj`&Sg?j}iLmZIM*`<9A@>2lX4Eg2f*GIff~Inos<x|<oAt6c&1h7;gv
zG8;kh068AT)(DmzMi%A~vfK#2w#;~X?3m)ZcfE7Yy(4ERCk+h{&lz+;6$$VT#-Sv5
z5jzz4=}$L_@!&Vyf@)Fh+uzpM!FWVT$~^w~GQN&7G;2oC0w5wP<^Tn(w1DpTwQD_$
zV+9Yfvmrcjgf8F<bzn%w5nOw1kQUH_y)k&V@3Qpv{oF?d85I~Zh@EXt1lXJjauP?F
zkOw1d4;7$9Ym=7q4+dS{Q1Y3a9L~TI;?3htZ<;2ULGreul527-bAH^G!?!YR1o@Kj
zhz39Zxn*De)^7!lZkf!&WwVw;+YVC*(9F{!)W=Rmy(7TOENrch4NE)<NgP=MXf1I>
zFVVQ{gs$^kCNd5E(=%h7T@p??l3-geg*ix19O|IY^p~z+D%RMOengGEF*5>6@rpz>
z9$5v7>-2<|DU!lb=%1U@Iwt}IM{Ycc%mjo%9vZRO$p>p9Y+@vSa2dv-Uw6&U$jI>1
z-_lwux}Y$}=RV64(6(?VCnJs1pu>!G2pJe4WDJSbQEdlhu`6EF070k*TjCZ#vnfVQ
zi1A1Z#*rN_jk{lq^xDsE&F8iXN^cB#IhtTU;D|Fpjw$DEnh>>05YcS@QOr2vY_5H2
z-Wx5jbTFeyx`v@t(6zJNtA!MW<&aQn2mylGea-V1y%2O%x??cHJ(7n0h9^OT1V7f@
z?iEK#EYQDAZ)(vyIY~J-iM{2e6J6;C&Zgfu!oW}>dlmEuX=~*4rq=4M2=ckh!L|^B
zC}tDXl@KPXVJ_Qm^qZFys43yMyaghT#Lh%0F$;H1B;!bo!3#7^#1EtzN+ly047Nu^
z1eA!bV^oFgjzjho8|Y~`i<v2HqS-5Q(Uq`WW@h94O~@z+%kjgb9Uh>80^6Y*EOBHo
z8a{dMiX&RUuO{!drBVIjdZn*@Pn2>n{Slja(W9CoK{Ep}yHXj6l75(i1>?v;X~UDa
z<$Wi(-Jm<N*r6fm2S*&nku``XWRbx$Tyl(~1`AXlD}FD#-Q5A@lw9;u1T>=vaAX#&
zi&TVhWS4GTSSHs&5lOtG0(!SMgCxX@3U-4dD0fIxqM*c)8%YavqQp_QfHU`CWPgrl
z14<6gQ6I5^LWO{p(_E6^7RB<`UKQOIg56*WfgSR!+7Z<8k{x3Z^m~>>MAY^q#6_NN
z(=1fsV@;~55|I(=1kHr0x^xa{AKXgr%&d#WG^C45G5wrJWBJHRbVLM>kTaG>WX@oE
zhWF7<!@`c0B0^K<@_ukkT|zr1<~g2{U>wYm5q3Q2Kw%PT)*#Qbp=5`IX(kb@Rm7Xk
zk&uIK#Sj)6)G{W<uV61`nhcQ<rxB!Siqydod&1-8_jnG@G)jtq5hh2*QE7@u#uOgh
z*(xw>ODB*fWG&d6u^)z&M*A`H?Z+sYl+!|bfc`j2AA+LYf+GsV=rvNX!z>B%(3%4V
zgmCB(Av6mw3U4MRltv3y2O8v(0#enGg7c~AF%+F-l!=Bs8$t*Tim4O=i$%Nzws}VL
z+=%P6pOZ+5$A##ZV&!-Q3$t@tf)nv!fg)xK!hjXA86h9b1;Wncq!OG-bC<Mej<gFi
z(I8>FjYjYwG6||oO;u^<&=-;~ouP4LXNa`f_PMz=rdI`HodG4{4Xg!J$!v(Y&dv~5
zwy;pqk5p%7#sWJ+4Sk8oDelUBnQ~-47MJiCcXftl%AhGTTXITa?wWn`f~?FV3F11s
zV}d3z&W^C7L+jW_wM)6g5j#nE?tm`zd53rf0G}3E+bxbtd$@|U#a^DR0<_S;5f+XX
zj3Z<Yf{Y`abBTh|gp4DbWzt3q93F%6T(;0aB6CAzh*EH6=)x)pJ0t?HOb+@<b68(o
zQj)_4N!R3{P0oG(xSK~Q1pD)yIEv>lyimE$0<63uT9XpvrGN&GFb3vFP(qtF55^R@
zfSSNXWn**=!4zP@3Q|q8*)+}Ef<e-5gff$XohV6T{59$Choe<i7{(coc&Rqm>#POr
zlU44+i#*tZHk_4k#E9TkwVBy578nf~6E-<H=1~$r!KRlVAx3l_5<5_4a0LM63LxIh
z(gLFohuD!!w8}>#<`Ip1wZS$3h+^4|r7aSk$5nA1ir~xS%u+p3#lYBGi@PhWF<p8o
zDAN1&*J##e-v>uV0mCRb;tY-q4OnZLP-kkB)VgpY$cZc92z7uX4Kb21GS@l0I{uA(
zSU{Di!}(kqN1SzUNQ$#3OfuSuQVzXv<oN|OGp%5L#P(E1B93^LAqUt^2pt?j57q*a
zrWukTk4zjj^k6?GJ4hBN5=YRFDN<3zf_(<E3P<$_)uumjG<m2qzncpu#u7c>=-?sj
z+4Fqlp|kFdcEFJ~r7tohX@LtgX_;$^m1o05WaK~(J>Up-NI*QdAPj1`w3^6)FhfHu
z#M%gDLIP5bi%AGlmWFI{EC*@<Lm(W1u_8<!1NkXZ14ldpV+E4v8bvT3#RKsj(P<eP
zm4brK{rW4L4ZdJa_TOtf>VqT9tn>iaJ|0C}r=S9hvPMiTypurMh}uYT4w?Cv`Q%tN
zWlk2$gj@Ex;Y=EnM8a?4I+pA>&>io%)!$+6;3#K^Wn4$&w47v=)Ivsd-C+Qlr>0}2
zJ8ofkSXxqx(;(_o3)Mg-XP$>Om^gx%Dz2+%xL6(E7GN+se__0VBfP=N${6Olu%Kry
zj7PMCJp|?I0wAm3_#*|rj3Y8SH(Km)Hvxz?1)oD2dZJdRVzS^w*rBFK*pdTm2qUiR
z;E1nC>BA9Kj9uYKFFz{4W-^tEpplXbw;xRG+o>eJVL~PzEo5BR2S@up9(j`P2@#TS
z@?L9mUj)%d2u&R6<7OkQ7^6Odx`^mvqO{l@M_y+r+rJ{guxj^CE&nn8l9LrN-SLUy
zaYEe4E{r3aAH*9+9!#x1XlAKon@{m<5)NtEfw+Qkmb*;PBPaqy3<PxASu)M`O$L{c
zam9f?X@-6y&b)YHn|Cvjy^tswu_*!&Kcr*agl1N}!4clf5AwXuz%2&`MB}ej9KoYi
zS%!9f;yU?|+8Nrk?8H*+`;};@&l>cgoH(*Gf$~&ea*-@FoXK@?gDHVzp)@}eZ%>%Q
z2mU;H;jLbRbH1d}+0PJ<kZgohlo9sEk@~G+o-|y0BDrYeC>7Bdk8;V;uAmo=5DQ1y
z{<TwEwotb0zU<0!Fs-73SZCP%c$Dz~ZRTI9GA)oq8X<;?9p;K(vF=US96?2_YZ*$8
z*2*+Mb7;ZNGtwpE%8(<8DHDB!km^eu@ep&9=ddRgig%WYmUwolZ~}293tA+Zh8XqF
z8Ha4L-5sG0mnOsRngWm=g_&*;%_?9c$7$~JM;d2Nm}dr+MWHH`8lpX9W&EN+!vU&1
z9wBN3uJLGNl<y^OZRyjgY)Z)`JG?#bjI*E3&YX~d$v&$G9CQbfF;mk}h>%(Opl1=o
zYG_PCO>huX(Mg(Gj6r5x6=SuWOwy_qlO`JXXhnlQ-~#!0eiUm>T6~+)o>h(e7*dW$
z0~{Gmy>O(-MQr9IqLwb|>9*%eF<q5%5xY%`v@cOHiO{JGj5MoBR43i*FV#l^4cZiY
zjYsUS(}x6)YrPJeWZKS|rEiqmz!BIn3pA^>tguEeQ^N(9WI`AeGGQm-RWFEyE2bVv
zGrX{{Kt5*7VUB2%Kh`chS27DpJWz@SH-Wl=BNmF!o*UmhGqQb7+dHvChju7}W0?=C
z9I0@$u)tCSi*>vRuTE!X#yJ}`bi~dj($K>h@;Gx)z;uREq#fXf`Zy@bb+9kg=-v=+
zM>8xl#ihC6jObV%<P4Nz#Y3ScQy#D9{0ibIq=kg^x2N$4Ge&@*$;+Wqgdei#NlG<Q
zwb)S^w?c99a@HCOb=Og*ABd>pc6?4#?1dxZx-(nVx;Ib)L9Do1zik|8-8&W)fea=g
z!wC9q{Ll=bL^CWL!f2yt&=UnJvbnVrM_Ol~7Jp#PaBC3X3r7q+;OP8?iF4=q<WUDl
zIVADk1ao<IWC1|$Ynq!MXH*i7W`!dQmhPYyGN4T!V0sJ+(E?E7mar3pDHKw`2h5@p
z^Of4cfgG9~^Qc5&bHN#K&CZQ8nlr%+Gr$<MUgxM_fTKOlk2*MtfCqq}2+k-jo@hw9
z2%odDLp~~S+J$XtxgN`9*S}OBi7VoWk%$lNVvT@^hetZ%%TYW)?~bEDGzjvVNw{K-
zq2`54NP-1&pgGC2-{umgutVP>O))MLN2LAm#VjQ8W3BPXk_Rt5wPc0i?0G(pJwc4h
z+lb{9iG8ZEt(wQ3U>vZpKTTk#Wn6&}5#EgMz!5_~^h5xl1b3m3gIg3Etuf_s3YEbQ
zj8Kw8s$x8iP=QRV(p+$kkeCMb9F_wz*z%3D0!qJ{aa~BOvW`8CM@VvRzFPN2&X%wn
zB5lcA7i5-q<FfMPPRHYkPL3NX&#vxsnqsf<2pnyl9rJTot$RmY=O0vU;3&*s97d}4
zW0vQB$tnL_AagJ(f+!4<9ByHU7+&5bJv~#sjsj~egS)yZ=geTl{In6*8Am{dFTHPV
z^EGn5Pd?tj5wj28lHe;qJU=>oc#IYxo~E*8NHXQ%YHkj6RTP@eq!8^`W#oV|z!FcI
zDlbuJ4a9ZWbR*_Pab3KQ#A}a?MB1S=qbU-h-2g{>!VyMDAcPM@q{H<}OKNI=6V_d6
zjhJFD91+*?Wdk-z#(1O+{LGISmC!FyN3Ju-2xEU;2S+i9z9Qw20dNBQRawjx-<}n*
zOsq67ouF1)JC@%EN31QdDTs%#M5lc5N#8k%*D4vRv^PT^tE|?&VZlvh%k<(ujYRcR
z*9Il+OAS~B{aFCM#>W|$GNTjM(Iavruw>gmmH;Jy$P14H9PJ55m@&r8fk+WGmP2%b
zb#;W^J5{Qtcd5=D%I9I5!G0hB_2qh9rM_7A)_(8!$Qw}dfwzad299Wfc3>eJ-z8zY
zEY@KlhOM-A8^4J!ms=r~@rZ>5R=m&feFpv3eBh}5J^<?sZ~>>(@>-u+$d*kQXOK?t
z=E+@2MyC6)(Ek>9eb8xYf$@k(!vuA?&Hy8RZ(>jDb+no7C#jj}Ls*vSmB?mESX}9f
z(+Lo+AX`kuvB7Tk1=)T~c6Pld9N~+!SQKxvxE<UVa{&j^a%I}$C|HGCb08ttMrIjT
z1Ya3SBrQ7<4Iv-_rnkHe>ghHw_~W8E^o;U|K8?%A4cIb`96UYOQo|~H00>2Pj7K<9
zzkfvgcvp7YdLHENm`z}f&=Gf)#w;N|E@9l02)I+410MpXUZ^Crt9fTt8RJkRRv+iC
zI07T!2&;osegNX8o5s$a8^aX+u^L-rl+m66wgw^mnB$K{e5I$TOxb9hktOCqI1NQ>
zPD2<8E+LFE;q)r*V35mDoS20R%8)}EX`~RiG<V*<f~>d&idkwvjNpj*5exF(r;4cA
zZL1&j;q89?z7^Wh9xVa`LQ^ya;@H#_Yn9R?RuopP2*={J7162x$h6IH9*z}Mawuau
z>r(yxr+gk(#0`QY43Evyp+1S-nj(P~;K$QgIE8pji+s|)bb=g%hf8L-RPQ5&lmH0}
zf!^5|1D0{i#N>Ph6b0!Ww<CCR?e}K&n{RicJ3z$Y-9Zf;(TJybG>ai&7!ZRShcePW
zf?AZ$Qdo6{PN<!kiMf3c4a-_~2(HEWD7Hbct9#_D!Em#toO1(5P&FHG@PT^p!Y7wm
zVK{qs^uo<!d@c+eDYT2HNH~hMwXyL0d`_9Kzw)`53QZ_tc6QuL4el}C*yXOE1SR+Z
z&*_|iNXQO(GPM~elN|UW9k-OGR;;B9Q~pC5z>`{tPV3%dxNh37Kx9{jH})_0;mWqo
zLO)+w_t(+2Rh13H=tw?IU!x^~J3`vn21p@CYbJ2fum`LqyhOEN1-0Z*rctaWv&;X`
zoQD;0gWw2X#CjcTTs*%(ys(cc0u8Mjhg&8SekAjF0RgRfPJskCxXUg7by8gfpsbVt
z2@3(4vrJ?h;nsM@ijBp3(GWY+cz%Quaf5h85VXuY&TIO_{p`;12o1^=#CsFie>@1Y
zSJxUcR2fPTz}O0RG3l;Gs9a~@E_E?oC1Q0BE&GxjQ%fQ#FL9J}3T%(Droz$5(VH($
z+<fy`8%KOeb$xvt+!29L7aTDdam<B7o0}VlNbHT(LJSO8fr!KrX{~<9jRU9&NR47p
zSm7(E1xLEY$VD-7U>Wt1wz2}P#u4jsjBa={;RrbJ{0R9o9)S_0%|q}tejku68B2Hu
z;G?Gx>{A6tXo{s0q6p#WuwJS)jxY)KzWQ;byMqA#VKA^J%Zax<$g~yJ_pkgv4d!tJ
z;s|>NIG7?rfHiE7GfIT(h=K$aF3q*^0-Cr?9Fd@Kf5(y%Ab}9@B!n~`j|gsK+p_`&
z%xp2nBmIn&KC&^Y@0|E|8RC2RM8CE`YQ>@P$T)%#;D8C)W=NQ9n-gdIfmB%Hh+7nf
zBXf!`W%(;{gc&m~K(i^g26H@$z(%t+<H(aEHZ$;Zem7klyXCft)B0kSzU|3)#9d5L
zIAXzMmLUMNVvWL)MI9Tkfq()w4hSBvV?1bsPH^NEA*>N*O*7}&Sz*VVI<E6jMJ*4+
z+@%ZZlHh<B#~}<KM07E~08qSwBrPbkUK@)i;QG}+wl?9@w8c&{*5M<qxX!Z!bjpJ~
zSg;{A>;WQUnxMy9q#-7aDmBtS(J&!f5n};I(6501Rhb{znPYzGKp@qBBv1;RW=@00
zGM_?$sk(BbXk1c04@-cNh_?tiBLp-UA-8bEqayZuv);vuF|WNi9AXFc`f<V`E!iO}
zPtvJ~8=POj-x3~l>^xc6K}ZmgIdC^K+llM2J*+G5^3)QP`O+qB;te9s;3(B+-6f9j
z-oXF-`Eh<;@RnP~<LhC<5&7UKChuDJ=6hL(k1!C(251T+%*HKSpOYjK3@Z$>6!Tve
zAP0i^%l&x8EyiVLdIFspl+#lXUU{>02#`_PVfX~b9e#VlpK4(w;)iGnuo-RV>va-)
zGt*C9(~m9jEG&#c>L~x90cc}U9+lFxdRkanInp$kN78>I;0Pm(MFz$iapNP&Z(L^n
zo)Xzewof930FY6EHAqB3*alMA*2Q8S`@Qjj)}5CcaE~m)v~k3^7S2u0W_SIGq@>(q
zJTh}hj1atJEz;c0ODB?Ys&~ba7wf<aYjnJPbo0eA9>w~XcXEp4wMSwno*!X~*ddlc
zYl$Oz>H3G^X?SW;)wOVD!WY6}Ab=yc4DlM63N6q(Du9y4*vfMUCU<<e2^^7TiVE?$
z-dN%&{Q!mpg}oF3zF0yr%96s}C!jeGy5K-)`-meN%s;%MSNyCmpW)pWm|;0`GXYRy
z4JL*552>|O9QnTGzREN?<)zAnF)+z;aF~tLtR+whA-+b4`ZydKK|eU+JwB;#72RpZ
z!GRL3LB0{kOsX1>4#@%mV;UjNW?xX1PR}%3P^Qf}c{X8r*)>5$6Hj->5w@4HgeZ?i
zZy-Y;#}D{!pVg`(zs6PmXb9Yi5l5%7^u0?QbtUO4GE+V!FUFC1>BOi<r3fD6l|TO2
z!O@Jg=J6<TRLZ}roUel5tdf+Minu{=#CU{1_jnW&K=~7*T!Lp35X?+LWY_zGj1jwQ
z7l2JX46c%Mq~*!umM#e=<PT%Q6~)w-pZwA_hb9Pmn2vQZpVi_jpL=3*bY^Sh1n==h
zEWvsan;BM?byxBE5pDc-Oh|Pi{Mei(H%r1E017!`c?9<;@DkNP23?b%sv!Y)UPbYA
zgEB-Q{K0rx%q2_PLxVeT6mP-;{KOHzC)mMJJw?JN*c35WdxKXUM=aTuIAX--tzL*^
zo4RoXM~<$Oc*;QkYXe866G)BkX*>c!7#@b5b3<$itJ8WN<`tt10}5#@EeuSnlqwLJ
zBq+tfB^dE##NM3<ga)}K1C9qY^o6y1RgI-WCP%FH@YsTbuND|4EEDljU*0F>y$KM+
z!Rj~T5fMATT*+b)IN~FU5f?E?u~4iwV~k+V4h%-7v@?@t*)OD!hCi^Ql{(Fdv;vmm
zBEjX{`~)m8Me_O>b9wdvG~gD}=!{2nSK`QG$IP%dtd0SQ?<(uJ*LnNnI8QS*LZvk}
za8$m6WPe_gx9@56Wp9u^0Y(})B6=~72(bBjSW@1=k^O*Un+yqT5<c%Q@ny>;@unY8
zdprf>(C?^hH_u_O9Y<lwSQ!KeO)*l)>=Q?VjK(A3!Uu?Ov_>W+{f7}!(w1h3QH+Be
zLyR;?ByAjdo=ZH&6F}gQIO4Ozux}i(IgO9v656pxh##?aWFGp}cob{1?9c{=W0Nt<
zV*rg6UDh15Rh!X=rzD(7g9r{_1!Q84u8AYy1IoY-323I6AHg)tAT6*F*EtY^wjDUy
z7(RDyWNV9Ao^a&Q&PxsYt?GJXhU22$%#RwxT=ivgf!<-H{q->0Avod(bSfOJ#A0Iv
z*yO{h$0O_(>rEUPN~N`5HIZE_mMtGNj^L4_oE)VEns-kR&AUIQTH?qHcK`%Nz(~R&
z(<Hd%AqIORO~}W}u$MHsS>dRT<uG6u<`!7fV8pjI^tcN7d*PSSjfa>_W?2yeAd2gl
z9P#*%^*Y=;pT}oB!bBDF5z)b2{V*Lai0fE1CO!<?ra`ddhk(_t0D6Q${(uRORNCVa
z6apVOW$Bm%0~zRpX4bufSJmY&=$9vl>FBHD!*fCbkst-{4RClF_T2djNB*&F@{J=j
zf{q;5*$#~(+aX<){kr#kJSQXKrJm>^$%a2Sj(B*a@yIxe#YPi<!{P|3+7B27S3Mr>
z2}f8mah>KVQy80!JW$Y48ZsxdzgoGA)pf=rzq=GT>NFH~NJ$R51FdL~gODaQ$oz-{
z`k7+b4KfmeBW#b?5I_?@)59n1h@cQudIPGbGZz--^jN<a!Gg?Om$=S2f~pv^G|ob~
zIZ7626T`FZ+5G65(F95wI3k1-j!qAs4;-C1!7QT+?HV{rE)qwye4se83e1Rkq3cFm
zgoFVRM@WA7#3@`{_3#VT7)O-h5m=5#=+O!_@$RLU7E+{pN@SZQ3v>$cCH)7AqYm%&
zV{{C_1Vk(+XAXI!F(K1w9!Wc=!7_y~GwwG2vOIT7J9L}m&>G;4jsi!q=xt93I;6oC
zj)0O!B_>KJx5QBfMHmAb1SSkdsmhYJfB)qV{_yg{KYaF~A6|Ya&JWj@&V2Ysm#d@7
zS4qmK@N-}Pa818x{#W<isurGoh$<>@`Jo>@_wXP5&aWY4FES9q0i4sD!xwJi*IP!u
z^UV+a=(&gf>iLH`Nc`}*hrj#pAM`su#*uYlJLKGz{yQ$6{=X{v3(7Mm=rL6~*ZJT7
zKR!|lA-SLnA9PpZsPqYlngNu>I^$?59wL`GLSM#FYQe-O{qBzQzWiltB^UHq;wb6I
z8$&<gL4F64G&$r$b{Pq{dQzUGx&?IFILI$8kWa4RPTh!&(Cix>N%PK20VfW{d-2e`
z!jdzShMl!s#W)?ADSkHuK%oK-aD)UPkF_|M^?1bdqhssCs1L8mp?I%e>EcNfn*pfh
z>aheT3$JY>>68<2=KuM>{o!A|@R1)q|KN{&&P1K5yJeaJK3;eb<3F-6T{k}Td+)fj
zYU=q1Nx0(29(W66>p9CRuNU$AO+(vfM=oCCeb|v7JY9F{E?)Qu&|6v>^Qej`vYmkS
z7PP<t7iPqwhJO38H{W@#q9>@T2#5wvK$9;Qd;VeC3Cbmtngu?JTczEp2UcsL99xZ}
zlN&H)6-YJM6*?+y$vDE6QUxZy*E#K^f1+1)=fjI-MZeI`VfyWjuMdu56OLA!Q6DpX
z0xe7$!U*A*=5PrRIJooy<p75?+iy5?3+0mIRX*lNWOB(U<B~3H11P1zI)LXg@#GXN
z@H=iyMkE1ku3OUl2vcOab#qH^WV0{GpL=3{#MU6TG@wMyp>$|77)HnrJyuKDCr0A{
ziuuv>6m4o$B1R=t^Z7g9{I_io71mgrI_4K>;#TMG^B;NZT^DE>#lhnT-}@%YRMuOU
z|JVcfp4u3P&doENS?(UabnE!*UqAl3*N=by=|6H)dH&&Z53R3HEUySk+N!!Z#%c*%
zB#vy5EbP!J2TLVyzT;d6DS?q4mqw`b1Kno!ubz9D=bp5{7D|+bUM98hqGnMUz0f0e
zXch3w?07Rs!U&NwUaQ2>a{V*q_Ro|_KhVYz!Y}o{?`hiSNcu}Z&;>{OvGU3Zdo;mU
zz^VN(b?pHx^MtmMXgMGXj$}M}$7uO6ZtM^!Va%~^EF57Z04i`KI*l5mgV{Hd*Bm@h
zhH+{qmA^L_vnnoK(hxJ;8UmyMIO2@Wu#<;X4t`1xc37`tlML(LEN=6qL0*78#~X0^
z-4?C5f*_u%Ge6=GU)oW_J_o<TN!^MIOoGPw(1Ety#<BxT;zW9EX@<`4{4f7Qn3hJF
z3LrHEl%Gd{C`xvaLisO#^4&*{9D;IsdEYzVP}#7pH>!N}fqRc1XKT0K;pM?AuN~cb
z+r;Z`AHV71=ntO$qZ)V7HRI894=t~ZpEx<ef(aYlVV|9%M~@z&aUbZEgYH<^3>1w1
z`Wu_$5mZ%-n2caYISio5+H()Zq)#iB?4Al0OE|P?Ug$1ygj34Nh3$vs1ysQAs~%eu
zrXnh+EGlh@TE-CuNo%%7I^t+(f4?r>cr7B)@4*O4><1VtA<rz}hhc$p{{B(dk<?J4
z<@|FCZluIf863u*YW@BWIATO#LzJImYM6*m&EwmF14=~Nj8I5`F~|du01|t8DS(bB
zNe&5+#Q`OlF*#Ihj7Qw!g%?a6sIs>i9MOBcH~@S&cvPevT>4_?%JBIMV_W=K18=^>
z54db@j^XN0o@84ZzJ-^P^azPp50D$qT;3p><qURMNdQd{Hb1ZDM_dX=j7Mp2iJAga
zHp{R>*{6@nAYb^%fB5FVU0gf_<(SIvzT?i!PmBHNAN)F#xRa*>N^6+k5R2Y#{I!XT
zm&U+Rr?u!B9GyBjv3iW3gOuvoth=;49$(9sRV0)k`|x2A&mkN^e@2o<O5_9$6+)Y3
z0!Iwi4A2XQSzuvtfE7y(NuVh~1Q1Fi#8j}K2vhZgZY-D>M}`vl*cFsxkZs4_fD%gI
zFZhHJ3Z6dT#q_sv1Z_qEbhdHCtsF`5;U15SBihWrY{4KZq2v~5glR|wML+;Of&#^L
zG=lL91rZcMEt$xlOwxb?o8&MTWEw2OO9X^mQii*}l_gz1TEKBp3-sX<)iw4{gc+Y_
z*9WyCs2f>2sxj#F>5&T;i0kw+DVN7_^2gb4%t*uw+Tdv9=yLTfyV*Hy8mB2l!4Gob
z5H#3D(4sJJ7E_!6UsYUZ1l8uJi9f3Zm$eAMBuGbGvTmRRXJu-A;6Fa|(CJeP*c-i6
z^P|pipiuB*AG()^T&!!IJI@C15e_z~-hTV|8{c@yIFhyJ!FaT+Ct_%XB}%OE$m00Y
z(nRXiP@*p=$LCZy%IbCq5b*p%L~b>;LBA>Yn#S`F|KM96L9NJy=odNAEHa5O7!N64
z=n<wcC*i1GF}4#%)T_tzgKlVnWfMO~){qo9O1F$3pso$l^tYjuHn1-VIP%e80ZMW_
zO;>;)X5C(!1LJos+hoIjik)Wj&n*BS<lrNrgw}FUYw!+9W<QDC7nZY;Y?fY<edtI2
zu+ITu=>Y%^o6}Bj`WH8(K`Alfb9_GRq%_hWmX5{kn<KhAd}IPs{14w$T&LkCtWg8R
z^AF#7+o{#1nWIOhmlnGp%Zt;ePA;5WpFeeCetBgw{J_xf{nnj!`)aC2(<eTB@7C7D
z|Iglgf9G|ad7i)<kr==LfC0dp@FM4&36KN{<}6W+$RLP7fJu}@NhB3)Nv0%9lqg%Y
zE!(mj$3D|DJ=5FUyECWvhuLsu&dfQx)7_R87{DZ{`%l=<Q_uSrE<l=+E%)x(RrA!j
zEZq0rx)q-9lj^A|^g3{aB9xcssjTwV)_ZH}ygz?C{+Ri?sl)KH<z870hq<@ZgN}zh
zTC|wJ3>j0KY(vPj)kkN9TKuCgp4v&xssA5J=?mGqPDU1PnZC&9ERZ}OvLL#j0_keR
zkgQ(esOZ@tg3y&R0TD^F!|(MIe9?|L8A}FVC*v%TynaagD#iz9A0kE#sV9q(nTzDA
zII`7#ph%)j`;R9TMD&9uO5+aq=aAq1P@<eUJus*8U*}IscD9`!a5mp?W~nE2&LF5J
zH_@ys7vC2mDF&tZ5*}@f45B##PgtUfbcHH3SyJRrR-5vnA71Q<(V-ziCFb1hg$h9X
z{QVh3CxLusTPpDo(rJ%u21hYHO3UPW^iV6IXiy!N5fetaxg22a21F$#`0M&-B$0s<
zdfm#EUZ%s$%(ASTBg_daNg85!yKM*=tx|h~;7E}hEA8sw`KfL9SNMT<MC*{n<FV4T
ze43*z;=A-@jFlM<%qSpw5JPf=lNhS8`7Z{-T1ifFa?%nN(1HHvpe0L1mX@>?G=T&<
zl#mn!w1Oqo@MNy!=b%7e(bsLA=irF9oXJ9oub3pdg!wKCm9dhHie-jCG%l^=oGU8X
zAG%|H5}hsHx>-+}VrNE>KN&|mg0!6xWKghuu#Zegs(>gI=Ddl-<@k`7X%g?Ns(Fjd
z=K1uM8G4$4sU?ZgG}I`IG*iT%EML)t-+P9bRYCgRP%t~4XEfpTphIGLA!#X1lXf`Q
zRFRvBd$-ocNZKLbMh~|x%VNHmNDQ0|tmjQEDoU)Za+jC8eqrR1LO@?MIKmhdhRNU>
zf~5XR%-R+#zE}mwkXAPv`v@qhFfy6vPHeXo*2kze?Ukys@rBt$%lsK@j&?iG@RPpC
zM=>*X2p|k4KPpB7GP+d@Q($lg@-PY*J42vQB794sB-0RvoG8;m)egD}aZ5RtNVwz7
z-~Z?AS7uR{Eu7ZzQ5_&!VVWR|JLpyV7FuFLpFl@yj?vB335j2M49ekoUgUM95G~W<
zNLjiQM4G2qO3*?G_|!tQ0`a2MRKYM8`-R@d=)fC*^}#1#XvUn0{Tj;)?O`;@uXx_L
zNvA=O>O)IT5;XBEqlSA>22pmT;j!2t@^u|Sh64n#_6;Kl!xpYyQtFN7vu~BS8W=%*
z4&2NQy4e?wXYe_|%uUdpL<(hQc}WY?DVYxBC*R`5nD7L(dLjEoi#*&!9>tU~<>~^Z
z;ZSZmb>JCX&`XwhGc&zP5*Znir!>fe+GZ`om5p*JPQ{fg{fBnfSz@*_Vyw4q<;uk3
zVqamAHxR%|O2o;~-jP&Oi(VI#NAhs&>%*b2HxTqN*~GZu=nDk>cv|@S(xsl2*?uaZ
zb`uq#EjY=$+6&~}naYc`b^iEP`jaMb&B#Q+c^L)jNe|F!n!tVffimfw#Y^ZD{5d!V
z(IlmRcoN-`M3jh~xr161L<D6KnpINbDJtd+9VD#m$QKGS0U>i_tgod1b#)lq@tHsr
z=^to`#8_*BOKXCnM6w&E4S7HqGZba!UmzYO8wkcCNa-g=U4|_Al_$Zz5<lO90H{2J
zMemutBV_rZ(mYLoA*0)XCK3dO?-zEhDBu+my%(o{sk8mZxM){kWoT0F!A+HG6vF3J
zDp80nCpiV*Aj>V4SqX^fYT8a5sq{eXur|3#Tl7z`#;*d9BoNAg;+Mc=78Ql0f0AMD
z-c}W|q_>q^X@yE6a0H`ZEw*wz6xy<KZ$W{ppva9<p-VEk=0%|>It0tto3Rvm4Yi9W
z986^`6W<r5k)R@@CLzUqj4y``K|=4nYW#I7iHu$IuihQX3#Ics6$T~@$I6ue5IUqS
zI7=Z#$;$&~Ls#W>tjX<pq|OQ#E0`wwT4CCOKq8VT6iSFh5>V>eJNy-uiNAO|?ypmA
z5GnTV;QN<)e|ow9CzpDE{CeMyFZGf637OaW`19h^yTO!xmpUl2y4v$&%A^WGgQ=gs
zDNs5$x%u4WmJ27hJ$G{Jvy)p$7fx(_{?xYBEfIPc`)kEYKSA}(6aXKJrSowW;`1a=
zOKDwBjt?gfl!Flg%^->BXV%4s!pwqs$}4a}Vyn_9VQXmG?A5?NLOcmkY5%ib1LaWW
z9Et+7Dl)hNBIut<XQe2v<RLTeD<N?ON)Q_a=1ei_N)_rNX$dd^h>FiKcfi+a3sgjN
zfQdOeP!u`v4l9O)mUBdGCaQwWPAUpil3FNP6j&V10nr1Y#Dr!>CcP?BNhPv2ABuwJ
z*|!I3Cm9aUcimVYR2~HJfB_eai}9lhrg&aEif-W*@(jHcB19-Hg@%bil_tmKuei9)
zAVQfmhr|dXf&&3L!;X={!BSD-EiQ2t6*H8gR0P>@KF`gh664Dth9h32Qf@$S#JlXs
z0ZWe+wHT4%W0sab$#Aj*oAW?IKYF#-(!8SJUtJx}kEHV$zd}gMmNWH(<Py=(E8M|^
zfk;U7ye6TvMG1Y6)k_I6FiM7!kM*~r&LN2uMA5v2+B$E?YJX+5;7Ff|z2$gu)_vxE
z4A6dY1#cc?iJU^T`Ij%}oLPT&N4~tSA}Q`?h~06hm(;{I^O?y_R6a9P+C_^<W<y$t
zpYHO?MkVQpS~gLqi;z|V3aACO4WvML1%*h=M6A5(8gDR|m@CUbkeh-djHY0S{lsKd
z3mw8#1to(-GpRR2QAU^w&jdcOQ|JMj=PDGHOvgfg@)J}9g1E^Y2#h>b<V^ajQWu2E
z^H3Mlh?Gx)hMAY=>pECyp3H+AZUCTM(R_D7A$(F?c4jX@!Iu+C0MLm7Cyq=ZG27f)
z=-i|PEhMfe(ljZ=mP1u(H7%vKn&(e43Vbqldu>6=V(B8<sK3%Q{v<Cia+38t(V0o?
zn8Cp5C%EzqiUdqUK}6db2x>(=nIr-uXmKdCMa8btGFP+!vt29>h7SP^w>Jg|1M20J
zE(DV{3I)SVElE+RC=4qNq_4<pXe;-B^s4A}mc}Ii?od%Qou81-p`ee4wSN$E+1Y~7
zNS+@$L7LkH<*@zKq1|zRouk0Xf!1I!4x(rR#!*{)(&{xyH8rzw<W$TQ6cz>X`O}}h
zHNe;TC|_Th?Fj^Yp|G#JW5&;5TQP$gEmn{ib4UWQv&Xtc`&|z6@!)0;1_hFf7fH{+
zcEAn;ksI*w6&g-Yk`zQ3q#|3T!xIXNTxDgjbX05D7sG)*AhQxkD+Y^t@-7{oMTM6l
zZel8dB~HPP#CpYu0m2{;g;)YJo2`juDr94bjr^QM3DjR{PYI7acX%GYCwjsH;iV{<
z$W!VAZ6J3*4Nm*qU}9;h8_tZ9Ly!q5(@|C^@h-`U0*fPhL$O1j*u)*}C}$zi@SJiK
zQ%duS0=>>@7fpuG(<1u}U_r##?y~oBic%V^kLRhaVUI%ODm!S4f(V*HzA!Wl5K@>S
zi$)U}!El)U0mSzOniNoA3R}q>78&y(5kEjE4i0Cfb{fcJD4@`iwY^+_{F;dia>#<;
zTpcbgOxNyOxsp$Ni7Mw$wCG@vIUr<#7iB;@Q?FQO(Wrl5fBhT+=Fh3Y)^Io>FOTWh
zgo1*E;^M@{MsMdDUtK+Z24f#7YAl^A2KA<+R?t5<f<<H+Z$Bd#40`kO{2SL8c@!5(
z0wo8Eo$wJMWw815WH&4ViG$##X@o7QQAuNSay;DU&rpbM{N+RpB^8lG%R!moh^`KX
zXiH*I2|gbg1;W=E9exsSmLr0RZb5e<+5`@xl*z~{QL(_v(x=kZ3{@BgtACoKa%TwX
zfzJqDjPXc0AQ9=qDFYA{AEF6r6TwSi2$(-~9SEXgFl6LrB+rFB5{H#JZde=+aj&md
zcn%6Ij!e^p#+->>;{F4nG}G`nHs>^7JHdJ70h&fD>`n8hNVl03a}36M)odH6I+E~1
zO-kfS$utn*3)6t(p+)2uV6(gO@=*3fS<<9vLRS~AxI#u;$DJ<Hi9&575}fvGW2JDz
zSOiCwXbm-jqq358+e=`Cp4UH3O=R+MPU4F=6Z#%A{yHZazdLYzxD^oP=O+{tB8(DB
zN)oDT5?fl`^$m%?d?zj@;vf<f#Hn2~&g%zn_EQt*r}=a9+NeCEFV1<LKg}I2Rw0Ip
z_{7*cI)nrhHqnVfLi7xIh+luA+xe5W^Eq0lAOb-odK>r@7NOb^wGNy~G926oO49je
zF^B;min<5_{HQvz5T~-r7^dRHFhd@Yim{I85R#>+IT`1RykcaWkQVYtRdJ(YG3eq^
z)TU7}2!lF@BSJ7bvPu}RT&Zn*K1ge;Rkb+cNqxl*ge4Wqk5N~Kc$g^%{Yn#+q2Uxr
z4J|^=9TuEQh0T4bKS{rMe_p$etF}&F7l{-55XGh&TZ2#2UZL<<bhNY)r?H_@89@e%
zu`4SlBmj{l$`XPp6h^fW@x(aFH5bsu#vR(Gu~LW-gK!?(WSjZ%YcYSFB{pzWS(>ht
z1B3lT37WA<39N6gi3>77P}-)<lSf(sQDGcJrKJgVb%`x4uExg1Uw|X4yv4D=D=~t%
zKgBWf!R3DYMVr~O&frKt>I9DDWB7`dsh_wy@U-Z4F=CjNF%+V7Vu?iiK|iNGOeX^$
z1Zznd3{7!_WfW5nc#>DN+m&vWIOm|rP*e<4mON}m3F%L`3TeexG|b`2hOTB5ROm!-
zlpCWETCFIswY9*fK#H~h3@u3;Ern=adyM|1DEu(^E+`6ZihapUXeG8A<QLn#6m(N8
zS6m-B-X%}u+X}Hs4e(`)V02>~j7U`?d9s$X#zEq-4K|4`V`~M`tia3imFN}n3G#fA
zX5vgBkeg5+*@PiLT(>7Xm#ykVAx8uQ7O+!Q?QUxE*3_^C91}6Fs%mdZsk^Mg8_h%C
z6K5<>;)TFy!udc61%>#O(C6_*c%ubg4tmIr(La6(5pzF&UHlA6y7B99P30mu6#~wg
z0s*-0gA>dx7)l)2H)9{gWW?3M(?{D%N>IfU%gb?+FmsgH*p#@c)7{eQ`sF(krz%gz
z6Q)_u-qOR5mK@wua&ULafn6p0<LSVzvW;tlhV##=!;X#OuhSB={^Z|(qxbyr4d+j8
zyl`UUc}>SRo{y)Et3x!LL=TuG3_*1^GTJ{}>3M)-u@gk@gp_xQQdd^yDz6|$iwF&Y
zm9n*9KzJRm@Gb>HU`khz7J^B6HDfKb8V{;b!mwARUVF8mczDJ>PezMUl}70bfXrbI
zOdm5|%t6qf7Wj(&`vIi|S{xBoD8qeU3gB`Hh=4;^G|U`aB(A{t3W+&}G!*GCC%p46
z{woO(HTr;D3HBr91hCg+Q%#fsJZ5-B&_#nGELnMmLV%}~uuMuOk>@AI5yJ<~goOD+
zVnGD4b2%oHFTlZo6{b;G=&Gn-wgNX@Vnwy9wcT4&>lS`knpj<f*T`K`DnHfM`AEi(
z<SQ!!K_a%Qs{MsU#N+@g7jsY5)qZXgDaxN{_2eNrAwt8+g$_ju47W8e#tL&LFl#E{
zLaRh3#;#;aDArYK(r6#?-f>XG0rJ#jTU~u3S{(3cYEEo!21Ks4U7pT0?q7X3{%{;e
zzr8wKQ%j=+ZWWb@<rSb0b3Rr+U*TJl_^A0bU*Eek-@?bD>E*LqW-4C@7c!|p+B++m
zZlO0=3^kMTkTQ~@T%#=A6<xZZ5H=-=el9K%5LMT>YHHl*1`GrV{|O0L@jP!u@<dO7
zR^dDlm6-Mp<m#ZShQL*+ODV+YlR`F{L>2#P$-Y8H3sEvd6&Gg$v<+i~4Wfb?rU!@$
zitv6*B>@FDO+DpFp69Jt#YDfA%2*s3elBE58*LIoMKzMCjaY$BOmT)O78zyYWCm7(
ztn3&T6cO4Lzy$tJ9>^d9c#J#j!i^lklM{+aK%+WFsH9Dy5Ie?ub7)$C{`Wxbh?3$G
zFW&+|#igFIa*s?E6$q`CRk(4}l~uTE>s=jdyp2unib|KJh9+-ay@z~blaEy2z_0%D
zN)K<b%%`s2Us~p7rlY#rTUFyNH*Rx&(gaO@a5=V)PeEjGG}PI?7z%;k&Pn#8WGbs>
zQdO0!y4p1{SgVkvs2FWu9en0QdvlAcwawMm=4x+ut?F=fb-6ce^sHO&`L%(MeNx`~
z{%}jHr?JUZ-#|>btG3QnQwzCD;iM{)DywI{OC1h8iad(X!^XjT>B0`JIXy;0BmqW8
zQasvz&<u<M{vhlEreXMovI`!T&Nt;yY(<5ux{4ZN;<>36e{z#wm6`C0Ko};*ba_<F
zc}6oxGHzAInj|y^xJ<J2pc&{y6I7>ZIV5e^@0VT`o+4olW+~8O2e2rSD+-{0I0Jl`
zYa}WVm_dQTltqC^Z6mlXj<i@R&oeg7#h?)uCiF;fLCp~>Fa&iB8skMxnE2Hk+rcyF
zf&2<=QPmJka;S$)`nV7-BC}*4b(!prC0+6mb|a6Jd+?z^$Q@-(L<AQKosZyy@1d9h
zNl@k@K$@YU)eViFRUN+SYR<DuEGq|1Ko64hGJG|)o{|z|le?zYUtH|LHx9QUC=?l2
zT<T>4SEZZ1Mhr`d%Oep<O8+QV&5euTS0q@maAQq{((Q9nA&lDaYRGS-$Kc3FH$jKV
zJT=)4>jn`d(9ziFYHN3`UFYsx?fTXCVscRBh=K61;HAnCr=eR2m<Hk*qkJP`Vse3x
zYE2&9F7}ar&VKZjr?-k6F-^e3NkT@<q&$={!%L00w;dwnWbV-CmeZ2qMePduL8THD
z2%M{H5stAtQkepIjE5<N5@LFen5%}vt14m$OgTJ5KO<}6v|*_Qg28ZzC9}uc1ITaA
zee=8!8>Oj4Lz)=n2S^II;%pqUr;^l}E2_IfL+dGMH6jueXbrVW7Dr+S8RJMiS~g)4
zS_eyfFEuvFq!3g!j28{1z&nbKLxEUBxCopHjg<RhE8&wNj8-<T7qf_)yn>FGDYlY0
z=kej&gyPCg=3G=~=89g5aRlzD4`@QD37U-40K?V@U-2Hp`e1|Q6<ALg@4y7Hg?8cQ
zry}g5QrUtY0EY7t^9#i|;`m4g6k7>N$CWZEjc68<DF3+$KY3l^RAY9E$)MNORi_7n
z)F+m(3v9ww<xF8rgLoP|5VwyEf|R^ZkF}PTQSF3^iiFBa?7IZS6CeUjzeKN7$z=qS
zJpb;{-kp)%Tf?MXTf#fHgm-KX@7NUHzA?OQLwNK00E~stIV-SpQ#4kHs+6X{cfR%5
zmi6JeX<c};NzL_3X}BcQ53$}be@dTd=a^{)@g4-E6T~tKixI@v>1rJK3`Aum+Cl;Y
zA@-4}6^{js!+|na7!!%n6uV=YEVWR#gEf>GbeZHOn9xBOHlNO{D1I}O781HPo9gVJ
zPRmI0CiFs$BT9yn`HFm3oosPOD~21o9FXTqKIS6OJ!j&koNN`V?mJTxiz6&PeSXeW
zJvOm68W+0IyqN<fL)|d(Ol`%H_;7QNUx`t~&w%Gm-_jO|r4}~;)oRl##-=`?n=L4s
zs0lShMw_dcz>F-T6AZ{WVzXm1z)2W85@X7|jEry0eJ6&n4kcGq2w^g&1QGGZG0vYP
z^{{aTM*^Zal)x0kTw9e6+%%bTq|65-2+SltN*dg6a1;Y$OuC&OZNo=b29(NUP-<#+
zb#{uTCw>NtAl}lvB1`^^%g6W~qJ}ng1@w!0rAj+CM6DRIrJ0PBpvgQSrOBUH2l4v}
zSd0^!t9A%ibv5W6{guaTC-6n%AeF9;79^CFCxWB=g1D2x^gqu~B`MsLX8jCGT`><s
zJW|?82{!M<#g`J>10S#@P^MB>3`%CRCPe`iLnTvTq&QN4$o(kL()f`5r!I>*Xi^Ya
z9|eL8>8bF+|3*y|J5GlrZf$eZdb#D9IK+5eK*TH<UOwJZ=eZU|Y5YW<x|s$_`P|X=
zYA4fVMN?KL;~R@ofN7|H3)4f-uc{JT2?W6jMej1&i{dEHs3i=&(uq=tI*#z#fhqEu
zfE9@cetaoD4;v?GjQ#4$bV_(&viKrnk)>2E{yGW~9L2Bi4j6x33`Zi5suG%;T^*fn
zBadd|NM3~09YRVGBzIz(+v7(&?MJmH+c!kbE3;j8*4+_rlr5Que{&T^vDkKw?Gq>p
zMMeMAUqKU{ARh`yV=a_`Pgz+aMk4Y^optp842TRil|B(eP?ruXL#%|&h-<Pme?KCa
zRk2h@=1YCx`milWOIFh2qY5Pp0qUlz9ar*-f`@>}i6b7f<>-rZKtwZ*;wljx(7##7
zEdd^OVo2LUZ~{}_I%~`<7#U6am;whJfh=aOK@CA%L=o_-Y{bnpdKT{r+$f)iiEj}o
z#ibRWrW&-GnRL#7l=kL;6ufg@qV!=PxDiN|l|TtEL?Q-JRh6$$oO=nlyHVsw=x>Id
zVi$PBrVz@(mmZD!Rv66|gccV0adaT^esU?kZbHdeNO!2AZmFd%rKs37&cl_!EYOss
z`yUe=#iWA*>fM1;N85Dz6_JE$2ab$9a<`(_$vmt<oTYY0hH`8Yq)34SY}I8yN``7|
zU2kx7-*@A$2sUS`6f0-2=aCv!OX!(7iTiqo9<XRqrlB}ODhZBo<HzL@cle3KW1=O_
zc6u|Kx}AOuJ7$&>I=3|M#LFDWIHy_X<R5}83em#($^)T98=))gL9XNh!UI91g=m$m
zJklrUK#4!OFD*5^0-MFm_23qe2_OibE7VRCob$+pFcDJ<pa2VbaHJw>0Rh9AZtfH8
z%1*-Ca1)9nd4jlTyTrko?YIeiqM0jJdO6jI3Ok#O+nlun2Gla9csax$o+C<lQ?rk_
z8sI~~s<>G5&@KRr3?h?9Q9S2`9`<m60MHBx%tH)mM`1kX7x;;=f<w}8p^!I{=jA5?
zs%J>fP$TwHYg48Lpam3@N{9DU6Tdy)*ZRnol5of$W8DP97)6nJ*cincbV#0g*pXIn
zBv3NiU1dcA?zqlQx6$k3e($)rF<^;_q*z`hR2*OIaTgAGSH`6V71+`h6<MQ?DP-dL
znRYn~G5O2S?bU9HanyLInEuI6Bqy4HhDs%YQjpajB9AbU0F-J1+*gf`VWRVS*Ak~w
z3^B?|oLpz%6OU?8Xeik{;A&#YoOC!Rudi5q>4z*`DSx)o1O(v>;cDw?Q2_L8J#A?g
zM?7Ys1bh@hP7v`rp&%q=hk$5_?DPvv(q-=&i7X{)+#ojzqBB<@0NjWQR^TwBDmWs@
z7Ig3y_#&>D0txmY`Vqu|BNI}{hmb`0G5A&EB1{h(210PD32~Q7GN1?!_B3E9;d^xr
zOcLS5_LP@<aJXSA;>s3I7=THNGoh%+tAYj#mpNr3TPOrS2|;m0b%rDUSi^B^5Gfb*
zvK}EuhjAiAudAzGQc#!_qp_@nt?TlC^cwDnVJK74Atd^}p%+hYwIm1e^lMyDoaZYL
zPLHla`B9OCp@c|kXcD~+9R2#cj?!jJ4f7R?GJ~u*l(uguP~%-cy|rs*{wP+r*+tEu
z%u%slUKvzk(5ut-=MG(jUQP4$6DpXTP(q_FElb3yPN;@5F&P4*P74P!mb>;dRA<zi
z8TeSrd;n6uEc9+pJg5CriPH%y{fY{v`=LbBQ1bDFb5$JO4<Z#ql%vI399b=KRtLr<
zkzx=5r0SW*#hDTW4q9PiwoM54OkA$sA@rT3>rBZIt;%(tiR<P{fvk_9rIf>}iutko
z2`sMwP<+U;5oxvA>yijzVoJqBm?8Vppq_CsF#`kxsc&S{Dwz*5@<<$X;0R90Afo%>
z=tCQfB4~sL5ZvCJTtb>rh9$TZ2^bE8Bi!;taf{>yR;t%2-Et*?qsF>S)J`}UY5V$O
z`PD&$mNL2j)(iWD>Wqxrv?lUCD~8_ad!KZv7mqsW;GR-EA;bk07bnDU)F?P2H0Z4t
zcKz(Fz7H<<>h-6W`y`pSc=4yE5X2>=$tomSh$Lyx<}$u$Q*-TdLIh=v((5c)nw1`S
zlZQ#~d~3g|&|GcO_S&lgiVuM%CzR-Ij8h^sm@@)UASmbv3gSr>M!ZN-N>|F>l`<J_
zrA&KO6vVExgSwT#zRJ~Nij0=bhZIdP>ieODZjar~m1a6Yq*6>@)N-g8W!it*UA*E<
zw3Pc+kZDWxbtiV5i$4CSJcY1w1T<+^XqnEd_MYuhZ9COK_cP(y0wrV$Q&i|q2pt^V
z$RqsTg@tUug@nS=VHu9-<gChM7ZJ2I3A!-0t&#){%*sS9<i1x|60vNDHAEybKQeKu
zf|PgyM`guJ=o3xR@cj2!GyCoUI@R0H?|W*z`^mBH?|u8gZ?6t1xFBpQsZ^&t99mND
z4UJJrs1ClZA_=cuLnE`XZsLM)JMbsqB6yWw5nJkeR0W9=C<hv*Oq!#g&=I$!E*S?9
zEFx^>Z3aSmNK#7E2ka{p&gb|viE4ljSedpfl1HFpBHo@zRFnkeWBkMeR-@x}B`wuA
zpiGM(rA#LoXnq!6W-m4Rid5$$GbO6~p+v2Os0@ynEh4Y|M#Jd=t*uto){|oGKOWQP
z?I`G<T=n%iAkr#n{aI}2T!;9;yx;7upeqxd59l3xozo$<>*z_v6itX7R%I&8P|{Lm
zi3lBh3oLtKzK^lf#7!MRsBVRcKH_;D#5qkv$<#I?BFSU-kpUw!Ad2ZuLj`&1%9ptE
zN@j-l%+c;}a2|hJYP@iK3((`;SD)UaeXE4W*P(o+I*bJiCDrag4S@>ntK4`S(DCMg
z2;Uda&oMC+JG4b9+*aU$8JSoyftpm?nUtI!e$~$5swLP)(ISNsJ*-e-E{P~0;vBTX
zxjO3<2R;u|XYG6mW{z)GtYjIZtK?ZL@}LS!AvOaQ*}P_a52Zt%vDC#^l%hb>{ZOKM
z*vq)SxoTButfGL2ogktdEz{zN$Fyf?pfl;~+J~%SK+&QC_H~O0=hApq_>%nQNO$g=
z1;28~G#t?*KiNN7M9&@liM%GWbtkJ!W>(YBW4k$79Vuv9u)ypvY}|S@6M2NC!(tZV
zi*R&f8L=5D@Ie?62F9XhV)Fz<tSiZNEjI!GvD5m*r@^W&=}B2B$th#TJz~Wl%b-{f
ztA>pAEi->qQm_Opv!sRPQ7qra;uCbwPW!jVqJS<xw~yY#3}ib3?P2PSiHD~GGZv3M
ztKe~rP;G)PP={Jty<O}4&8@gf1V_YXR9AUW{3HSjmt(#g*CP4`bC)a#V&$N5eo{Vb
z<h_pOU|PzWcbdiuan{I_%vxiqCprMt=1*~@va7Sn+g59aMzOftBw4V`vQwUCcX2#O
zrn_8AGjX&^i)6+;TS6;M;0^4H`8#)MxkQrS`BCXP2m7!TUIdR6#pmc}3nC>;CqOKX
zeQCx?g!kv|>-vc~P*VP&D4=?%{W!gecF?LiQ6LqLZ_h$eRF#tLKjo!!pv0eA0_~;$
z@e*LOVBPRKS6wf!71r%06g6z3$c`>%TSeIh+#p3jp*KMgd$B5-*p`aj9p^9b@C^0g
zmGpEL=F3`p-S1TUbKyd06;B0g8)Z!~8*waJOkjgJ%z->%6?u7HRJ%X`N4KZ0!CzX6
zlYx*eG$OoqUJR&QLi_UY8$fu3B(a@>Y(m2N@ny@{;)A}zIAX&P!e#vcR<#JdvOj~!
zBZv8eURPS2k&(ffM?^*?krdtbx;!(btF7P{Z^zzx>4{zRJX;*JH|JbDyXQMk?f%Z$
z-Ivbox%~X2XOFFCfm?M=N?Dn&rZ$O4zo(}<-+O)kdvEMNce)Lw4re&gfQ^kw#Af72
z6Q7(|{r!sv-+poL@PWoio-Z$&gp)HI!Q<h1dUDgnr}sRzvxW^x7R+}&e{%b)&pr|g
zE~HlUWNvQqME~knp4|QN6O!19VO=L{dWpUFQU8@IQu`il=E=2f`CHeO4(@C1XpGPg
z8JWHnE0S1_%~;bjOEcJ7+_z{ko*$OHvF4X3Vix*&F%@A8^evnLfTKL;=X+}FeHB&I
z&EZ}!TIeic6qiI!&TJ86$=;c{A05s+Y_4^Gaz3DW3gj!$utJH^fwrM=m9r4M5EVEw
z`vs9#2w2qfysa?hP#VSBe~KesQ7Cb>AW~t(>#%EE0;JB`aNPlk%9A0v&EBfIg+8EQ
zk6-rW^!brN2pz!@J1g=G8{U%VCv((0jgp_ZPsZ%6Exn;T!1ERWOi%Z!Y~t$x797#=
z<;&ShR3@|F80?}$wBE{W2+vdB;MaA0@IY`x1QC`IP-1ZeUWH)D2aaeg1VA~6SE00Y
z_%lS}U$#7X&N6@5FDRzY#r<RN4i!e1E?=I^K=2l?urqKVF#qVm&Z{pU7WlBGY8-k@
zHmz;X=M$`G-n+djCfZ`C6rUbCCsDZ7)kziQNk4x5u>BU`z4+`FEF&T`(2<IZJU@K(
zkW<5a{rn?^g{gQo1HoiA{E_2et`5F(b~jrFv3rS@Q&zZ4#w!WQmHd-Sj#U^aobL_+
z832-z;m^%oaOH&qG-s;6>#gVZzyHPnSmRIFS5{UM84}%|k?Dt<(H8h8A7!H<I*@&m
znc!mxSXmrl`wJ7OPxx_dJzGq$ONQXcT1KefR;gC9WE?5bsyCJ_?}r2A@ih}=T1?#!
zC2(X#5=2GF0bzAqEsiV-ECg(Aoj9_ESOhs?NPEE%9&G4=UZon~NTH#v0|@NGt@~b*
z=X|kb*$kh@1VKQCE3jgNXm&6LM_#Ysh(B%T$emPongJSlww2}qU<HEAF1zIAYy}3C
zeME6hu(PO{nL-}9gJE_T5gg&Bt8Ylcw}5N{NBHPaGeSYZ5k5Lx6YN?5?J<biIsWA<
z{D?njiE*TGHa=annDbs^lA1P>e#riH;$hH<P7yJp*A-^6Au!#zY+3S>rM}YQEcPF^
z*okGtI2s=BT@5hd?JHI$@7!3yPekvWo!B_p-#IndIk>MLg91uprug`g7GMJI-gt5Q
z_g~wqKv>tAp&o{@Ue2lzH~1@0Z-4XrBU+!1mS7;q9|)#qF7tE95jUS0-B3}yoKKi~
z4i@HR&>SkTd_}Ts411OBhWeix-z2qV71E`Cn!vb3^A=xu@gM_wd|=%#uM9o5wf+}x
z4e}G4glA?YlhMRLz-kx*(1iG2x|Ag_IAnw=F%QD50Z>A<D=1*%TO#LKyAhg=BMd{u
z5u_z#X^4u>2kCr*-i9Fm6a={v9=_qKr7<!VO@@YrMHuEhOC$jS!I5KMVvBmGFwzQZ
zovl1_$~Bs)iPtR*g%PELh#4HQU#Q9vTETFD9c_+V4rhsBiaY!XKzP99MRKtPJr5v#
z0Eo&g@*Ymv^P|zpW87q`ZPTS9r^py(Pqr_k;ZQzpN0d-K9Yi8p5ya4BX&H-;{7lQn
za8$xxAMi=UkcW*6jH_JshoQ0TvXz;|{#v48nleT3F`9hBnP&DSwjzf8>jF!71}l&H
zbN$X!j~ECTMecjUKf645<%NUirna^<gtc(C4$jF<-L$quakOboQEhovL*+8~Gg7jw
zESdF#ub$gZA?)<nxjJQ4r}y-D<H@5<ZO!vbio`4a+PNJDSwmHosgaN$EK}6J9X0Gw
zmlsXT%JTpEyGOY5)Y!)NF2*O0-yJLrgCiU!xFXYZ!~d7g>;?$Ek2cA-zB>dT;MWT$
zw!L?;Z?dmzU~l`SbB`@r<hy)fKidf|S&Gm})|M__g8IrlpdVJlxG!6lgq6B-WfJ?0
zF_TCfGTzQ`1U-;Ad>>082tLO?!bDZeNL`Cosna2VIV*2>b~|Iuh`UH%hK@hs0R@zf
zFDOtbS?$h>BydDDH4)%MQxh3WZ7m9{Fw)m4N-O*j9Pzrgm+}>c5HKWXVW_pT%}Gp5
z_(MrFH@{1N6<8sLJc<0teU5bDd<y<F@Zp?dk1fz<6iV8B`kXq@c5toOr`0HI$Rj<h
zft3+Nbf8NZgO@073I2f-V%?*DC?_=Pgv?}7j^%{fC)zFAG_LV;TO1()?+)iIPv<e4
zes0)1bbjIZ_C@JJcqI5nMrIOJO8Ll86r}AN${}?FhnR}k`$#QLp|Uc6MVbH7g`NCF
zEYRAuDeJqFJ69)FR*9d1c_q@D&+X>dUtAf4N(=H+1xN1=^gY(FVugQM7M7j&m+#0d
z@UM(^M@G`sq5M#WRtB;DeGZ^OS3LWu&y&#IQNjb@Xz9|FB}*wG6@5D;**mB0jLw1u
zKJ9!?Zy}$)$Zrf@sEcj-aBIkBeP;hLnKgi$q1O>!#gun>rI*kwyeQzvIC;dUsyJf2
zl&+Mh7)`~I{kk3ZhiCo}u|4p<ElNjLyXAfyDMdjfAPCntS3<<KwyKgjaioQ4f%oG`
z;bX6qe18eZ6cRFpgzTV_53KxGxoO|EEq!1{N0XY<cDj8IjsOT_L=+_p2UudJIFgkk
z%vrFsFdl_sal{A$L;8fG>>%nm&iOhAugu6AL!a!EpS?U?>SHu^-a;1=fLtA3Fh6z_
zk=B+g(keDse$KTlj#0Qd>j5&}yQPd69{eG!0D9%@R(@rVpoV%+=W1_jI~(RFlwlu%
zqr!ws7k2UMFW(-3ETfSm#nJxlHEf4PLsC-`(8Q#0gHy0iB~cLz!WrH;-oO8{IPk#{
z74B-0nlRxtKTXb*A#u|ts!ekCgWi#`HY`FrO?UpJC*jo+63OZwGo3_l1D~Q|H>;uo
zK{Eu77zTy_9O>R2b_kR+Q-L|(b=E=iiC>S>v=F|+w=69IWGI1#K<6_!$}l*ZeU6wD
z_;c#)#1S20;bSvS96606^{OFd=w749Ne1AMCz0`(Kgpn>aS9S}<Gx-w5s4P*PyDJ6
z@C*#l{=~05qemn0mK;E4n(xFB4aW^jSS(vW5E_R7!ZVBy8GjM$D*+LUXGwU)am>Ok
z*)0v@NVmnqScaowO2dk&IVRgY&Oe&xrCp+Ja*C5Ve;gbseL{o=ERgH)%4O+p^i|Pj
zabWsBcrzwtP7HOYrE>O`3{z8O_{p(N>FIK)3f@SRrETlVC<^1HIDZlQG_rLS-Yswe
zj>^isFFvu+{5sUp>EF3y@ef|#_k&mWZSKx$XkZU6-^FLQNd>+)gpS%$pMlSi%Iw-$
zmXnR`kNuS>ST<2fz_YG0*90jIR+O#)N9fyBLl2-qucL0`hu8A(udWO&n8&us(rQlb
zqkB1)9myryf`JkTucLu;b{GQz*0hT#4P6m)lCDEv<<m-g*yD;L7#GX9h$O*lN=N|n
z4(xbFES7H4MbHTLEYwA{*@F(1fX<N)Hz4A>O6r_nhL&OoBSt6ChRe_ubi#c@OQPYB
zkw1-k!=KK?utH9TqJ$vLpThH%kZ1)7o&b($1v7>kt3%!J<m2&19--Zlhf9#Cu*DH$
zsyNb)qD=db-p~%Q2-1ubM>stBu9jdMPD3CkNL?$;)$f-EbCWC0r<t57rZ>&;d~W$O
ziC<|E1{a!-cqGv1^t@xP)JpE8-~*SRs4c#9;{X&kqHTu>3yv1!-}d2p)u@K*8o!KS
zIgvuRVbRj%P@%#?KkjZ)D8vrfc<sc+%?RSE%FIkc0i!KkQF7+b=Zq3E$sR9b?VmT_
zkl*Z82C#Z?M6IY>Mn(!`c6LIhTvZml|Hj~VUp(|9IaO8&`;GJa(ih+%$K5dx90?ZQ
z9VFK1y;pmP(i!V*&H?O!#M;`F{{5v|0^2hD=KCVxC}HcCjFu*UO^s*ha7-us;H~~&
zA<m2wqoyJ=5=q0^2n~pRWW;6Pqpb_)dj&^Vhf4CZd|rqlg|k<5!~b8uGi)TR)a}ai
z2N{}0i<4<DH0JZT7B285Cwnl9pkWRUlS~pDkoxHsuIP0s$;>w;;|rqSaM93#P!|+}
zB7~GNQ_KK|AVyzxt)F%J2qqXBx+ptvBBvN5LKfLf5>=45*#DV*#o0U@m|Jqv;nsuT
zW%OeQp~`uh(1Ub)vgDx|67(ZRfj~)!%@VU_lrkAm1s82Jel7U9P!y9dSj2|QfglO1
zHnE*D7oVBMN^Q2>5fI^x)LnWYHWi@YP9Xp(enlKv^GZu#!{HRM@xk~^3GfFv7)>K-
ztF=+onffD@_><A0)wGVQ&#%4(I7kdE9@EmadHBjW`byBmlL{hzhTbD_SRV6DDvoIj
zRWkC3*;UM2!4VFBoD8VtW#yPfGRs*|AofvFF|Ik*7U2L-BA_TYH;GM;5#=cPOP40;
z(ev;DaD+dE50UYD8C-l*-k-b{+l<jbK<%2r>}8913?815nMyr#a^|5m2^q)HWFN-o
zuq*@RNxt>y)@mhneT-**_Vysoy0GYV;!L>s%$DDRAXCn7zdw9tyt%6@ZO!Vmx;jr=
zTiR>lh%mp3+!>zeZ71dj0;Ut-lj5&?ci@K?dtox+oJG1KuPB^}X_lRx##v53e%<)J
z4Ns6yUmlDEmO{Ph3;p;Iw1>IUaQ<WzkVMOtr*bsmd}9_ZUYuka3+n(}E(RhaBMCOH
zqX5eVN5~`WqvB%b9b~ymeUqPAJOnQ8J4{sUBXkCKr(_u^&r|IT2~jpUTI6#(lsf32
zk8*{yP~@N)rHa&4^ccSA72w2i1Rvu8()~Dscob!13?UhJu{rGy`bQWs9ciSJ=ykLO
z9*anV<_Tp9g*>w9fzj(wc;HlYGL6Ncn1dtjItyX=18I&hnu8;WBPFQ7oMA^zZ0Doh
z35yWfA<7#Wm;iUQ{vx50K!>mknorXNO+En&4?vCJh&&*I|Hz*PN2zJ}^kUEGhmc1M
z>l_?GNNoFwLz`W>a8y=T``A_*93hNEuM0^OD=~EpBD!BBf`3WQfY7K6V<{(5Aaz4&
zfzv`ER0$Rh2VR)&_xn9tyQ-!J){Xb9ne6Wx?^!#tzq5CDTUv^r$3W2X6{)}t)=dqM
z53c{&ThO^2!-sP9vo{CN9N9QOP5cb_XGmowOCKLyKiSv$#Q3@=O&Z$YfKo?@9r1O=
zMG56)2?rj@yLe&K>o0CN_*hO;lY8~*)YeviTYJi?j`{4$(z~zp!s+hwr@Om4a<WX!
zp4b{h_{>i@ysKfVe{F5`N}OpKOOhu0*PJ-AZpoq~IxQzRZCO_Gt_{_r2RoVM8a=dn
z|IWtrh0<`^yJShylBFokqKncfxEX&kI_RqiAQDoEt`MmNpceZxGE>Z?IrPRF6M+(l
zusAY)Z+{>_a2*p6;0W>LV#jaRwlD-NRKcfb*gHs+xoKv=okvAmih@X#7$7Hvj`CsE
zVIU!)BBOQlyn=}56J2xV5nMf4%mG0dS6-pL@O+~?iDH8{m04z>0ggZrJQfJZ9DSDT
zg~c{Ls?=E=@z|dQN2U<;H>rcg5tSr?Ad*7E=Ix)BSI}yjqfhcHW)kd0@uGj)pUipL
zUKLez7ae7eZI!PhRpAMShtO&lQ>(<ruqcVmi`b;DT!fLZK@tOsUWYJZ5Yg+RQ5?Cl
zf<whCt}5gawlgF|4;!UUWGJ8Z`7oNKJ^V=>5UC6VnvV=L6*c#LUKgkGq5HuhxDTU7
zK|+LOXXDmK3QIi^c61tcL~d>xK{e6*1;k(!7S0cal2&lo7CTEAVMK5pt~mmM>gzpQ
zx6R-E$o$o-JuHk}-#xFj)!W*d)U|FtOMM9)Y-pU{*t7tGq(!(^uu7m|LJK01d6XXt
z&(lDQ?3}dRKpGHco&pfjOpXQ7DxsTYWu*WUdJ@|(Gb<GVL=Qk+DXCr>1#nQd=?zY{
zg@Ezq@vx|KX&jI4%UZ^}$P_<H(aP*(!t$LsqE;AvI3e-&pcsV0iP)#IPd*!K$Ph4C
z%-#}(f-GR_K@QD<n5hXBm_t#pQ%ej&QJACgfBcYSbbcKOwVUEU&ioHIP(_YGWHcc>
z22pXuRqZ1LBFha7H%QFL5_!a27zd$ZA1RK25>|uCqdymp9w^bMq^6k${DB;gfg{+9
z{T=#53<-5U=pQ{Pe8w;ntS7of*(T(nJcJQM(<UfI;!*<4?BijOX$#^R6h~Zbj4=Ut
zXn;^1JO>#KBU-xD4@uY&g!jVe1St=43Q<MpeK1DFQvB{ki{Z&q2*xtJ9m8S%JdSCm
zr88+BQ!Uxa1Ql=!5|ocv%+F6LDo)BrRz?yEj4&buh{dqAwFzt1dbaOO>ss$=ZAoD7
zqt4FcwswC@tDi6-9N+{#)z+k7xzjFn<|C4Dw&dg{=j0@>SV<TUq=Jwl=EqM)6yP-2
z2nsFYRiLd`GRl#twn}+iD+?F+QS%Hx5yO@YP2&m!fgk}9-ftepmR!8px5T)<F*8+-
z5kEsb1UC>&EG%SiG#5C6S47!t&72hr@L7<;lOjW*ScxY=Igy&!QP56)5IM}cr#jE9
zTlf8;lmiCIaD{$IusA+J6OgJYoLO%Uf1%S%bfwyQ1fGd+iikm+kSIK$9(<{j!6}cN
zb+#XeCbdJHs@)vD?rY+RZ_y&>KU(zgf7+{DNr1@W$jT#X%ecTaWF9t~HRdrKF?<Ro
ziz9q5>i1S0naNyX(b^kYGU(86QBSR^!bhvY9Uill;YE_)o0t?oPtczX4T}p1F~pTh
zGE)yRljvUjgwz(Yhn#R;fd$!cQqGu=I68z;O-({WLqg|j_r^`0b?ZE>Z3#_H2`ofv
zXke2%*-Z$Ug&D;wfdKw|!4XB#D2ipIKoehKxaDfR`YLwg6-Z1nRnm${CF4#f#T1@B
zaqcC>jbG_-%n*q}(auNi`n|%+AbXmI<t45j6E7Vf1*sDL1jP~i5-W~Sut_RFv7r=4
zItq{_HL*irJOANS!LK?xU;3Cnz{8rfd~J@h5kkb3mgqObT?GYT2Wmk_)qSqGqqU_c
z|13CyheIc(8__l;_5gP%HKfClo9cTsZ4~Uo0m#cwJ~5Zbm_Nl2$*)$MMd%=;^kJSv
zLg{0w_nMy=aq-pQ1VA*?=de(mMX+32XXr<8WQa4dtQ`BuhjNZ(1e7p%B}g@ZCL<>B
zij@*tsb^U5I<Y-O?lHxKlt(b($3QDnq|hiQg1D(kN8D>@i9AWEQLjRx4qAnbNpl7W
zrxuB+Nvfxo5jaBDfRwsAHaSUH+vVP})zjVWX<r411WJvK=z9cy%l2G6%zC9zNM46U
zK%5$B13VQ?fQUr5=y$aO3MdugN(m5;CaJkmm9+`lD25oVfhKEvB_IEjpEOYp#qup7
zJj2bv2>ndcz)?}53mk>nr_L<?5^fgX=)mHL*D1t_Bis4Vz@PD-#gPnaoF{85Xf^$y
zJ!5f1PlBL-J{;j5gbPst#G(du!>_2A!UUy=49y1=;&U*-0cPmf{A8LS&K7`U)H%6B
zq6DZ{RXbw|dMJTsxXD|*s|1XZJ8wQVi+p<V67&u1R+&tv$rwi*IfOe7d4$uuu{jwN
z$xtcFD8%7_21TE6EO;m^e(&4>mNnjn6#NX}2)`4vAq2pn!z{$uG3?j&w)VW#!4Q&m
ze(V|t5tLvPBcci3r8KOR24NcwK`4zx_0%##z941L=l~IT0XXZ{ySHukZr<$eSe?+;
zme2~6431FwR3u?cA(BD{N)RojDU%0Ee1Z<)%IB1eDy;Mholqr`<*Q0UT($lHN}3jr
z=TuD5aLq99Y*7aJX#*))n}+ky_`TyeDl#~V2#!z;kVkelTp>^OzOgu>!|6b!B9%wb
zn*s!JgY19^?`I?2xA;m;^XZ?MMMxRo#-F(6?l+Nu5@v6_eEdiRl;X-09N`~8uV&!`
znvAdxbAFBLbu7}UZ)DvB^EE=NY-Wf^V)Gwx#6pAo{AA`~iTP)}z{-^=*fN-z#F$Ym
znm<#eWGsRdzfJ`4D{WW44dIbd@)H>pH`$cBER89dQAv`~KZTrxV+UkIDqRMPFhbTe
z)Qd0zIN)f<PQlTdH3=OZ3GM9yE|Q8QpoB;QN4yRaRbNt(q-X*}nk<wQP+Y+g_2EkO
zY_h;-a1~J6KpAM-Yp_GBwe2>;ue_LM^i@6tG_-ZdN0mpcr9vLzulp)E(qgs4b;R$d
zqOWrY61B;WFCQh*5L!)J=#W2I9#OdcM-S80I^y=KW1)PE4>@oolUYEC;B6|#lq*P4
z0b~o*jLIWsCHRvEaBK4<?jUdkQuvb$LPzyF`!2Hv{6lQvhBf>UFRM>yz4?{|@XLxM
z@lsM%TyS`S<Oqyx4sP%^wIr3qal{~E<T4M7QpcfM1SGRmJP>5T4neAZoUU2Rle3n|
zEF{6|c%|^}Vs1k-w9Z~di;E+OjP$$_KuUO4`p`crfGoLEH|5n3Hk5`TgYpTE;Lj?I
zRHFk#U<CaQ5P_PFo87zjcz0~~uJ2A*vpQkbD!EAlWju!ZhcSf|1B0lA%Id}R$dd9&
zpozriNPL$%Xoi~TXeyMrs%%p6MCG+1+9>4`w3MX8M#ir^#F~C`grWdbKVe%3j+lOx
zHHqLTFOimNCAqI!DD~kL#?H#4Z!C`Rb*OQKWdQ^*UbrgcEfzF`oKo!Yr+E^*VOx2)
z$sK%mX=y%uaS0AYa~}jHr^s|0&LXZL4kA~1#1JoDOw6P#gi##fU166Jkivoy!u4BP
zld+FL5HlC~`9O?arjyM2GPc#iUF->mSg^y?E$fDuAdodjf}nJ%22Nc7C4qBBnNbn~
zP)bokOL5U-;iGiORTFeYQleD?gKU&nt40S=nYxKsL8C*yfFt8iNa*NHSiL%7%U1WE
zN4z_CdN*!L=;}&XyH;+hVB#^fJ3JDsO9D!2C{fysFU9Ps0*+Kd@m-Py6!jq~n&>)B
zRGSJbt5mkk6*Q@+)rJeK;;h@cP_(_2mTu&c#SxVWg%eA_5&N7N9EoCJqE!_~ROw%E
zM8_KHN;Gj+;>-a)XlO_o5lP0kpa`;8#1L4}KS2Z-Az4L^JGfZw!<wN?Y$Y+QB;G@G
zEk2=62ELB3gZ0j4DqKc{ae;E6QUVwV*RQN%S9~|r6~y~m#PQ|$mYH1=7a4F{na!Lm
zvWz9+gtZXQAYx8zF7e_rCxT#2AR<~3WT{Ar3hGiCgL^xr4@3w}LXBLZE2^ZLl@$<B
zHIhhlp5<cKkWkEY!bp8|s?mWLfU|vv`>}oA-MhUTHz#b^kg$HeBz{6L@fZ$0aX6U$
zPk<8I9Z7jUZR8Uq&Cnrymqh1iP38c~i75*u&|zhhwwh}UR?0?<6Ow*NHS(7xQ_hlf
z`2^oW=)`bj4s<hHWE%y0HjeO1@FL%$9LlG+Rr;d_FxHItpZ6aH+C=#zKEy|Llyz8X
zwT`2<=#TO<I4i7VK%Y31@-Agod?+bdII~uOn%Gv`N`7hc!J0LfzVu<O9#?HRpQE?=
zIz2DrXyg$T%Lqa$(2wA#(8YF7?9u>^6iOQP4QVM|@h}afuh8wKMHmIDt{5WG)=@qg
zuA2CkGw~LmrcZ3Q({&0TuBx<H83cUzu0gR780HKhg7Rf12w}vokBuUXz({9j!n$<=
zoSnPe2M&7n?)7Zjp0H_C3`*cjp@g9Xl<-TS-8rR_>Q4Fzz0x6kS}UM{;!5*XNU6%F
zR~=>gM7qVai#C#IwbGbo)CRP7lq%><8mk~u97!9IM{<}BGq9r9&5=hu%y;>gVwO&3
zOutb$BHkNWpu~n=XJ+kV>YUO%&_E<1JFLTjKan^ps(6MBx||7-5*ehh0$Du9eFHI_
zcone)e9!<DtqNO<BN0hU@U}4}gjvM?1G26h$l$5turP_QixN%8{?Zsn60?e4hpPcI
zig;s&eu2?sh;d@2DmcRRjW9}I$ZWohDKp)OCtMjyGpu;kIZa552|K1!2@Qn|EPRxf
z6gx_#;98*#f=G}S30w<^%yA4lVT8Sdh{5);AlkAe;nBVBo?h>P1KwS`6Si$j;LgU4
zlDfM^$FqhKQi(zkYCuwLB`B6psNP71FRFClN*xqd&@f3Q6ji0pB<c@gE1GB&0O6`c
zu7FZZfu@;E@{Igtg$_jlB47)IbBtccX-5^6UxFh(M1kKx95H!~-<vrjC=I_iP{KY!
zX9FN4{YNGl!#y4vrye;%Yk&zqsZwWgB$$#2G{FvzZV)G-DJXu%iATu`77_pvn+LS=
z2oT{SV0AgO%*-`s=YSOP$PtdhmLQFdGJjNA<p)YEjIFFp4hH0~YzQeg;34E2%7JFs
z3?yd-P6od^4VX(>v4Y@jv`6YsnQ3_Ql#19nBot1?NzS<QVs>^?D2&gX<<&xdl%`iD
zQLf7T5d;u03Bu;<5H@s<B*JSA<zp6M=^%{oEg+0=&EZwpyg6a()`Z9QxqJJ(hYx#q
z?@8FTD`CeDxrtx`N=PdZ$16Icq?5CtNpXbRL4_S(A;T9{5Li*ApjJR>CAn&~6;skJ
zCV?Y`lA?*L&Cn+*iL^Ip`(l+xsMe;*G*;zNd8I2VM?=n%M|2Bc<Smtb-%uRMViPD0
z5Xr6!$Rol<kUpS*WdE7Sb}@oTiX)K1V}wY7AbfGUM1torr({OSfQ~>lq!RuIUg1T9
zHF4AFQdy@wg67#AfRSaa84-fLnHw@NNo;IRYHCix+fY$K)UnJ1R#YTGNWzol(0NZ$
zQ3~@-Dot1>FEh)=--`o~rQf(6REOac+1V^Nz}XJ7C3-Ct>_B6@2=@+#lUdCT?eTSZ
zJJd)X3Q;A>A_z(*LDEXzxCQVns6M8?1%!)&sC$Ee1?jVUcf#Qw_rRdHuh0AFV+lZM
z&mOr6pb$*p2n7!)sZ;`qD0ocH0?fi9L6iE!?F5tgv`{kDpcAwoR6HR&RO?g1)+Q)V
zpn)XqBChlRkkO=Q(mX#cV81f-YIQ|s81>c6FXN^|9x09l(GEX@e(oENBj#aIgwX2%
z5yHqVdY7OH5RvpBSkUNh+yd%h07N9j3J)l_z?7no`(~!q=y=51CCi_p3L4+Idd1Q1
zNKPCf8c^yKM=TE^-g^c|O-Z%2zPbh$Ws5xG?68W;7>)|^eFW{3SVIQ^;A&u-j?4_!
z)Ud-FLC8r<miT}Y(P%UiG~tEF&1H^>-3C&YuVAh8JQL?H0w@wm&My!gS*{LE0%R3H
zTt&Uf5%@sEBoKs8KqV30HiS{kEb0(k;6?yJAcX{Kdi&fXBi_M5@1es9`}QY1`e+PF
z2qpv;iC2(c0MJe<flXELu$Tl>#w!l2_#z%N<P;K0p=2c#)k8c{Rf~O<P0Ac-qoN7c
z0kZ-!3M=w}Nb~%}GdwR6&G>mJP}Nrs{!kooR6$rJqXs&f*xG-QM^Kj<M;H+hwo<r)
z$l^%<jDgDhXMfV0&OZfo0x`i6|C~ROr+mFh#)%{JE&>t|Nen2l?tvhr9+O8+P02Mi
zzDij=!Jco#+Iba65H{X#!lc0wn|Q+y(>Y%ziyenN_?<HGelG(@B9fSv3P(~YAJs9M
zpO%x8low6S%<>kO%r|Rk6CzQ6QE@8Hb_h?25c&Z`TvdMqJ|yTC_#hx4X2cM5PSW@v
z%p!0E5J1F+?wBOnvnLVA95~<}9P*5f`$k87z5R)Y4ka8sn6Q68fJy{nK*@L>61%%y
zYt|&9;I*_QHaENLI2N<kQ&q)Q4}erQlPoW1Z%O$y31Vh?nz#<dlmg0%C+bYi;R7^B
zWh->9XtGdJWzUHzdY)hDM!}Jh#gstg56k4G;StmTIgby$E^L?y_|*^5V|?WsE|0Js
zz7$77`d|IueG%aIzp8+8;t0zWy&6)-&%lTfT!(5WdR;EVC&wsP)eyQM`#_SAN&#~s
z7>mdv5iA`7fmr1&h5-9MsTIKH{25uYBcepnr=bBd--HxPV#S}xyIj`MB(ZZT1cpu+
zEnxadb_lmJNQnf>Bm;tA{=kO>d{jDsAjA;59HdUrX;V|;>ea5UE*Gu?)Vb~3!H8?$
zzQh9uT)n;S;Um7uDgVTTe|W^**XQc#N$BlOJbc)7;6UQOeePYmT-&$1H*9dPU+=<$
z*V>A?1daqsEcXLVwY6--3XbRsR(7))5ex0H6Im22=dc59&_oRpQV=}-qY_G;610d!
z(`YHwem|Okk0J;V(T6IGgr69t4(Z17UbMJqgbK)U&um}Ghl0jZvw&3`(f@SyH`6})
z6LFL{3mo9$5B}4i;t%MP7DqViX8d(>ZiQe091$19&@&Gkko{DJ4Hgz8s!#}X91n45
zMyX&N!J6_z2tb&vv34O0RS{KVp-h2Td?pBLQ7#R&r~ra{Yg$QULfnA>LFyMFQD_w@
zfO2I-12QO)laV3vrX~=?K@#rvb_wU+u)&3rwrv|A^5C5VM28L~4h*=*kNHlWPCaoV
zWpvDY<cN1@$lKrV?&)y@v4h4R{>US~?b|&B4sG1%>+WV@g}1HEPsxpqELrlhpF@4U
z8#J+`k+YvFD>-_@!+x#oC&|tgY$=JZYlM_+zRkW^rsfjU3zTdZ87@Ju${GjQ6rC)<
zF-Ik;7}9PBZrUw$EWwT0@iRtYVij^Qq6`E$k|8kVGkpe5{{=@_<;Gtp&SA_V5*inD
zZb+TH003i&C?HfdoNrvYiA_X?s~SGI@-Tl$Jj^qgQK)wOMAEreqP}@vjU!W_SXBfw
z=*kxaB0d2;0H|cR?4WbDxkk#cEkGzN=hq{T2>H&FoxM46-b<tq-fy!Ff}4f0CN#*G
zA;)X7PZwT3mLRdW63cm5IwTt#vJW;mqFCj(_{j?kQ}73><`#~yom5ImX$qnZPkUu$
z3cCvPEsPP>;($+aF;Ow%Iqd9ATeBvmp~2J8;O*{C-M)Rns#V^O4sTbNZ|~lPJ-rL}
z?D6j3pENSEU}Pk9;@F~*qiN&gsb`;Fa{m0Hvu78cJhkxn@x{+RyYiW5a!;PjnwnaE
z>eR~9j|V3va{K!;`v+I{_pj*bS@y`Ii@Um#)~reD>Pp$Qd(qZy3)|ZGGi~S2CGD%y
z8XNsxT?;xo7OY*nprs`h@x&7Kw)Xk;^(j=9g@JW-DOFV|#j<mz+H|-yiHZkSY@X@Q
z&rb^E`VcoPA`S-qIk~bhAI8OD9634Ij|5z?qTd~g$m9YcSZI&s<;**Hnp=_^>b#00
zpsIya>_c#*Q%Fite~{DuNk1rw>Xq_Is5gd&MZeP74fR7>f&0%o4~qeA=8r&1f}d@=
z)0q8_IT-{FNfPP<OvH6yV&{Mc7!j|6EQ6KxdU)#e3W7)k6ag8+?SLN51TXXFi=&%7
z0p65Dfizh*u}PIx=S=hvl0;~n*`btZ1P_dnqs<s@b^r(j6G2dWM@m@*V=6jKO-&Lw
zDlPRz*ukd6&$>A_+=%9*tr5b?^5-NrWo0ow%ilsFoC*GDekxnd!-O@#Y#H~e>iGo)
z5R9<vn%a3KWl0cTLqi&DwxuPlwS68SV)-Zb2+|M)p~cnJdAIFYylPeQmMsf6Y*@gW
z*0pPsA9-}qrcJ5c-Trm!y!-Yo93EcL*SB<JB=hkzfs?1RAAe%S$&<^@oLTnjt95U`
z-FWqC`-Nvq&OKFh;px)zXG_nXE_&i*;Zvtd&OcRodaC5uNdA*2E1x`FGdWiN)Kjff
z$LqFlU$%E|&XJM){rhv)ty{cyZQ9nYOFCE2Z*ET7vSrDJ4GYP)w53*7`Z`w6->@mY
zzMh`(tm>FoSD#v2m(tvviXuvjYU|S~t5T3nD9Hr{Nfj0IfC+*rI|o;cCoeA<G{IYn
ziqn{GAkQA-z^$Y-IlzXN<*ZL+qQOsMk0Uyvz#MpOafJ2c#1TrhQ?L8x;0SqS?IWXN
z&5}n#{l-@SKtKeP&mDZ=DvW><2ok@y+1UVRAIKu<E9O-ogFi5~cRvxTl)$7C3GX-I
zsb=1a64(}i03KK(8+5qwyP|mH=K~51qQsgye`|X(R2>S73BbPD*abyJC^r63h-pFg
zJV}b?v*kN9lMFjmxr1zCf89_xIhvn>L8Kr;{b10ss;a8zRj`X`gxTJN=9c*Yv%1>f
z-aa2gqq!xuqjO%{s+6vE3$O?{;+ez=5lv0ZqAuCAX~B*ii#BYKwc&gAWDXw*jEsi%
z?p;1IQg!TD<<wa5$z#Q*juo9bS$yuv@~6*~0G4OYl)QMZ{N?8>zICDOna2yxo-BBB
zD*y3gd8fytr^fP5jpaXata$23^w?1J^my^<@zSZ0l9S^VlSj)>PE=1GtvGcIWK|CK
zl=b#jZQPi(VMAtndva@g8c^!)UeM6sZ)iwrZBN;_aWS)OsC*qA^N>x=t@G;Z)4&lu
z#?hbQupAN!(_s6u@`^NNCTM!>^jKJwV%BhZ@U%oC{$RkLUqGh`j?f3n4USM3*(`_y
z-KuI>u_CsZXuL+)soqG(GHM9@|KH#U0cZcwC~HEB?O>8x3K$MLalmSNorgspvHQIQ
zV8`W=&J$^A1T!FpKofrg4e~}wlaO!SaSLb|9O38|93i%tRN_gi%aLb(7BHI0S<wtx
z9K?>_MB?FcXS)M%gb$6)8IUHNrk9uJV-+xA#>^jebf(l9KZ6V?Ub}pZ0_Z_D-{9;C
zV!v6bl(j4|T9CrxZhYW)-VjgO*}iC0c0nOeG6sU;2-9X>MMW|&gv{7@zp*K$sX1A#
z_|<C`puepGN^L2SWpy<RSH0LK7%aQ@EZMR(ee>p}8#gZ5w=ehPWX<Gg`4cB=j*pd%
z4ip_5DLQ_%Xlf*SViZIa0F$%Fi_c6JoIO$W?Bm7HoGN(wWWkwZkuzhFQzPM%!{L)h
z!Y778Cyz!>kLFJfgeC?<Cr0w82BXJ^3r`*`o#-!|7%ZF^Dmgw<IyO)|+*3SosCeLT
z$zV@;Z*SeUZP@^7$Ihi2H!W&zO<v!<aO?KWrY3(yg?shd^wq29AwIC4@I{aso7kQx
z70L%qxH_w9(on`!r)7hSf&%)%hsp<h@O&1Rpd2P6tfTopwm7S;OD!lwX33J|_Eq!}
zTq};FkSL8aI5K{oZ!C`34#LVKG&%%?>R?C{uw!F^6iv=6Dw&ENMGZ0DAccfR#}%-E
z6!}RubrEDa|53Oqv`9b_6~JGI2VUI*2o(5RNM?mx=yes9o~9OmNs$=QoGDgUmqd&Z
z8au2N6<xhj>TMvDh>0gf4JDAsa|J;po>Agq^wE53YEzil#eA0Iu}Uy2@Gz4+s7Xkl
z`g+WH_MpR!fXVM;ho7};7w<oi+tU*o87dn%R5(6Vdg@r^_)y^qXnvqze4t=rFgi6%
zikuvdoF0juIuZd&kB>&qjORT$8GULp@5y6%XO4!?jD}8)gpMBxoEQ$CJ`y~6gg+z4
z2ZNIX<Reo@B9nu8Cr6@_1JR>Bkz@V&Q$s~#z0u(V(ZPcSg9i!*4i*mgmYtZW86B=T
ze!O-6{!n*!#<p#Xckaq)YfG-H^Q~I7pu2lfeZ8!FM2I81YipCpBbyLRD0nrssSrO4
zQVI)Y_N}xuIUK<(5(MSuxC;bCNd<*|KorS?ji3p5YHBIX-O-uc+TugYr6?6iNOQ#z
z0uG7K5v3MKjHwPTIy_^o%88Q(zGj{RZK8Z7r$3{8M1l6-SCL15n!k=Fh;PA&CqAb}
z6Ib$p2#D$GB>Cx&#1Ufwjxv_wos*Ntkw;AbRo7soh;c;hHwVRH^WvdWf10|a>~x7j
z2JA4hDu5J6Y6__zn-`%d<XTlVlqP;`<4oolbVLsh1e{|iOL9a}bF+W_`i0mgTemLj
zJ6JS$xM+O1bn0l?(cXfQo+$7^8Jif$8|w{^_JyYgBNP4MWBsA2fuIPQk<jUp;K`%G
zGvlGNQxVeBQ=zAi1<p+dpPdR`I1xNQ6?pD=@B-J9!E;lAr^W(LO@tmF4W2$47N89W
zC;NgEy&(!5>y3;Z&Ko`$IdU+1<Y0lMp5lq&3X<r12TM0?TE1h)a>P(uTWWK2GOFF0
zwF`g`Yypc26Axa2Ll62#D&eAm{$W9pu!rT4EYe3jkvM%IFN!k<Z-XpX$>)rTB4j;&
z2Jr{hRC^Idwe_r6K?jg>=*HZ*KQM+Pv-6(XNB<wi5lB?ve@z@&?xA3}kbFo6;PCGu
z4>*6)2PvEk-?H*Z9W2NramJc$Loj3*TyRuY>Z+=CvG^rQkc^qf0Z_^hjkSwaB~OAB
z6*nq+c%7tB;sJHiLOklTg`yw^5JX}kl~5ecLq~bT3r9kulYOzeu;nubMWHGhJXAPz
zxbSF?z~|`U=+Q%wk)H6_;qZ8Gc)Tx!D47}zo*oH3F&2DcOptPZGVt8#z_*?Zyz)%&
zJLf{LKOg$u%i*i9hktS@{OhaXfBRne-@G6G%O6F!{trJ3|GN(&fB9bcFMb;S>D!?n
zy%v7wV))eyq3=8seDR6kx#OX;6N1O%1EI;jumMzLcz<O0K;H17f}w-?LsBu(_Xc{(
zwr*XyapUsVRy+*JumWTgMjw81cF6-!2quLRZKnfOl+!IF#SvFJN*NB^iKN{X>#Gu^
zv%9V#h9gP{#aHw3N=AIUu$VlGPf9YrmZF?w@b&XbpL&Isl$^f4JbECGtjEt9M`Y&M
zM{HIG4f8r0og5Zsjs~N88s}p)J#o9KeS}#AYUl)hMO)K6e!O{RY5Dz~gKCF^&Uo-p
z7iE7)HJ4~Lwh{rcl+V7P?9w3HO3x=k8;`4Z$ztY7IRK8cT2L(jk-M!u3D<YAOgoC~
zU>XJQH&Egb1RQrIB|ba`kU@Svp+0_ds-5_>2?)nh#z_TvSV_cN6_wsr_;yQj*LwU~
zu2pUR^&94G+%RwLTKKtt*REyz_65eq8j(JviQ$sT;o_r*^N$|RJ2seqtUrng13i!T
z1dk7g&Wwl8od|vV$<QlLhu-;i=m)Qd-+wdwi+95R{s)o2{(0Vi{7v+K`HQ^&{ohAF
z{7(hbe_wd>qrw}%FSzkh>CKOur$1@E`Elosk2I~m`SGgjzi+$tVdJ&m6@K~;g}?jX
z3jXu|6#WnXI{MeYivHyX(O<tCednd{3ui*7#)HQOLlgbMiT=oVU*33M^vI#;Xiwqf
zP|4^}`SJ0Z;r{Z?o0lIt6xy&M9YEnB$J|@JHVp|?RV8z{IL1k!0Db~YM5dTXIZ&g<
z4hMXYk?sn}1IA4uf{a6!Woo#=t@21pV3CyCN6Up@q1UklNpWPAod0)mga<$^1@#hq
z6~FhNj3fNs*d|C}g1rfiRuc&g4aXYMq#9oeK!B2js+x_6fe+9?sZ%i|D0Ap|7EOS~
zEPWNDi9EPVlTG2+b(s?!BwCfteE16653;cjrz@JxrDgsCdBn~Pg@sAXUxdPmxLZ3`
zr&LzBQSA^Scz1CKu&fW?8oC)c0!{K{NR)q6!LsrcbQQ3J3!=VZ9-4^~jFJRA8FK1e
zow{ljVdO|3f)IS|tGu|c4<5|kv?=T8VA)V_$?1vevB8p&!}(*q1ye%>V|{s}hY$y$
zlY^1t!{IYWL+EC&o(uixjp$$fJo?}NWB$kgSN_L;SMbT-7hn6Z`r3!hH$G~e{$&01
zr(17b+jINc{<}B(?%o`_JALHN&9S>TC+<!kyL)r$&W)+tH;$Wh;?B*Jx2_+%edE}z
z>*F^+9i6^*Wct&Ao1YxK{?YbNf4A=1hqb@|KlA_gFQUKtVczBE!_Q2GP7Mc-^#zah
z=S}qG9XSv_Hc&LyUrZYADH`rA9UrOc?Tu{Mu#`QJckaYjpSp3=;?B-g&Z{LcAE$yz
z)iX3S`bPzm^U8ga3M1*XGQm-OgPRB?{sc!6quK#Lkw+%ToCyo!Nzm*5xp4%^ITO@H
zf>F<rNB@uFNY>rRRBVcDpa+y>C8^>_WRS#ZivXh9#!W4G9CRjfTVZ5zGdDxiz!AVP
zbGYJdz(FTCS|~VTE(vFy**aKo#QqEf1#ylrID)f*qXNN^i`jXYYUdh!0<J<6rP<h|
zIFiu>N0n7c_@J0bG8<5*gd>6`5M-DtMiwq#AqF1C6e4N-C#DdysDusZTA?l57WVY4
z96M4nc(`B)><ku89Vs5`6&Zx+nHoeAVff${2%J9=e(l-tyBEWM^|Q#w|E1vC@5*m}
zvgyW0dvAWyd-Iba1A*~d*C#;7-J2)x+&q0}`pJ8@&V6?0xzF!B|Jj}A@7;d!?yVO-
zyYn*X-Yt`EfBW9;m+#$v>F)GPcW=FXXZpq4H%S*X-MaC_^tBVy*N$EPc;MQHkACtG
zEg$~Z{QvQ{k@w#UUwkg~^zq2lP-yIM@F*H)Ulg5l=wNjCFg}p7Q<JshBbD2>Wj(ep
zV_o;cjT;xPT9sk~_LvM}UTg+R)?;8ngpeZ9Z~O#afLo#BsNUV!>;_OpX2U&w(TO7%
zAe<lSwLzOsc?1dlx&AppL|$>k)&Wi&0cVRNbTBkA6KwV+``3MSc|?IU7WvCp_?E6e
zB1}}Ka?AmIWT==COd@x{5mm*jFr(D@Wv>#P34r3^J)?RZx}5p|RmY<o%108hpO2(@
zD0?PIHG{xZACYp*t+SJAK^~{RCPwlSTbRo4N^NMwQ{=`<VivNl-jB{N@i4^%o)L|}
z*#|C|YC$2(l>D`|spgOuY#*lJ)3}OSQY;AKiYY`ePiw1(NS>WL(d7u{NgL?NA0IB7
z94R`|D_*jrJ$c86@?rJky?D~XkB{IJ2)}eT^!-=EfAjO`$NwvGr~3Lw8>g@J-TY+u
z_6<bIQ@3uMyLIEj?HkYCzWLnUX@SOPcV4-7n{@HBJFk9z_q8wXz467p*FV4W8h>*0
z^Sf_+cIVPPNpF2dy8ZgyTd&`{^Tyrj*GTtny>`cBZr`|gclwpvH(!{(cK*gEPu%!;
z;`&GZpZ;#g$A91O-~L1NFMbhy`=#)O)1i~YXnNs^{=B1yBjPO|zzb14HCiz;P(Cma
zWSXhHJ%xyf=4P2l#S%m$0VNbXdWNKG9@tSCq<?Z%{=;L!e=1N6+)XX+@(SDz<}ITc
zf+L-Z#Wf0!pjeBe`&|u|{vS>@5Bb%W;LJcyYHRaFO$bCo+d}71JGDYqDvmTJ%4ywz
zdMiNx5RMdyPW#B>2-T5qQHbhwT7p`IRE&DM%`q#Gz1Eowl88LN0xo^V*_^ME=Pgaz
zaQGDsSEo1qPm^Wwi#ehl#}QFLC~viO?o}QB@-i8BfKXXQbQ$wUB4S94HH=YtBV>>l
zakaF}W2ay4u;LF>hzK-&k(dM%R+`Y!$yN#TwrojybZ^?WZS%&4qZ32XsiOsx!}+6!
zg&L3bho=U@$B%@bo(R8kHvGMpBY*wN{Ez-K@F}_R@unLeAH4DL==7(j@7z3p`^NLo
z`JI~=Z{NIl=jN+-Ze6;2>(ag3f{4!qDQ}Va{O(&{+#|jH#b<Am|NI`;%O<^j@6P3W
zx8M5gF6r{!+i%^w{kBP0xZb(-*4^8e?@YgO_txdR)34vU{_6DgSEjGObo0~aZhUh3
z=BEG(t#1R$<lp}5yr2Id?^{oYPaef>7y|wi{n1H8>PX3v-r|Xoio-o&1XE{c5<dK<
zCLdA>k%W^U4b7;^Vs$EZkU>ZvMG!a1s~o4>D=HIF>Y7_)IO4wac|2Mbm(Cm<S)#Hc
zNyq)G5Xm3)j3p-sSV6?6|0o=R0>u%pJ5gZatVmQ4fk%rbl}8pwbHHe!L}u1>lI+DT
z0S;1gv!GR*@W);$mPGfGwC%RlpdOxvry4H-Dp?>XI3mWlzCj`+!Hx;k5j2rNhlLV@
zuEc;to4FEVk|73u<$2x$L5LyU-IQo*bh++s@2))yAAK}^uqQZzp)n}H8SM>?9u7?P
z1)mrVoj(<N<GIkk`yl$!e*!+G*M8r9{rCHCe0=ogrzdV*KRbQ>{H+@=3vi|p9B<s2
zzI12$O`&`te&ArxVFb<Rci#p$Uwn225dGt4R}7}E7$}Jt;@8jaf+lcu<=!3ObLBIx
zcdk&*?P*Gr%$@1W<Zs=)eCx(#&~)p@#ajZX7j9iYH~r~}>mLt&`r)>Z|E~Oh{>$jq
z%aJE00+ap0v7XQvQuQ#JUcpFT(Zopk*l-!s#~mHSY$Ox*fak5Ul7#0$xDy>kk8xGt
zXlH8Qa@B4JM@`Lwqsl6oZsRQ;!$d+2KqTR3h`GLJyBeTO9cUeNu751GIG?xp;%1Bv
zjU-ZXf|k7TEjTPisXT)6WAcb|E#on|P89I`{lLE;M--w-p+pHJ#gPT0RActu6t=du
z&e|vz`r#r_k>qTq&D-v>y*DT01d$3OszH^g9>$U4NSD2^+6AXK-T<y($4r<CE=Y_o
zqp1l3U|6}5^u7~5EDmBL5nX53(UHL7(@mRF`VR+(djq2bxuZQf<Gnd!y}1*IbEk%K
znAUm!jqrc_o9IXXJ^#}W*Bkf@1E1+@XHl+h-FWHN^^3P|yn6fQrQ0{(gu?HbboaK<
zyukuE5?lyIKnl`F(pz7AW<(O0x+iE-!6cH%fC%^~f{;W4M&J`mSNO#3o21K{44~ei
z0=KSz=hpRaQ>B}qoWB0?;HMvM`rUtx{_4HR3r{hn8yM>WP2tg=ypi6#qkZ{D`-_J9
ziZ^e@+mN(smA|b`-1}y(nN=7P39Jl9xs!Gvc{19KsKiy(f}@r;qND^z+^4G%Noa$_
zgv0j~N01rgm^xd}(c$JghYa*j*VhA=7DD05ll`-URA=GnYo8BmaYP1Mbt;DoS%|$r
zT;H$`{B^h*@H1%L5Jp%@iVp4o9OMyyk|9nT(+ST59s}JLl?V6<Gm1YsI)tCN!}i_e
z=ga29QWUYN<ncDpWDXc&17VKhVmo3Yf>^1_0#z0SVH~Yk=E}<#Z+2m!n{9&dMXy<#
z)V9iBQ7OxC&`erde2q;$poBBFo--ord=0YUs!Qfi8~xm2F14lxZ7{iOT}t~ZCRJH;
znzCgJ6O^u9yHj`WTrf43cYHK*VuUHqoMQvIQ-gu2f!xPOb1yv`{M+9|KK{G>>%ZSL
zeGR|C<gFV|-n#Mpo$2q~zWM6yY1FnijJhT8iK$_C-Z2OQEbky(zPR_!=Xb9FkS{)a
zM|3&S=-&Fr&)@mS&yh!>+98#=@)O|VvCkD&qU`Y&qKZNcBn>bTNs7}ux8A;O1d{_$
zqU;$oy)=F8+>K9;U;F)mPyV6iZ~ijx(zgjQ3XJ#Se-IahcuV>VM*0hn^p^moHEaBx
zod~8RY$bY$Ra7hkp)&ys08wVeRWqe!GQY+%HFb%tZSK}~LKEd-aD=Er=%Y*HpulBE
z069ERO(a-!vQd^SlUEk~a6l>5S#JFBj6SSa3nFM(l{%~yI5X7%)N0y5`JAxKN)YEc
z%T}7qF_9GVRvy_BD1-(onyg3ys^&v%JR)nZsl$SWg!&LiM>vp(V^CoBJP|emrtn(J
z!gCH97I`H52``v0(Q&x=01F)jQot7x<M=B$5QJCQ7T7e6txd7`Jp2hr$?y|zfmx=F
z*trp3$Kplo-$*Q_H!BO3jJP=B>s*x;NkzrjJKj~Re68(1R6Ew=U@H-~13M*dr=`VT
zU+;qq2rUCUOrGMK?IakF)9%`d%EPiwXkUd(Az|xw-<~}wTeqh4_GO-&$U8BSH$Euv
zndr+tK9qZWIQ!Yj+#kLc{^-9%um8U3#>a=IKRt!{b7%S`gP_;$-bVVofs9bg#TYN>
zV@mLEqst*p00J7CQRE~qx|~WP!O@j}`r?Y<$mBJ{1ES`|9+Ov$6eEMO_YP$m715}6
zqAtb(h4{Pm_MK@1D<h<C-FzKoZ~EHv)7PFt^St)qrvKw_^L}zQ^z2D=yui^z!O@=J
zXm1oK9UUk<I#jxS`;s+ll3D%H)=ta@@f#i%45IgvSRGFSIEo$MV^Aj7`Ub&KdxyKG
zmIZw=g;`X)h~Nn2LA~EV2?7(5r03k3jn1F}LmsiKQrDcT6BmC}o^mLhPZ&xQOXq&2
zjw(U_oHs!<6xT(%R89A4iwBzOi?*s1YyT-^6hz7^6iwW>B8f9%^mrYdX6!wM;|?5Y
zt4*1LDcZ#q;^&HYk?C5*3Shxs4UWJRf<|P`0%VO_ul$LGMcfEpWE&z`k->RAY<|T)
zjeLb8ec3_*9I;+?f$V(c%U;Qjjvm2LRCaod<`WK-#D>xUXZ`x5mNpzsNE~323_w<|
zPO7PKF$cscU5s+2FjbT{4|mpYNMl_#EO&i(N>`U><3=xv+>RZ-!-p4-kK~;`mUnVA
zbb5?1(ZGqJ+{wO`kB?@*^i<AYeGvNO@1xf~Y`t}D0B`f{8!z0w^_{!7-@JQE3?G3H
z0_e^=YQ?Aur^*<_k0J+xkVJ7HkOwta5JMt*K6~q*zCa#v1zB$aqJQGP$%uF|dE;sT
zg90K%k`$$el0lOJl(-=7ivQuVq-m2>NTFWdd>zl;t^b?7_wbJ5${KyG48~zRGahWz
zp{lwS$Y2Z%U@$r7oNRIifrJ7g2Z2ZefdG?p6o{ORO|Z#1nylElTLRC2@P4O`C~Ls;
zU4M7x-TUskPwT8&)vfA^`&WCPefHkRnL)?RRXEv^HvpA-Y@co6Oad*G@k5ljVfG2b
zapeh=`uDHYwrzPbo0>HXC-Ig>9^&8s9)$IaA4a-jzNjtOkyybOU;e#8P?N7in&}+z
zFJTPm#lfU$$0!4)o#Aajz<5iSqV&&oTn#}jOV+#VLehS(Nl`TZWeBPPk<>)*DkJ0{
z(IVc7CF?-JNy7VEDyggjEz6Ms5x<qqK#4tYvE*@+^~P~At_UX}2}t*W3%Ugq`sA&g
zEt-f_I}(NX9*$VS2xQ4|*^Cu1VOd_x6U|P<I{yM9=6#@%;=~1_dcX&*C)X){ML`Az
zf~imP+2>;7Fv1ujD-pIGRwXtpCN`LvVW|Mw<ZCj0!kacD=$c*<`9Yy*C`hUM<$KLr
zpmB(Md9QJk(7!i8TM_vnvg)W7f(b`rDNec0of%`L9>NDHlVg(NY)Rvl$zv=KG<k$&
z@+kB4Nv2f`EVs^RMK7WpxlLV#!@SN!zk5Nzvn=4%t+-O}fpDN9$tC`EQl3j?+lN*{
z!qG>_zp%}8ZGx83RSzi9Eh^4>U9#%e60{QQtNDf%@qJ*mXkr7=T@p5)&_sL$H=&zK
zIo0>iQLraz;^=trXgX7V4<FG@SzfoK36$o$ic*~gxW^k`IAPCBSK~)v<0%9I5=lF8
zRON|dtM%zqu|tRQ?c0$Lh^_~v;3iE_?xG7xZU1`pN~@0JnW28smvv-4v7qKHf}1rD
zsaKy|U_luuNpFKR?PO>ceOts#<WT6+g~0<&NEc6BHu>5&mI%pP4FUT@P4CVdTe1`O
z$su$}7KWD5GlCZ=;H(&wBy^A^>yjghQrVMaC+v#dBJ;-IyAZJlV<(16Vn6Te)y#<f
zM&RXju`7Vm)l=z}f(B|up7~qXZrql4SBx9T1<J;am96Z>a#lP7UTByH%!N%=d@Q=Z
zH(<z>h-**^Y0xm3w<1rrzW$Wuv*tzGvQ<R0=Hcx-5D^!O7+}cJa3(ZuD*OqQGo@fc
z@80Dw<fcxxCylctjy5NbHYE%<O&%3FKf$znjV1qyt>Br>nfJB3aDb;M!S9*Fc&OmW
zx6<dqmJ<>y`~JEz(#^S2qYE{JGXZ_Hnr_bPV)W5!n(otHr8B~E<*UG|*8-)i*TpMd
z6|Z<*yz+Hm`Kw~SU!k`wv0l7V|CQ)WiGGuhod`FD?#+Xp)o?1@fMsX`s8Xi9Sb9Q9
z36ucJxy<Wa#E_P=U{ukIW@nGv(`Tv^M}iU|ueSJ+F$rU<OdMCWU%$V0?Hb;`eHiKR
zEn9}PXdc2H!<k8=7%V+XfI>sb22G8=3Tn|ZxOod6L=X=GRVByc3~vJ}iD$<Xlqey4
zQoy8Qk~A4IU`WNg0%LshmW&~IZ+%ntBfl~r;#i0lYQpH(pgY81N+t4f1V_?EFHtfm
zkY~tF*cE%`aK;}$m*DV2+2qHvDoN@!DcD@5+|R$d7UO$)+Q!}Zr<FInus6BevP&*d
zHu<{XD&$FWdN_P|5XAEk!w_X-z+FUo<8Ed4y5`M88hu6lzj&;FZ&2!a<8jk4OE5No
zh)O$pu^mzD7mlb?Dr=VZ=<!~^eif49h`Y9?j5Q~YG9`^PO&J@xWS05-AtnE*t>C$h
z*fw`TKTpv}uWN?S#gNcKMukAh@1bY3LRfdgo2|R1b#qG?a)xXR@kY)WCtAhms=mxD
z31q(VFMAcpc;#REDzM}=t#~o*RY0~yuL64WFM8!)EVl78GAkQ{wkwMLD~o-r7^np(
z_RKQiTcr;+@lm+=0$x4}ibVrz0XsCU!u_r*CQw@9am*sb0!#JiKHHpRWzujAJVI*i
z38P~Y##N3VUv=O>a;d^83em1zP^*^WwL^m@x|8T8sh)&}(p{ZjH4bXoD!6qU9z>8V
zRtZY@B@C5>16+o=;sgIDl=Nf@<GHg^RvuV?7p{L2CtZ=16+G4@LGnvuV?*8$EkhX@
zs)SRb+y^83EamByrGV|_iIqjb;K+c89~$i~lnm9zuH*%>L*vrqZYc*RSL8XD{cqWO
zQubaM>&8XN_XFU_Cbg}Eh;!rSONgktfGZWN8+Q;EIHMJf8wa;&8S+(QlJ80hLgUB>
z%@THa?y`Xo5Xq9-)K~1HSCISWoA)P;wIq(Sq>MACj58&THqD%9TAOaU_p=H?g*rs8
zf<B(2VIrQ#G1&)7?)iQXQ9AUGR)|4WFGH)Vr17Tf1p(2UmKE^nqpseJVw!Jhi7%tX
zzof*!sKlRMLO76rc8PyhiGS)V{}h%bzLXMgQi*r6Y{lM$VsCP>H?`P1t=Koa*f+P>
zx1hwgsKmFJUFnT|(ujhf3Ajpu5(BtznDXI;pdZIKI!ZcC3~YH_OFYh5uELQ8&tkH7
zY18ACi6aQfBO}9}I6fwELgj?Gs^1L!Q|HdX9XpD~eWQVr)aKk$bQ5=&yUqKmY15!K
zZG&64<v|c=SK5t|E<T<V&#P>DtbvjttHyI@1xcVu!7${c>`GaoDl2Sd*WVIF@e`d;
zL*B{?7&0&3(p0flgIG$A_)@AQi2y(39N3RM3i~(y*iz!dPGplGdHM4%d5u&;pv(nV
zM@NZVRJ!~u@jPJTG5INOG}g;rmt1GAQhDL>w978#T`Efr=V>&~+;~NB8j>Kos1hQo
z0AXzNP;dkh#DxW3=gXk4n+3OOMaKsNPdrn}4il~Npn2jnCX1B#$O4S?hG?P&W3Tsy
z3@IN!-jW<=NsTj48E2Y2+B9u~Y3*Xm^D7zz35Z_SapiaRIEK=^&hb8HJV9}O_bk7A
zUcj>`;32T5EJ`{)x(o-r5R@sxenfN}TM|1rx7a(o*gGo#8lJ>r@1%fdY``<J*fS#F
z8C2})U+nJdcXjf+I{01feU4V%qA$HgfA=|>`<z|<t^t1c;DBdTu_rFznH=yW2fS1D
zz0D1H=M@XAB&Ve`0hH)cp|kuFYB1L|l+aB$M)W37%J4Wb@CH497`=JDmN*WS6hiWn
z$3`Vhh)$YVdDyVO^z2D|6qQ|rDDKLA;~vrkO}cL4_VT6zsOBw#+II+U*CFKVrbIl7
zJ``H17S<gO2YmpSF<IGBl3IypDrw>=BWY6D47ru^V8CU_Oj$va>jq!%3L)PZ|7C^k
z<$l<$*uU<hM$RP#$UpJ_aKw^z10_yOo{aph+#!30CgYEdB|cmcO|HwG7${M<?azA2
zIF3$i8-*_@ugxhz6XijGNN1|_?IADCxa!iCGAhR4g_TeA{++ys@^Uz+Y!YYA1aq1j
zE;C;+3`!xg3u^(J0T*1|dZI2|n>Gvv;Q$v86vKlCII^|UrxW7Q(+|RsqwH0;ZldaM
zpFZym8dNSZ&YT)=nKscpb)ry4Q^rRwo^HPVgIe_5R`ddMjwsVs?!um)q5)pVaGz7e
zWBZ82b|?Ei)BT>=gp~>{<E5{ZsmH<*4u|%EEW8jIBDmBu&+nP(cc=Q@34ZqkJ)-*?
zzq6Om+0j#AFM45rc-3~}ymtAl?WYskPseO$bF?!#wp06U$M<MQcWOs>XeYC6Kjzqe
zI%dCq-d=b&+MO5U&X4suI{KXbe6GQM_ox75xgiUzh<9D2tEY@NhM!IoDCt0zHTj@P
z2P)I&qOX+VD(HLhf-P&Ynm9&D7_N}mo-)BcB|au4A!gXHkNWlv;*N3OxO<>PF<9;=
z^<7&u7dIKEcxAO{8PuUeaK}zOh@h|Z>CZq(Ivjo*mbI0lL|=(#%EOgX$Ky60y%aq8
z8aLpQZ&!mdgD+#n5IHG<?=IyAa(iUYkU9=0Dd1#qdedbPu5X<Mc~<gF%A&;1B~1oL
z21M+{Xm9PLQl((>ee~nv5)A&Es3{tZZbC_Y_BnGO<IO9z#5hTLIAev6@(#$;HctL6
zYUH)Z%i)wb0eLb~4RON>ECC{E&e3lLA}l&=1|AdMp;oPe+qEatf#6c1eR!-qVj4Xl
z9yg{4&mAj{DY|&0@@nnhUo;Aqju=rPHNiYR!8~n}dHMu%>bS_XWYd}bO3@<$5sj=L
zcVTBwQ6G<EfY&+H=N#^HjrEh-;KpS)CE%GJ@Sv3z6nhs6jU&K8J)wFQ>iEp|xl{bE
zIDX}I^zjrnb>-QgKeAsrr~YtQJ-kcF-eldi#<FXbW!oyt&Q;dE>$Uw`V)t*0Ij}wU
z;Lgf9Tch`HjNZS&zITmn&uVSYcj}%s>YjDl{!QB99VGYJe>i5p{G<JsTT$-Z7~t|c
zy7}EB10L+a8O7c-0hB+}ph@pc36rn1>m)jKf+K?c#Q2vpjid}`euq=Xwe(qxnpu-Z
zsmWxxPmG$95HohnCj$nEQpwypP@;%sr#A)sxwqV8no##`QCPuUy7C|>_bLo*`l_g;
zFZ7w4cwR)~8$Jg{lz673GVzFMJZ>Jk6g>GF|6Q^SxTGMx1(%dP(xoLV23hi>l*zKv
z_!s@9Eu~J19L_q;CR}#%eB_x(S>=cZ#m1h?a%2dt!BN?rAmL^+bwn}Ycw^wlU<gU9
zP-&!M#gIyojE#zQc?rgKl|5U79d>2#!pWDVM&3i?Oys?lhMf6Lh8>znBsje376B2S
z)jGsxHxk|3wrxXj7V%b;5b<PT2L(jq{VB`Qv*e{prC+4tn{VD5HL83H_#~KTPBPD$
zXi6O)IS=pLcb3BIr4Tvu>Pn8hMSZ=F0Y2w9I!7b@?y-J%oZo{=N<j+*JhK8QCeiTY
z&4L}DE7|KL%zK!puzSJFsGrZ;j^`-*w<){VDNwT|%d(x8Y1y^fvUj~Td$W3Imv$^W
z>O@ZL@tn#>vttkMjXjcG?a2OW#|~6GmQ&+sPVFQ6YaiNMD`#ho?5$PzZmP0xbCrD?
zD(_sa?aoqnuTl4H&~mnEKOVL{zZK;vtmkv~^t&+>0SfiBu-Ly`4~WGV0YsRZ0wvkr
zphOHg5#w{*MPmz}N9SZ~(-W+Tqm-nv>ePw0X-QEtrbLe#MedcjZy3XpChjUt-eE~o
z+jc=+x(0XY#)F{8DhzD=4~9yTzPrkLyenq8Ou;}a@qDE}oX0JJGMJK5Az$@UVB}H?
zk`!-a`MYEplK<}e+z>_Mz0J`f$fk3|I!8AS{VqyS2~Eb|TcRrkSOO*Y!<jQI#X(DP
zcw@)n|K}SS(f2Mj{7W8MUUJ!+K=CVadiu*p-Y9uEd1$fJE0;<`j#rkv;dD`LddgU=
zUig=85fGt_zN||RH;7`t9XjIQ4wmMed_&4dj3I{(;w>tR()a5ps?ZM}{NBis5mR(c
zG&{*OJHa${LgcIj)7nLr=Rav!bdHxayDPteyP&zJuobU*ucN2eiAoyabB*-5&`RXo
zP4s)vN|SZnM4nv&CZE?i!s8&+p{p~m#iRSSlLxg;Ypk1AShg;=Y+q^Fxze(0rDe|=
z>z<8D_Et4#mv(TMb{P9D+ji`L{di8)vHdXzcSYxHkILB+wI6-7HHLOzTjiWx)er2b
zx_?{MgS%=R+WSS$o;srK`eOg~8v8a?-T9q;_Zn^YT3gOm?ZRpM^V`v`r<L7>t$fY_
z^rUp%v{cX}+<F9=OV1uO2`>blI9)3dOuN+MOm!6uxP8sOdO6C-nl#2bB~G0_*)}8D
zK5pDcym>&07ZDAbxSx1wKnX?9trkkZT~OC<!QHxtv}zUfwJ1U^P?9PMH@Feu5Cckj
zc{B_Rnp8~mm`Z8V)ze#YDCNYE>ayZgmMJNsrOP+*q6nw)eJOOhi(7JJK!gw?csRYO
z_RkWiCC<h{%c5l9X>jzm48OUGw{{}W7BvJotg}z!+)7v8jN!i7@}E?XJQ;a6#8S5*
ze*;JNA#mp0N!hroGzpQs+h`&gv2R#(_*8{aSMNQ%LrnJFxpPSCHh8~FZ8^+2o-YK6
zBEVh5E0jl%07y+VWXOA?N54NK*)%)RJa@8bW}IopcvHp<^Yt@o(L)K5&6x{F^#n&n
zt!Q3H51*qql1cNshWcG2NniE3M*Cc2e9lo`VYz+dDeU6P|GMaT)Wz?$1G|+iS<2Q-
z1$=g_u<Tfk38(DZsP5US?c1U4-(x?N9d&qL)S<n$L)o@Nd$fZ)H7MA#*2YgZFSTx1
zV%fA@*^;4b%TzWk6K(TyW$OxcTUPY0^;NUCfK|-{J8R|a`Qq^YFAwee^1zPjdp5=H
z+av%ykrQ?KjQz=#Xvd?f?t+#+*C65R^Wx>B(<D%097<$u2xo}yd=NGsDk;O~O7lA6
zoViU8?$c&ZW*p6uI$oJES)Db-79an~$dQ60ZlIh~MrtK!0wrEnpwyv55D?MYv<_<4
zR5%}`N~(+RP7f$5RY`grI8PG;gU0g}T1hX5B59H`fILVIRVpX4-%;lED~0NBZ~V+<
z1<#OqV+ARd>n!D#{G4&3N}mf8j>b_q9JQzHQPTDOo3+W7kSoQWpR+5eIM8v%A5jqK
zG61CEIj4zry&4R?En@Z}O~RdyCy*g3Hjav>erYfti9r&lVG`dnnHS%%C6lr8Q8p^e
zk-^Qs_}**@R+M0?63iZGnnn_9u+0{tYNBeEY?LdJQzTR8Dz-AkggI7F)oLL$BKE6R
z2_nm~W{n_5i@yAlgd<!E!Ht^`5roG(xNEo2UVX#5b_?s=CA4#wU>eo4nJKb+_h9Dd
z`sUk^fqE_a;Uj`+W5x!@#g(5i#WHWIWqztTElHr1KE-rmuTpqjbH0Qi(Oh{pPvKXd
z!X}=g7G6g?pQDT4*~91T?Q;$ExdsH>-}>Fd{O)gku5Z1L{$58HcR}5}=l1g_w7na(
zEi2Wn%at8j%Fb2Fe)=_Qwe6duc5aK_vpYIxUrf%fsDpd$#}8LMd8FFW{W1HuXgjm4
zn=>t&mYFv#wQgE&-AZ3+gK}uIdT^I|I$Qfb+jeBP?dTrc{;en-b;l}g^D=ewO564|
zF?%*u&DmM=NH&Jw7l*TJ9@$&t(9WudcEujw8~fw2m}_Tap5BacJ`<K+F^+WK0(}r_
zWl4ZRVOnX7gorr8TaI_pv(W3B;x6oc^|Ed00)-*zsS~WTQ`EHS_62id5)wZeH!gV0
zxX@w4LcSeLg@0~rD7Uv?e{MBuD42Po2Mi4B(>Ih}QiqPA?b?T8Av9~w5IM0B!Njjp
z0)-IPI(34+tP@Hl@XA$~$yYBwP6dEyA;1Kvpbl)dV7orABCazj8$vRzh)oD$BZZUd
z(8wWj#R>w(5_z+jSw}d7O=c>53TecYlENuvm~|<f;=ksgsF)Bc!LoBff!IG~j)Gz<
z3zfui<<X%)f>26<;4X+lhzLJA#o&lu6$T;AZvU;xZ`dueE%zobgk!~4mZ@`GQ3$6&
zjyB2KQPCl)8eFAncyvq%ywE7zL`^f1XBxwF4}{!PlQXnRHN9?dba2(`6g>+kO|^0r
zqP3aV6>zw#!PTfw@?{ty3QU?TYEaiFNISgIS43!2)<#s;s#l)?hG52tnl}sW)VX}8
z&JjI&mh03xv}f<oK|{(79bUfwfbd?uLcbjpK6F^Q;Ugjj4GI}CB4T{p`%KX_DgOQV
zgzyP*A@T7c$;ltipJ_>-VOcoMnwDr;kYuLM^60$g`o-?fx8n_<vEnJL=`F<b{FTqq
z0!MVf)h*!a>38)FxCaK@z5Om)Pp_k`yP%#k&-TM9W!D<(mQ~6Q+G=IbT06>R@5ZR?
z9o6>is<v}S?A|@GhY!{~a;W;zgO!i$k3PCTHfLMR&NbS$3}wS&^Oj8O&b8L;E$a6<
z+WF(QyI1XwXHmYw7++D0-%**RD>vr;jp*waqt2g-K7AnSz-IflEOm3HeaEWk-D}xZ
zmBah0o;XzNcuwu(2WlP7u681)^10(xul-o%!Ic>2lUiO!XMvJ`L5V+u@CngG+!5gr
zIP?gyAXp+(cuPDpyv{*|FQayDRj0+{!?eszR+r3<Su#I%=B&R=NsUNOd4F;u#mPfQ
zj0_n&uH1x)<wuMv2T;R?mm4xPV))2%gNB6n=^NIsUqrut<$CohN52(2p;M=F9Xprj
zz1QUH(3UMC$jkWp>j<jT@MJ~&aD(tK>yoof;8p}R)5xr(t|l@-r5b8f3JHnPYpK<u
zb_9uI%>5C<+>5+yNyelErDkIrz6ocYH#3cYQ4q`)Ma2LFEEFk?juF*45KE>#W&7AF
zAxJ*ELIM#y{U|{-Yg3_xYL+_PWL;H3qy^XF#U6{mBm9WBAP#|NpXddHBQO!LXu?fl
zH2Dqx`b|AiQ3o(BL2$v6slYWGDnrl|t)D0V6^KQN#5zuu$|3gX5UVOK3XZDR3g_BE
ziFK8?O;m8LFT%mfMp=6rMY&^wqhm#@RwJ}-{fJnK6B6^oR4jGEzN{Bcxm2<tYJEY`
zlAyZvsh%3ts&xd<g;cxlJ<E0J7S_E-NdJN1Lxz?YI;cnRuo2}4enTz#(1G6u4;>ah
zF~0op5uuafE5uC<9~T!qIjQ`tsg`-uEQ@AX(^D<;6D=#|S#F+E^HD~^mIERi5a}(-
zTl9tKxjUNagE;N|u5Nx;55KFI-`UOYYz<<ryr{w#+OZsEbCzZ6GRuxEZSPw9E_Bd_
z*e&a#c5JP_ZEN){TVl6ujo!VZ@}d1T_EXzuUv&0%{BO368P@fSEt@l}d)8S_A5gBH
zxB2s;1FojUo-QT6!LR(IN_-Pu`Qu&(CcXAgD)GgY_{NlY8D{F?E2@0sV)U6~_5(X@
zTeEB%mup+IqV{c!IkLOPu>&<v9;tl{VE0!&mQ&@2qg8%78GHZd%8o}hypFD7R2Qv8
zD22{ZNr2I%RV4vzyv!0G<6MFxpKF9Gzw!6qtBdBEQ^ylts4SRaPoEu?o)$Z6&R-Lf
zBF2mn5Dgw0JY-1d*zx5D4-OwNFl5B2_XiCQgQIT-h4<*mn=QP1kMJ&C!&<ctMk_H&
z-n@Be!$!ePnufJ#RlZK$;JS4}n7NM<PfT3JQ?B2DD#s!98bs7!QpMU~6l~`uOhGWp
zK_ect+M-x4A}0ifOiaFqof@?$0~L&zA$3)%g`us`P&9-bWROV>f}%x{L!=b>7c{|9
zl;8p(*UcWW!>ZK<RyAs3`~+98DGI}~F5mFr!_hf38j2%I;|&dh5~LX%NwZMeqVL+J
zZ}pN;XE2Cfqx>~Xy+{$p8|!+(1eNI<sJ2ZsDN2?j3RO!r;Lj^@s$r^vVq#{8V2*`)
zCF?;^sGudn>1A(7?+^*yP3#;>oW>i5nMb%|XseiLk}-oS$B^bMX8CE{B#fxkdiCks
zMzm=g)~RzyzX1{b2S&7SAJn;15VJY-=@Z(kS4fW@%+eJya#Xot!^6gmjTk;Wbi|0D
z@#96$C@s~zFx5IQ(VU)SI<ZT6cusZPwK?%E<k_WBCl!;Yu)4dTmba)8&F5rnw5^xn
zQAZ0*K6gQVwtRG7&E9I=yv(vS6HkJ5=PGT_y68<=QR~-KS+yd1{kj_K)>c{jUCjD*
zG21pq@7q~*=cedw->F-cS=TSJez(Z7W0m#TF6H(m#qX?D;_dayH~f`<;wyj3>*5)|
z7SDejn6F0)rN1s-$oeb)+}FhfKM?aUsn|QzTUh1J_2^T_Y<Ml!uTZzFwCz|My?0CO
z;p}RMv#TH29h0-C^5N_%#}8D#aH8_P%dv%zYSG0DxRdZapp^tTenz|SKj5ohTrBFS
z%=5cv;w^FIw|w%_wtkHzdAw=bc<Y=LZSE9X+RW&w(>|RL$88K@R;GUanD2~<ILmW~
zyLJs8Ft8lP!0-{}`}HUEH?&)KBJe}owj*Ge6idPzg6e$1+)NmCR6(aUvS5S+Odf6x
zYPwbx4U<Ncz}4r-=AA6w+h%kD>PE;(R7{wPU8f4ULTHgOMFp!+f&}z_H@ZNq%kC0V
zhgga{wMYy<QScvO!wj=3A<_bbEbKI1^1y}p#EO0_O2r1(u7mOtFMp^+BS^cBb!k1a
z6D&IR$<A>X7#ta$tkT}xJAMY~8<CwXc49QW<A&>7d_%X3eL|C1>UFdE6&J<8ll(cG
z381)4-C4((MA<3V1AwB7N0UeA=D=6ws^QYfP^F5vtEffUA;rmqtB33`2K7jYAR~sc
z2_93^ri847^yw?!et3;KbPVp-KcY{cuwFfxev81lkl`cB4g4l#&>-HQ?+qRL-o&^{
zGm|3cCY$CZn&wS55kz<OxcdC6=6C`}rJW;*l5X9_xbkA%1$8`yjXj0U-386u1yq)+
zj~c?KckQyeeT`*(hJa`rPPt`Pw8Q3Au`8BFEl#&DT@tlsb<OYA)ckIB?3yff)7q$A
zn_{=EvaMTUS--@*ahYY`ChJe96mNko;BNiOH}cm&%CE(9Uk4WaTAcA~@$z4bGk-0~
z)C0d)5W@Ov$!cQ431od8SX$y2Oo?y^_aIMR^ratcIs25YtCUSy>bCE+>}|2xyJGfi
zkKVIAcF&H=IlE&|?2A2*R=N^X^t7%=)c7Klg5hIPgDBux%uur5L&V@bpL?cPc<jfy
z3%fCPcIcpWb`mPdGBaM8lcdd^7BwZcA{@~_5*+mn8Za<)z<@C3auS2HokX9sZ$Duh
z5RAvLIQ3z8G%~OOf1M2fW)z8<4>hWbnv<%iI7BKLFIe%O#{rJG0*fkM$cU?u3SPMs
z9<*A-gmF|F=S2-Qx{E-(qV*TJ@Bko$)V*O?Q#unq`yBZX(ftXGa*81v-uYs)ilTQT
zyEgnpba^U?=mjK@4nF4~jJH@i^5RQAa&%oj#b*3U?utD`ngmBgBN!ZUR%Iobvy~s^
z*-8rJa24RlCY=?A>(BUTtjNve73tSf>LFoW?$Bhya22|V8=}8VjB^kk337{coyA08
z)LXz-1f};>z22a#s31pR@z?QmaI1dRB#2q+x^-u+2XqsYKjNkf?t-_Wv+&LK9}qTT
zL^)obxNU(*cXvn5N{XDHY?_l`nwx0ay25hpjQaAL=6J4ir0XL%dZU%1TzN6B{2Dq<
z_3_}j^6Ky}#O(Xy)(tBJL>re{Hn7aFu3KVVpBcR-vufI0b>19x?i@8eJvw7)%<`pL
z)-rYN3U%`eZQ~N_hQ*ext1QR&SRY<heMNNx?!K?E-vU#AEnfI*$+BOISBO?Z3esA#
zkY1Op*HdNJzb;<?Ysm&ZRaS<GV~J6oi<(`8Dz&+JSv!72-LhWUyh`1+M%%H`zHL+V
z%H`4DWyS2+9D86_%<=4)pH9X6axKR3;%kp%u+Ke3j1&t6G}rH@ei6f71Pzi@mEd)Z
zbrtk1dJ%p8oRTr07!P6E%}P{frr2lCt~z2wFyq&ZViOI5#{cG<h+cif%xHK=J9Y}f
z;n2NTNSii6I8MtBA@Q(&^Ly*b=DZtutT?@mAtaOz&t2jpg^(rUfdGSyd;_zTBJ`GA
z0hC1{#YRlI$iJ9$h8ddvtVhR5u{5MtiX}@ajdHh=0uGIOl74Rqf<XZr%OA2Ib_hXo
zz|`PKO0sd<Wg(L1Z2VmAft|1iIW)}htJvWuB!icZAj_SzG?*%T6~-lS)lB#BDOkNB
zOWd3{0e;*!PJ;{KuJTT>Y3OKix4H9--!UMLN|NJ8aD?BxabwuQM;Agw3L{6TBv9hX
z!V#@^pWuG|Xu@I3ysN{9m!CGd(j4r%$)>sSrUl8SliAkW=hWPrnu92y7r*Hvfl{9E
z+Bt>WA<A7)U5CrA4=veF9JOXGG_P4;S+`iU?-pCK(yhzVl*MWGd9$@y)0OGd)tNK2
zIkVM;3)GB7O6Fo^?J@<>HY~MnS!Ox0&-(J7=5y2!cm|gECcX~LeqFraA3#*H{MV9|
zzZTO-M*^aCzm{?YK^uN8*~pS?beO_LAQCS8gw@R<;?C#j{NS$raJIU2t#!*9p_MkT
zx3A8Onl~$Y>B5-p>tpush&`DTd+kSx8dY)Tx5iPghbj@UG|lgx?sHEUnn)<4c#lYy
zA5iqN-qQyfrd{d;Q|biEtVCsYvTfGX=rLnH8a$Y(Hbs~a>K>0MquX*ownIn!-eUZy
zb(<gt#PQKJYeo)*FdN|LEvGjSDSG`A>FbsRNpPfWOI}KsZ=%Hv5n@H6fq=ma1QDes
zg;PX<>Tv>6EDf17#8Up2<y$BTj@}uEl_wyND}`C^P=+)Z9I=^1N$Lf;G%n<=pG$Cb
z7>TI^79tsVQIL5T^r4>0!AI8l7ni_w(d0q-;inb(2y~^08Se*H<WZQnm+N}>(zwIi
zYB=JygAytUl$do04<5Bm8sNVBDu|$<?mfcrwaQqaPMt(_O3z-{?L2EN`QX8Wd2_xu
zWJp9xf(fGzj?z=i=%eNH%$JWS_kU9J?h1VbBRVW^FQG{~@gzjI?r5u)SXM8zz|oq8
zmQ@SY%yez(JnNik))}eF^l33uQ=<|Sl_@F8+}Y6!7er^IYbzEhtCv{UEn^JGdU~HV
z_pas@ny7z?FP{Dmw%k8TGXC*u`9EG^%dNzO6OANU68iLf*w=y}p^{#S<wiXRkQ6^$
zZOdQzse?Di?;huMw7GS~ma|9QzFyh7PQ%NwWkc-Jg|V}zMK78kyLCgALwl>7JraBO
zLQKKq+U~;cB2bVhK_C(YQIV3ut?^#xSdU|*yKtZ*w=prg`?4*wlL_AyrX3v3nHC#2
z@sklF!iElIM$V8veL}i*6UvD3BYLLYyNCAb&FDi&tJXm+TM}Us*1kh|Qp5Du9etnR
z>Ux>hm?+^W!(2D(U1Pc`Sol)pSkjyRTyzk`JkC<o37gSZL>!uwWXa2KfV_E)OWBs<
zCm}Mv5nt+JY0zW{o<x8{LovM}OgomW^Nj%!8yg3e`;;Me21jM(*0>hq=bXRz`5PSs
zI0V#z1L3KE`dCcW`UxCWWV%UmT?IIN&*WSjh)e#fm<bU*D^P;9zg5J<rTl_WUTn#{
zRBS2ZR5?UhtmFk6C&r*HDABN=4U}+?Gf_)}hN3J3T_k$7J$pxV?-`DlwSD{GK7Av)
zcMs{?mwF4KL^9w2$DG3yA)0P>D!t~&`6+N@nV)3ZxmLM)QYAkk|ADmYa54x#!@EuQ
zKZyV4-qZGMQ?eFWNs?WaX31KhE=!9_pA$WAW=wLTI%{U->C-Dun_4+BDJCU3YQenf
z3)7-jERN1hSJo{R!>Kvjm4}yrsCvNNtHd|%RUq|sVBYJ%!e5IQ{o~b&e~7GDmh^_!
z=uK2U`L!6WgbrH!Iv`4*h-_Jra=zx3pF}^}GEs=tJ3ZhYg)`*pS@rN<b=wAPyr><U
ztE^oeJ$F|0w3O(1vtl=`jybqH>gVIOr&m$3O}x%;^w_@y3Lrxe@fh@sJPyW`hq(*;
zN{)^kR^}#KrcJQUnXJrC(q>ITAN^_IKzg7I%!Lx=%Y6nSMqqpO3h&lEl%6RDcDr_=
z9Xf`$Xc5}BZA5*FpEMSwhw6%wDR`}et5>781_L)?h%4RzO~cO?ZnhBo{2tQ9>@bwF
zp{FB7qEcjNrAnd536c{TDSAK>khd^-H!AhRGFfa==2;4w-asd%j)T&qz@tPAj#z)2
zf;W{G<lYc?LcWbZb|NKK{>oU&{TmFzvOEoNAiA4$2{=Oa{P{0rh|_}$CFLB5KK_^z
zB_b4-sVD#X*AV!kwu8X!6Czy&Q~Z}k0V4JzHJ7AYUZC-Y;kY#8+{C-0;(L+8%o8Xv
z6i%U3s+ZK~>C_D(`x1S`2yD0R;T=1ol|uRtc)v%FuwH!_B@FN0olv@nAw$9lvm809
z!mKIQc~eY_rdb&?T0Fyi`k;FKjP~e?miI_=zOYM`BwcnwH;L$=-@+T{6FGjdpE{*v
zEwp6Kx2~LP%}fI#d)kbsDT&&gnbqRPYtyFHoG>AJ+&FbSv$3Saq|dLhaBj@<^r#i-
zqW83SlXCft>dv?Mo$YYAz4FDs@=t#qm?iykzn0)$$apP049oE+{6nC$>UDs=lBneH
zD~d^^&C+xwRg5yC{%Y1M;d#SjFqcdUzq7C7h5h0=LME)+H`umqjNSMhy`;)h5@Tkh
zMlYTpwSB$)_&(dMA8dv9t9gn#dmSUZ&WVKGihK~)1dn5kn?yy&5LZDjDv+a(PM%g5
z%r;Mpv&>0QXHHfL5E?e@W9}qxr(V5+za3P*YuAu2T}12Cw>$$7aMZm!?o+alnP?!m
z4II@EVzlTBG2e}t)q-Apty;1wdl&{h{dbEsl-e~?*MJOD(DJ%QHW2vFKBE?gn73C7
z319M2N)bXO+wbN|7+FX%yMd3a$nB*BN}2>px|m5xL(Fi>p(t6h4i|iHXd-zUQoN1b
z8XT2<`Adl8&)I_k5mzCP&Y7TDfP!i#6+Xaz0}W9T3z{laz-$Ypkb)=!{yusNwH5ML
zF_A0(5?HY%-vAvSSyG1qQ_#3N_AC#<Qr<Mkl`5Ds<dnEB%vX~hZijV;X-C!EhK(q$
z#aJH0Nx_U(ppP&oI&})|*(<zPPrwQ1v0}Xs9uofTAf}jnZ_JoVvs0|;)2xf8SQe&O
zR?at{Kce3FQG0Mr%e$|0RN6%nD#;+|&5FI~iS6n|ZS4xio2*%B%8CWrlG*mTQ|+^+
zMJL3^Oq>`yWUw-EVwG{@Do>hJdHlHO#CUt!?5Ydr#H?H#y>fwN(@N#^A=Uld?sI$<
zaP<{qL%!r!ff=v-GhYYNUKgkTTD({g6j&;n@HS)uk!X5?`D@V|BF!AK&_}o$Rxol}
z;>UMK7l}}FJO)#VMJKBK@jctg!^+;R+SZLxTh_*GT2~E-#*K=ao*K1bl|5&t?ZRO#
z{~Dp}O+1BtJt7%oESg9})fNq<kh0e?m^=|jZhcbezdx%ko@bpp!7_W2Ix|6?nqVI>
z;!nMLi#V$uy+Q{JWWbKeqsw>dgk8-mD}3NL@Av2#hR3^o`)~?kv~0z@PE1pXQO6*W
zJ_87&Gv)L$H4&eGhFgpo3c@2Rg;lHwFGR)QePT8QUdSRbhcauFxIs3M6WN&3lo_$*
zx&aIIyNrxiR^G~iEt}0Je<+1bq9kPuX{RCoc<mS`V#&JvQc@rx;)gVOTzMdaBl+5w
zKQRd6qk*A>=*_jDdIUIJsb1}beNx<>YlIy!{Wo;5E-wV2XmXvOpsM&NFY2R@@OX!_
zG;T%dihjG~*_P6zCt?WLMNDj|b%)!5fox`fql-k1wT6v?8K-F9A+&3^aJoqC+lTh-
z8NrhsIIw*G{^8xb5tS<RQNMoSNpX?$QkC>n^MVvql4bKM%Y|d=%?s-N>sl^$-BWwv
zGvRGu6iN6T-e@AZ!pr&oO>N%+WyxG~#w^Q{8I}dpmDG4^+-P&$INP`}(ftP~y?a^u
z^if6(j~Ou{YS>Wg*iqKhMBDtCwk30|E9P6WH&}09(ioQVIok$2!%BP!uY6O`M<sqx
zn)SMPKK?q9S{`7i2#y3zuc*>M;yG0sAjmJlfgRd%G5RC&YH4sph9Fr^q!uQ7iv~FJ
zYF$069L!d?ZPM1QwBc=-J;Oe9a8&$+sH|o7T^ntuvb9G)qkO9qPwOrk<Z+PaJHk^m
z*e%*1Pa!4!d*Ek)qaQCQ%NLU-Y?&TsogS~wNVF#;RMy=Ks3dG=LV!X#b_gMwkx=0-
zokQuR;_zwKJO~d%<HnR23a&2-b`j7*pNPu0(q$xuet-yh!&<{Kp=%&h*gpF#?DI-g
zh@z+zWkC3E2y@fRbv`06Oq3u6&)`K0*zYcl;tc%Pps6fM$e8i2M&>ymqK0sKvy>bm
zc+y5PD3F3G56AwEzp^|^n%;tlJ-mU46`^`iLo~pl&O_NoF|L39SehemTu#}Qw=P^>
zrg5>HE%i1zE-xis1w#M6sYQ%;)NEnWJs^s}<gQO?wfaFFJ4f(7B)+ayD-!yIZtBv7
zaoF&l#C>(c;~g<{7-1?ADU%}8rVzkjnxAN1G~IG+xAOBz_3C-;;dSlBeXZcJP)Q=#
zTW`XOd#NW-kQMvP_T;|y{Uv3|eDi`-^P;I{0$eALGmjf#9x>G1zpuGhFLT!}mJS^(
z9XncB0jPlktYavD7iXE3Y*{+nvM$4N^q|%C%;qVmO*E0<$V+@ea*2;z@|mxE(_aPV
zybjEL#lWlJXrW%EfhENmDC2<Ak&Uj9XmU0Rkpt^pNPGgBwqz9g2}KYE`A0H}`s}WD
z`iQb~lXcx{HEWq|!5sU@p;4noM5WEPZ(40TyhFQoS}S~LCq>a!(AzE45bYb>bY%0n
z3wpZpI~KkC5{@ohQnNCNRy9orrAb5z*-*9Jx|g~`@i54Y3EVrReYI{K#NeIG<0CN{
zS1KL`>Fy@F7zYtHIhHwL)krBqD_`}7fQg5$+bU&+f#Ok2)`PSlZ-4m<l@CRYsejeV
zil1D6YfA}~M9Hvx%A$m+iR+u?TNJP{(pVNEx&OB~5-)sRwUzxj`<K@!I4V`0qB@W)
z5X63DWiVMNjCJZa>ZP=p%ksCvVse|emhWD#@r`le;%4e7ade3i=SJ@jj&R@MH6`i^
z(@y4<H*Z02H;kxn@+KI$Xxlc3mn8KB=mKNc_3llH)Q|xK$|c8rJ~JV5L2~4RMAOn4
z=2Lr>3&)k~KdJYws?Y9dxsNGNC%g?1B$HvqQco?1qZ_x?EgLO3`sOE@=i$PNGmji%
z?%&7MyO+6BCv(RR=GLvvEnCto?b=$pbhh;CV;M2TniwYnke19dZ(VJ<dQQRb=Phh1
zBJ@0?O1y;n5IYJ=sU^N?ulzG!qnJR+pGGV3&n;mkKx8Rxp{V4*(zjSI%ODInMp21C
z2zW>;r)M;W94LI(dfw9ncVUmhXR(*gC<k^bn>Hw`GPOl>?W2Z84I30SEyccerET99
z?cxco;11co4H+sD>=X@h74)Y$^Lsn;Iy>{)7rv-VftMS1)eY+`DPzei5iYwKlWob9
zqNxc(uag_gm=T(Y`X@3awx!@GguZH%uc=`xAY$xQy1OX?z$2ru2Ay17VT^Ymay(Y#
z6XBHLAmql=XT=Z+<c)Q{k)^2Kk|pu+U&tH3k{cVl(sv>bXJ{oPTxuL?m=Uo<*c(fP
zO=50Xbo@k~D(5M8$j*&FV<%jfZ2a7KQAmzTuT&^U0g>2=u6o#ytgTArJ-&e>QAYJc
zQARaX$BK$}l!D|V^&vq_R*9r6q|{vempzm(AENI^6zpP!&8TR{%ZE1)?fnWOX<aWw
z2}EKXnIUEo$f4qD5K)E12oZGGvUM2I#m$-rH)|fkyRmg^ympW!(#mkm_UJ|6H-kqX
zBu%I^Coz)H?(`|<)$=W<_bca4Dz`4Ex38#=?`SU`>nJ_d@}6iIc#<Xzydsp*9qr5&
zbxE3;QKz(I^Q?IDgb}81`<uFUHg)V^YSDsb{^~2y8aFn7{k1@;cTdZh5thUWmbp_b
znQ4|in=D1Y5Vlu^&~ZOuuA(NxSW(Hum#A|@k&|h!{nIh<UioH~_@<ZmW|a8nh^3Du
z$*ojiNF$yn;GGi?%QQU?cdk@J_^$n~DL~{Cla4XZh45P6xuPCBsBBxWtXZipoo^dI
z%06^ZRLW#~R)%foM(x5;E&sNy=w&TuemhFI=&iRazbg<q^4b->Y*P55HXPk~tZmtf
zCNj@p2nmi7;3%q3pAUb7NY8}j^@Tpdoa0s2t|J|y(mE$_MDU3$aw77K%2fGA@WlIB
zmQ;OH#>$XSB*AE9U(0`F9ceV0++OZV?i`dPwj7!hkXlJn06WAg=uU6Jk^B+_3}wU*
z%R<C%jX%kwWXD*(y9fEMK)k8Y2o6llSN{DFiV`FIfWSALIb2Yqn9|&wJRiY|im7l!
zt#9CBGb-nYg#~^1fnGgTuS?9wPd<s@=S*@$(Qmf-<j<nKDkW7Z8c8u#I$YFK{rq$K
zn<!j5q)e+9!EC=olGLaX_GMk>J7yW&z9a5dra%g5-ys~QYxf?af7GjYIpV&=nESUP
z25i{ykEc#H&7UGVM>xHSZ9BDJ`RSx`6^^c{kM3#DAJ|?#vE@G#Rvf({IMTaI_WUQ>
z?Yrv1Q`WQ@rnw~jC7M$vm_`mZ_30TYAZl)I(!|uLp{ag-Q{B4edi4ZN&6}CKbh3Qg
z&oX&}W&Sktn#Gn=2ds{#HbV8NtDx&662Qk5dnORuQ{qcPE4}h3zxJb*rr~@L#-2b)
zZz6SQx=0oG&`4t^_ZAoT48e|QQ^jy9byt8$aKr%61W(ZrXMQWjdC#3tcI~jPg`+fW
z(m4BwA@-C+`>G7v_VwDC18V*)E;GuR-^Q8W*_Dqi*Uc$7YVF8lcE3i2FRH=O)92c*
zy%sJRj+g*?dc2K_%{_a5h$ceUql~}@i1blc)&)mx+J!W1#6+>Bfj|tJ;}pWhibW@t
zkrYwm6)i;TO$R{={JXFiT>S1zaPWI?wYN4iXac4GLM5R`$Oa;=&!|gWRvAf%_&Ga~
z=gCowKgki`7!XNiRCW*OBY~lAmm=80eybqZVWvD35cBbgS@|NwmmwjzS;E*q*Tt8B
z!+Ka4{i!g%0T!6j)lDedGu<8+_@_@Im^Dch)vrJSaDiTh3Zb9=jV~FM);aofSjEpG
z{`?7D)N&ZrQPB|$+o>8;OEA|}D1F#3>frYd@6ij6LOXT}$LB!FwT_*{SOzMIG1>kD
z$}`e2WXNYzCRSQB)j|b^h0`tT2r9_2o;|HxxuD*<p+0)3J%4I@`P`QKQUj$t^bsgM
zv*kb4UOd$<-BkA;w9e8)iAbBBG|DufZ)DFNrZ%ljO&UiwXke;S$5gA9Xm!3Y*Q;y(
zx{0}SN31?`+$h1(x)qk6&MNo-J%tSjJn*~vqmKffF{q?s?|4wsX~GANR!T1MCg{c<
zG_fw4UUX|}v4?UHsd}3h5ctR@Az~CYo=Gr$&N$t7Js2%h_}F&wf|9deS-(bIny$r-
zwT&EVpF7L8GDF+4Rz04rKEEjnBI&it;i#)KzmpS9l-nF-1V>b0hNA~hwcT)(WS$vk
znLSyZo*+14ZZ+90YK{)liv@uaQ9zh;a75iL>epe^5yODhO%NA7Bf$|yU8Hap365}O
z8%2rVNM>1l-U2~>d<&L8^3m82J4g5pm4rMa)ihKR2q5hefj?d+U+(!`j^uu%CSu9X
z-%@A1G=T9V-6IDws1j5X4Vps3DC>>o23*h-8m7-6hI-;(5-8AMZoUsbKvjv&V2!CL
z_>z->qY5A3Fc0U4d_*OI8z12mt@P(Vhfz5nk2=<!*&I=+Qdo3!IYJN#jIUX%9DdX<
zzYK+=R&C(u{kH9}?!sEO5>Jz{q+Y!uI*37bhB?ZSLosaF=c#d(7NlAhP7%erw|r+k
zbx=8bO1XMjaP;7w`uLIU*<)MobD@&*pK1BeB~Z3s?rGm&QP!_xx)u`|e={bT#*c~|
z^lfDC-jN;JN497l*{EUUmvu}vYnW<OH`S<N`l7a}!Qaj8+nRfIH;*4>PM>MsvfA?E
z8A%y%)WqkYtX4n2dywBflyY0eXeF;`xWVz@iSPz5N{TkI*c-36<ba12>U6OJO34Il
zi>YH>R3A!00r_2%bu|>{b&l~mM&oDjIGDw(UE#BsYgg5rJ<9sE%Cg1U<Vm)%BZ%3y
zWiHh=eWx7Vr@ScTr~w;O;RF>%yby(#DGOQnq83gDs>oiwqi)-7nK@B#G-tB#GfbWk
z-K9$f;;&Ff0v}mgQ?Fk~xh*W}R&VM+V${Kr^e`|~LB=bC>2SnrUrJZ$`&oaz(-A<_
z4YB{-l|KT`?`|XaW}sxKB!eTVP0%0&uj+$GBJ}!Q3f@vi?AG`*U^EDlEAMio>qHDN
zK@co}iDU#F6cqFxjTL6G3=YA@6aRuH*kMKf3&iA>EW^WuvB$qSlTSV=$FCp@n&hv-
z!$ZPCMZJAg67x-9;Gt5vWPGHIcgMt*XAm4$1M^gpv4TUD{K~fN!h7~E-=Y=MMiBl@
zd>x%5(LbWp3E{`sbvWzd$5u+6^!ePx$oZ)zd~SO-TTUNT&Ye~+T~Kb`Q14t<AKue`
zK`Z6j@?P5VpW6!ZYy~g0+^4qt*VUsxE6bLcDdUiqXqu5=nlQG~@S&By9Z;!P_s9-y
zBAa~`+3@d?b-swKUd>dksu_+NHZ-+tfoW$RHPpOdx_SFLOD^M6f}^HhICAz9#pqmv
z0}>_g=wdIaMxZoav{DTfSL}@=a1Prq;F(C#k^nO=yW>R@5KR)zNt>uQMt>-)0!O1f
z4m@uITyXR}=H?ak$RTC@24&e&b;cCigfX^xGqubm+Qv1?vHi-^+d>~PL9<Q}lb|)D
zS4G3)jZr5#I(uDRohAB5vnGk5*wjh(v12O}zKCOi`%IG-9YNiskbl*ffjq&HtV?Wk
zj--<Tj_@$(zHa>$t-BY{3x+L+FdzU%lS1|1TFT!B=_1Du`6!pHuycbWB$?w%m1K00
zP)TobBuz3yo3OpXkwl)|8h`L2Vf-&RGWLLzK~8>zX@_R{udk7#FxjiTmVdP+SNDN#
z2kJ8=u}5*?G`^P?F5uO#8jd*6Pya$HBKnA^c;WxS@WyO_Bl<@@x-(@D`OEK78GxtE
z+fvrrA~Xo2u1}wciK8n{pY(Ye&blPi{Hdnwoz|0wtY^<Cmw#5SUs3PeQy<*d9zC@^
zd1`x+YkQfe<>qTIUueJF)o$NX4}Nc5lxCh2Z<?1JIWsvjDLyiOLS)>?$kE?M4(T1)
zw{v8tmXXaHM%J$riB_sr)7;?irmq{Ddi5|38)QzOYT2{ZQt(u8MDDrQ(ZNqWA5@a7
zU%)je;2u)!9icCWmv~2%_+Y9`^NdGf5z#H0d%Rz?IKO~sqKJ-j(#BF!PlsqYB~}<q
z^*X*KG2B(qy68o<o0rui2bB$Lm5e3Yf;mLbYU#7Jl}psk-zmoqS@Glx-+nIP>)_MW
zk=sazsBYnlnm{BtdTcxWld^P?nc{vk<E(QM)v57<Ba{(NQT#b@1U}qzyxgFKT?a?>
zQsIcw88vH(r-PFLyN-v&Bg5TF)SP_J^FVn$3dww<i4Yap3^Djmt+3m&5~XW|f6Y;3
zX)4g~bZyG?jMyQ&HU9n!j-)$<>oqtMuMV**;Z<NKZ(XLbPr1T>jRVo~K{v5{Ya2ew
zZRD=_C|81Yl)#W_U+~~@0(e)5m_jAtwd1vhrOl(^MTglyUE*dfLWr!RRs&W#50|IR
zvu@i?IA*B=$`BHi#gC~tGojMLl*sfH)52-yL%Xdf4_nWjQ7&B)`smgj_0Apj-UIc~
z6Ya?}?fFaXS*~agZmU1vRQI2-rq4FbOERTRiJUXF(v0LvQxhspnGl&WCNh3#<mmp9
zL%K)yZX4OLMP&1@A{#Zb)T@hWCwfoc4lvD2H6O~h7U~?4#3V{Rh~lW!O+_X3r_KX8
zM6_bhw<R7dy`ktPL6&EDu@|2nH6H0njTX&4nqX8>@=MfL5m9gi9{BX7$1&LB7(_le
zMfRvy2}hV}MbBez;j%lbtp85QSfnnRuhEt+P*-Ot+c#K${6TqH%F!1(M?lmF-Bk4Q
zi^Ats1Vm45&mU?>e^iJIni*#n@pY5cDU<BIdw)#lh?^``lIRxc^-Ls3<h=@x8VHW6
z>yuW)5uGEPb(jzYccG6&=jbD0VDMNGX@tsny&DqsuAKb0zA^S=to$pEgj~Iey901x
z*S*7$MBX@CPFTvnA>N$Z?{f4miTLHDUs`uri{21th=ryzW!QBnDXcXCOK`Am<LOJx
zJUj_Nr1y`4`626Aef*p)g_(yT7lw7H-zr@n!4bPbN&T&2IXn*^RKPnC^yy!TwjzH@
zm<Oa;MaSUx#%mW;t2Wadgmmag3UestI**tnGVD4ze$>4?A(SBuc_fbeY-arDi&9PL
zQ%xDO%!hYdPaL$K`%%4kMZJ1My?I-`byvN2Uw!aMee_g&{1gLE`{l8A@3wmSs*-)w
znm(N$5|U?1pJAFm&4mAaHhrZ8Q|dTV;_%40!I5M7Mh@*^`nH>SKrgj-Pg|ST)|M?y
zLkC$h=BP&wC<RY6F?dwez~`iY)ZORoMx1KE-7i3?VK-G%`WJf!=sDv9i`@eRO{GkY
z2)Ksm-6&83pJ6nr6;Vmg>!74wFK<zAnnyHIVNd^(f|FgT>d!1Qw{K|2j;NBO%q8{}
z8Br^isOwf(v$tDskhiG&Bptb5IC8&qysXC(H+bQT8W?-Df~U5}_qF}UmH7-h3!_e%
znV=<2wD;)o5$`B&G8WxedSxw2rveeB>d;3mT7@)k5kgFz;bf2;;jAO^8GS@t3ett>
zO81vE>I|`zVz0}=zq^pTGM0!FM=?x0!^n}|Zz$lb%5p?(wn4#viX#SbKKzI-3_b+m
zZKG#|w~aGI{^{oE##<2J01FMh!!0OR4#xscIl4BW1#Utg=_Xuocmxh}CKnSM8(V(x
zA-=oPZX0{%s%iWL$K6LC3V$6D6ed%I)fz!kAskV*sCso~u_TI^?Ec^moyv9YLQoLN
z<|L8fWFV}LsFkpe9p3BNJA@?7L4!X`p78mcq)KqKbgGGh3<vipCyy%U&#6COQLo(4
zu3cAe-qUW~(;oh!{qoHA=&?Wvj&9#pk6co=?69Uy6<Tc346@P9tdL6!R_OpW#gsbH
zlrqLNd06D+p=c;=(lFbo!D`%?*l!1zCycTzov-cRt-Sn2L<CW<TQ8YHNntqZNwJh-
z4=9oA-KWI+O^J7)UgDeOx5XZSLP=3jg~2AU5=zSN8sc|-OMMk!BzKPhISMJb3tD*!
z+qnxnQDn~tSq@4lGmzSt`g?cpX-7_|`0Fw=v^AMASxfETEw^o1tDHKcJby&A2Dwyr
zM{W&QJ}A|3=GAuORxf%{nNrDcgg&}{N8NKsnVVu+kgP74qT=*UjI(#|{vkHA>=wZh
z7F{EK4i}P)aCZX{wgD6K$<7f@Z)^tX^v1~mNAy7uT1*{-qu)_R@{RiMkz^1gSKj7G
zjOvPWFgW6@;7Bi(APOeHkyJ6#DwAg`wde2ZBdOHbL)m7K$Wefia3I9^Lk330JgvyT
z7;ojoP)2y_U_?qj-UC!mNT|?9QsbadpovW@e1P8@KRIr2!5trAFru935a}=qrlfk}
zw{mZSqw<0yG~j2Sl>_9z{f$)g2oYMZP-uuc7-0;>HfSIw-RsnaX<kFcLli?8l!1yM
z)0{A&PGo5IKpBM&{H8+k_|N7{uC!#TY0*?uW}5ln9_z{D%8%#O^FQkx-B54b*BHLP
z^-#O_#P;B^cK@k%=b?JzmYQ=xS+m9hFN;#mi&G;PPBX1oXxX;ea{Q2bh~CE<%aR4=
z+0#tZ6QC(_=0s(BoEA6Sl9UiVdbnlM7!!8U-d$D(d38TSO>a?i3gG*kc)vRo3zbyb
ziaotcylA3+#qNHBCczgUQB`C&d=n6rzWV!}z5ULvK4)tZ+Y4XDJbkD=`^BFBthzI=
zk-M;sr>K+Oy1NV8!v%dGUJHkhsOwg#nM;YXi&>hkWG%Dq-f6u_T<#MQ^+Xy7Tk0Iu
zaOTx?<W>VB8g^aoW83)~>W0nM*$L(a$=3NPD!~ksCq#AZSV4{%L6B^uB%_QNFoGk(
z>fne-E%Xs1u#zL3bwVGRgtHEgKGtJw{wt3DJ%Ws1BS=R3R~+f${hL+xyBz%yee_2-
zVscn9KdcBz6?3*qmBbkeol;I903)<=<(bqK4JFhHJ`=u&Bi+&ie8z^D6Bd_vNNAYA
ziUwkASzdR5vjJPmJHVc~Y8q~H=8$D*>93zgpbaZkiXZ^kW{c1>Rzj-Rh^Sqg31NxG
zCm%MVOV{uYox+<o4Qbw-BtD||BYO0RXxE-hXKDyg(B^~W37^eMfFltdw>-^~vr9R4
zKyY;SC-tWr+U4u&mAl%tyV|Y$+MQptdyfS~x9+J|uB!*mDyvqT>E<k)VO}yPlEI)K
zPpTKss@E>5S1u`x(VYI?`rSGU9jKWplxAg|h1@rFR%+Dv(Wc20BInOE9muxkKGi5I
z<SwX2=^+XY5vqzp0i}Suhpvx$7Q4Gs=LDJpF1}%<k6;R#L{ExJUo>=02X9d`XMXhu
zk8Bq%YNx+f&i<(0yrsQ-8sp4spx1rv2ukik+}E|yDL3wFd$P5xOm#`RwsKk2stj$@
zI`!lU>kH;Ydnt0ML<nwfHCH|)Rzo*Qi%#gHXZ9D5ZD%g4St~4QN!Eo^)OpF;v`Mz1
zLu2TBqKq2plOIX<0tD67XXS$<asOKij%w;NGMDAZaC-BWmip-brOwg+kRucdhnD*2
ze<eqRF_bGWf_B6SpnyW5=8Z!jL=f~w{>3^J$Ug~J>AwUQ;$L#(fBKi+&oYz|+q0QO
zi6JB!PC`zA`IYp14dG{yQFb;P#bkncQuL3gG|04ZEm{y`ES(H|B)Cray}NV~$<F=z
zmyaJ^aZcjri>8<s>-s2XmldDY_h%JCn$KQSFVSwOm(fR9cMr6i_tjeu)EoEIt5=ll
zGuD-v=Co<1rSnbevdljow_f^LxpP~6_&|O57&}n-C@!8;w(hVjS!kv=F=w)QZjxou
z94cc+PMsXNaE|%lK`X<%WT}gSc%qBc!sl$|ceU|5+XUS00%DeycEz5K#hz}(o}Qvg
z9wwiwyRNP9>~#;gn4F@!-_-?O<|?Xw|DpZF8FkM-b=wwY_a625DdA}>cwPmq<SJ<C
zDrn1!=-|B2F5XZ#Z^7ZFEJ{-|P(~Tn?VGK)epZPjltJvezYZNl@CIr~bc+gK@<ZFp
z$J(P?w!;^cMf31dn$we&c}ZH*1Y6gxAB)Zr9O-i!3WD@TNGf(6ZaO$>+9HIcFvG6H
zSts?8;OJ9bAHCt|EoYs4?kxXPf5r}_IQ`Z?3M+L2qZ9upI5G@TC@}v1h(7vVPla)k
z#;*QTE8Iw_kGOE1+|pMEFEL(ajE2JzMuMV<at-+F&_|R4ph#M?W};3$4Z}nD>)MKF
zWWrZSIzv6hkN(^2$)BgEL@t?T%A998u+w@Z$9n3l^1}t?++_ukyK+OlbVpcsbd+v9
zpu41Ay{%rptn52&U72NCFe7s1QuC=}Rum9nLchG!p5|-M^2PFLo_7DCdhMFB|F9sA
zf!DMYGnHEBO^uv8HF9y9>EID-?sLtNPp~&#r263CEov$hlcQO{)mi}M0;o2{9@G=m
zbPTvV$p%Dz7tTGFozY_M{CdyxY(HPOA3Peh<~wy+hPrZ<nw_IwyRGFtV<f1KJ^+N<
ztsX?==W55!DJzy)7pGg7EU+$LWZkgZ`u#cOMXm_P)!6}`s5dKuAPG_KGmW^8TUWIM
z-zy7d&=a(zPf_Njz>&R6mydAM34NpwykgGLAc!XIIyhp!ayTM96}!$Dge91vR3DY;
zAN?PykN!{L2p<25BV7gKud7%w?6c3A%3S0s!V#`i`mpFD{N8XxDqr*F!Hvc2$pRu8
z-C-aiwx6KNf8uDWX=S?Qz%J|2!`2f&D5owcKVDWYTvI{mr#tH9JL<K&LKD$fx^i1Z
z_3S-q&0J<)G$(S+D%05?tXO(jeUI}5K`#ommxbC39jJ#-v>SKS<7cevHd-<ko9EA<
zM4oBEOjAa>Ip?tTUY=Iy&|HovF@#ju&|B14D5fH8yp}$PU<!@`?)Cw9TOBL8gs=8~
zCr$}m<?TSvm0y!UofAK(8@4IaXDFjbE2-1e9lO<QH?`a+TG7jD`WR3n$IF@k^5l`W
zBiov>#JY5mb;VNay6>!q4_Kf6qM@f8d6;u=60G#vM@3|a<l6FIXn8L+IC}hxcHyG3
z`=E9H6w3nq3@IY1JSooJp~D9Z8%Z}EMjbsP;(s6rFE<?`>T|+TlcpieNF~F(B}b~B
zE&)gQTFE~({0zU#(SPb~%zlhl{crk6e>4A^cHRFpN60WuUNv1LY^^X6m@4cv-Oo^J
z%i%)^3k|0GBh5DYJ2ZJMvhTxE+I3~`6~7Wb2hqtAU(=1E&n2TB@YhLaI|*E*-&Tr@
zP?U0?M^f%jlozA!S=Fi`wQGmquOrMGXB|=BL>j{pS+N~DgfgcUG*N@AXU~xS{ohX-
z|F<~_pW`UN)j(F=-W`@>N3F-tD5uXW-(OVDURBTEQh(M}(#5+f?aE!1u)1>>l|84e
zS*uKo=SOZ{Z#w^jLIMTC{2)(zRwx=M(O5w%J;~E<KTt1TS9a{RWM!I{E;KJpGc8Ux
z9XM*ecu#c{!ja8g80&Sw5v`H0sIkw{*ym)ry%v6FbHA$vH2Gb+$)_tR3_l4Gz6Eb#
zV`pwGhdy~;UAxH|pJ*LD#yWGBvTL7m^RAYUHhEEtU^znLXfL0{>_4NdScN9FuBY5_
zj&kv)`s|5Tkgquk-Vg*$^p6T`MR~TOd|P3GP+>1~wdc>Yo7dD6KQiiMrf75e6l+?F
zhzN=wXK&yBed(h^4Pnbkj+m@ma)g_Xsd&*xU%t^tGSVB%0Y3vA$zX>6T^t4LgZri3
zlYgUsWN?IR8-IVqt~0XsD(FcK`0EIbg9!X}cnP3D_HOtF#{v|v0s^3cCm}oncGzC{
z>sU&ljH7cVAAUqAo$!{k6CnEV!*G7}@yFrp{F6_@KNjP#)Wa-?p8<azeg^XQ3HfGl
z+#bdADo4mSS+N~DQtLasZTm3YWrq%;C@#)A%0dQ_65G3X*nk0WR1v#wVQOT?G;<~#
z?X(;@Y(4b7a_YQt<|pNc>*{&htx}bA`JQ^|u6p?<-aKW`DeH<X)6(?Ft(#5f&njrE
zJI}O7dD^3V?eQCkp0KXlc+c{*2TwG5Psh(G+p;Yiwp-S2w(L1(J$F|X`lt|&sC8W5
z<E+Ed2TE`xS|h)+G1VYxq5!g($g+jc(c}$B_$69;3mdo#Ydn3a{d7a!lcQv;w9ZMh
zW@cIU9aXN}(VqXJ<vp#H|Lm)$4;nwX-RQ_AZOs;C%|`3)147k4c`Ou7DMW>W9mktx
z5gZi|1f|h(^R(yBwfhgW3+I*X`>biiB2Kj|o+^q!CXTmt?D!GyD0-j}B+WVSp&w*4
z)DSta)WgR@kP)hIMCS;O7(AjZfY3*Ja2<YN`X>L2^${;>*;DvW>7)NHN9Y2w#kp$H
z>o14nT8tvG6SM}@0EMwb*kOQ`Z{B}D3<o&t`uGv~6vD;*E=OG2M<0vqT>eXAV|?TI
zE&lZ92t4NmtkTH2s8}%quY1MM$l|936RIlvM^wyUzH(BKI&^v;XI<O&;S9)Py)%9!
z0+02HEUA~vJP3XJR!Eun*{pb>kMMi1NVgCdbm*w{*lFvDpM*Y=9G$zNULb(su4tEU
zs~2vnXD*8VQPxV+@^sV2@62#?^`?6FvCv0=^Q2IqBzsAMBV94^5v(4(&>lY1&fZoJ
z{-o^w!J2(RxnHC?TsF76n#Wb!Q&>x&<YXp@20m94pR1wY-58W;I#vy(k`gpw0Sc_(
zh@qk{97WpQr`ivflmo}Co3>fjZ?kUQt7IQjk9@D5K3Db9&-H%1@a5jq+J;@q&ZEj@
z9OHxt62YFY73OLAg_^)eHc%?C6*_E%MK<`#E70=MurIY=9%)xDsYkz8aF0;@e9<&z
zeyTb%QJXm0-nQ-gO`8fGB)tk)bdn=XI8ef_BM}UazG_m+5k?(`Hyo7)GmyTg`x($j
zf}?*C%wW7@|NRvyRB~Cir|`dvBlHpFCZvfalZ?<ZoE}O9K%hzLBXkYw3A>Ivpa-dn
z!6Rsrnuv88>u=p3oZ;+55B3(eBK~mJ1%@FET7`*_@4pc59nSa>Sx9hXwT4@)qTs5c
zkil1u0vd2cmG3THnRr6@y_v>^-cXk=%vK-Tu_M6@Bv6D899Ti>qx59KQRV`{(cz=k
z!*Fz7IeAezbw&B%nhHnfZ>ksW3Ysq7(mDEB*+>5<!?b8#B+k0yr>s9+Qs_F}&C_VG
zBU+&V3hNGzSb17hYVtiT(4H4)EMFFB*9){Fm(Agda=B}`JazO|!|ST!^EULkFzxF5
zUG@E*#?T}_vJ@-u#lISRUDU{GOs|TGE!@tU`3~*T3k{dZ@v|b(V&@@c8&&#q)GdeA
zttZs2$CR84>WydU7h8UjEgwJ%wE~B&KtfbxD{|NzMS>u{mrKAW0_yQg?csCn=5_Vl
zS!MM~%YrFrBJ1L5qLOM-oUKEL4<$sn6eKm^gVMp7Aj{j5KThC%qedZ(8Vim@WL->Y
zWE~t4$AxzYyH1Y7!cnR7N>61)O(5q;)PMF*5+s-ZU*HH89Pv(EE~kg-g+8KpB<}!A
zP@=yh?}q%+Sbvuw<EHVivKvDXAGvT0QE`ZHA|-?wK)s7UeME7LQolF#`o8#rkOrm(
z5Pk;27=)iekFV3Koe*&+Y7|rIlMp+`k|vG%bawn_B$dMveuh2UEQgN>jt=V_oxH4^
zx+EOn5Clr-5p28*SC#L7Qudv&W-c}_o>OVf67!C27OM4P@7;JPP<nvg$=4ngmNtN5
zU7}>H=N4(X4(+8wa%3xX#kifZ4o?k_yPDVA!0oN)^Vavd8~J?={NArT{>DCE1D~h9
zPEb<;ksFTm=4|Y7Ht;y>yIs`^UAE_iB610!ZamknkRkO<yG0<AqqeiCnxi15&=Hjn
zJE$AI!H%&mzX2;eB)PgW{e>T*iC$_r@P9^o=2#bqQ8sG1C<{{Q8EF&8*xIxyPw)@Q
z$gt%g2#zF8EQMC8%{1k|aYPicj8K&v5ru-U6^`gi;BA&1@rY^vmvHpQ{oeF+j2=)~
zGz?_^;ELqPux8(I^qb$CV8YnSB=JS)Q*2NLSNOf*2&0a$Nqn<Fgk2{?zB_dmRSGAL
z_;mK<&xlhM94)r&-DSx+WIc4sdib1zX(u?ks+_s5{-|?w{;qoNwtDWWa{6aw_c818
zh33VxD`m{9v@X+fFvmit>GCc0)+6<fj?!ISB|R(@Og%2rp6HDg)RWLqe017!UA8>Y
zqQ%lvt;ijXN&+H}ufEII(B-Y?@_p&^)${ur`8<t;l5#ha&FgLCbvN|78hM?KJdTEL
z7b>Z)%T>+cj4pE81r$!Zv&iNwigLK>xSaKz&Kl05*dp;?(F&bxU@LIiidYtDc`O~a
zJckX4XxN`X^dwii|3c*aUi?|fIjt<3En?J{OtmgdRc6F%@ndZ5+gHH7fH@~iE=V1O
zr_^YrTB)YssNq*3yxI5{MxEXM9^u5&$$&ok|2dLfLJUj!>X2F(Y5!NS=w3MCh{LM;
zgY3Mu8NcILysS8MDM$MFkx2fnD4ajM<#<fI^lH`$YSLJ61Wi0{kvh@5G<AaUBMKEV
zLtH;G4*Tg$^ifhIajGlR&AWG4aHAdkUOD)Ka^xrF_+{nvRrS<0^)!7V+zWW>Xjg?-
ze3#^CR^-yTpJ&dG+_2U{#|l3lKD}#%J>+S3@-<Mx?eL&b6Ex|arbjwW&!LGGhxXK=
zJ#%OhrCfJxfu~BIr;5W<#p$bG=&eh0`s#Z8_1(UDZeK&UuReU~t)bi7nCA30^tkJ}
zU3ER~hAvNir>m~hRm173=5kb_6}qYwxT-i@HCXwrIiqu(QMn-OwB^Ya-Qaw|`RLXr
z7O6Prm)fJ3A|UGGW%Y;C%JL<Qe4&Y~^o-^tsVNgREIMwf93;Y`LkH1tAjs|y_n#H4
zIKTm)`t?Kp-cWGF1}GyN^C{zG(C2=Y91(u@f3rRk6;3F$6^0{@;v~XTN60rlBRFD3
zT4HD-Y1aXfXraWWiars5@V#(BgbAkv|Dt1MsI9l~VH>;+(hZ1PgXF%CKB8^|Q4PG!
zr~w#8$hXD96iWm%F!x7Dty*~PASgum8QO(4Z!Y>rWWk7%K^+PCCLfkE)XdQLe)5Eh
zv*JISpHzuDCs~WlyLMXkA60U`R}NiJkNm70zNDPEs-C{Cp1Gx+xg}8g@rL@tRps~v
zI_%aJ=p&t@jCr4DrJFXdwdCM}`&poLgD^Z$(iPLae8CX}J(NwFd1W{PsAn$wGk45$
zcWj<JD&G^8>#dRRt(Nbto#(5a@2l<b)pB_2IR#lYUB3EGZylGnev!99k+)HSr(Th}
zPLaE=lcnp6B0)`^LRXCfSDidp&3sp_Tvx3;R~69&HG-g*PTMo54VGzAOJZ{Z(c=Q`
zmjdk(Ss^clCc1f7y?Rw8lVZ<q3l`mC3LH&W<|Zns6SXnJw3aQ)GwO;m!lHv9nNlS2
zLF3TGdaU56T6M~sgw$_99dDkF;K*<?;H;CGu>Y5HRN(_^Ec`#@y@z`hRoDM*DppEJ
zNOI1ZIWrS_M`?l}prYs_q97JTMWy%NLrCw9me6}|sie|Gnt-5UM_M2W+<(OTS+kSz
zh~D@6d+z7?z1Q_#H`l&~$(%X+Oj+N(*81+X)`nGpNkGf^sZtCO0=PD~NU#c^3B~|G
zK^kxnnAmJ~1GhkcH%Gt-S_TaT*Zt3ML=RBkunlM;vdbasnzsmQ5fTK~q3KO1eQa9P
zXQ0|i5X+5q?o23G6G}AT9}RmW=)c~4e9$2Op+hMM*@Uu$M60q6g&n6FH1^{s=S>S=
zHZvk&o-1jw8yxN5=RHtl9Ii4C3XaUevqs@LvlM-F!7TsUJa*A6zbF|K1;>pY1>UR#
zYCpO&V_g~XkvZ}1RY}^$wfdoAFKphK%jSje&983=lrH~nDJY5Ggl@WHU9+Kd9cJLJ
zXeCih_uBqk+ws@?t%1@nwe5bb>wcrI+wXN9Z`OCdUElFmeec`#&)=%=1F~+^^|({l
z`&MnQJGH&<*7dnt`~0o@-NDiA`@L`8>w4o}XN8*I?sfdNroGZTHhfS+Z9x!CX~UlZ
zk?pmy{rQ&l9UvkAgG>F*y7H6tHM3@C3_!H&pf`D$ma<q+U*=7u+W%~G)@19ISDwNr
zqA3Jnzjd$;HZY<<q)Y;|55Q44Vi8z{BW2Vnvd$sB9UMteP_Wn=|2h5<6eT!f1_uP8
zk0_x)Sq2b+)({*uk=Rre6ELxJBA~bhQxMl2C#W0XJpFVqrzsAcGa<L-&nM-aNAwYY
z0wTL-iW@h9U<XR@b$F)aA4Nt6MMXW%YB+7%1+z2~s}uI_-9+LU2FU6L|Mg}Qc!r@v
zsr4N^^wj{V&+vx-n6b<s1yX$)97WHHh@Vf122W<HXU~3SUc5|J9yn<p21jSWkwEF#
z*Jjyefl}#36Q_w_@68AG%tS3?xhHdFWL8`RP|A(-uxQJMHTuB<Z}Dk^>Dsfz5#gub
zurA*eC}HLSB|y~B?!W*@6ExLWKS^uL_UC(TeyMH$Yi;`*we4=ycfVQR?Ph)V-vw4(
zK^E=Tx^6dWyZ>I>`(|Cg8?}9YyZ`KO_q*P>-|@G5oo%qR`K_kSPc^N7s%d9$+W;A1
z3u{`Veb`ZreVjGgbqvm1f*=K=%RgCX?Fq87W8QUZ^u(pOMOr#;(GuJuWA<e8)mNX!
zPG+hIP8&4@h}yOj_y8h>5!4Mk{7C~xtgPCr7r_itJ(V;0$X6e!$s;1WlwJ29h$Bev
z=5`@s{3CFrOgrE}UIV5b*a1z*KPpCHO7<HQU=`QRaWylmR2Aw8(6PnF`x_iR6=Wk0
zRwsaY*cQ#HqRH2p!ehk>S&V>q1{Nq}S!d$C!4Wjki-Q7&4{!47uwX2CG|})8O;}oy
z6eRLt#Xn+gzIU4w&j60%=DDbopOdNWKIlDIYV5Bz_k*KT#-Y>3k+Vj@S)=5FRdz{0
zRC3;g58r>>*tAbikJB=ic`{-mlVe&XM7KgQtxC{VC+O?4^!<mt1y#mz!d$PI=ZFNj
zVO{!N8c_O%!T+{(716cLJhtHI`x@(d1C*>E@3;H$p7p~$0A>AJ-|@Hl&cD^Qzfsru
zR~q=Tx4+bO6wP(N{jc}ii%od14eh6Uf}LM#+W%D3Mz(^TC;>}Nl(OGo3l(A5U}xgB
zIS4{^{$`!OW}ar=`M7bQ$jjX&E|M^Kh;G*UjG1H1n`Tb@)EYGC2|$E72d528P&z<^
zWFobNKww`rrJg!=qE?1KI08_>4G=jvf~@-+9NC$$|2g`I>i6IXyAB-r-ZfBCO<}=z
zpCkO~`|puIeLwQu7rU-$u)+~M0~(OV*rj-H^2$}5Dm()r4V^j%_386CI2wRH8YXc;
z1bqq5Fxc-Ess_C(ajHOxkna&Ao}M)!6rLe|fh%sICvTm;=a6@|jiY@hP)Ww&FGU$0
z#gMyT6<@LdQSmvW=u2a7wUNJr;BC=I$<dK3mW0JD2}@WOo*m;_lc43s5gMUw*`gmP
z^%lcCTr$7<-aL<D`rW!{H`LQ*8%Nh}3822cV|{zqx`u87O?Mj*1c-jT*Y>CT*3WfO
zKjAvnw*3iY)ke`k8SUr$n1Y>uy5IK4dr?2$ZL5sKA8Xpu6n5AurK3Q^R^VgXa%|C$
zS8Xow3JAJkUHHKw<mu#Dv#Q$Iutmp~lLAUhwG0Ve5D?9uZcP5%95m=j0_Rj35llh@
zZ(sul1Yxbw*a0a5sMZ3m4jq|^@bB5%A3%XDAjYRE^QZwwc9N;1kCZt1N|di8{LlB5
zK&q|nPzZCykJ2zH8JQ8P|4F>JuSj!K%rE;U@v;9%9-sY-I6gQyf8y)7Hs7xP=QmCd
zqNnUwBRW@iO&tt{BPQ=uyf+>zIN}A7$H$7jutO|?^vbJ&EVvAaoOo~Q<u=YA1x)y~
z#k|R3#Mi|wa1lP5w^rYC*t@I5*n8aEf5JR)%G?L#d)7F5-aJZmAV7pZ!pu8u?5Z@@
zZP(Lc1V;%=A{NeVIeTWyg>%AU7KW!syH<gt7>&iqax*jv+#NYClewoZo9BMC95e6Y
zO^bHL#*vtLcLhplCE2-WUAG%5>BsxlkG0nI`_}c^_TSq|N~tQf{lQjY3Vi_ZJHTjz
z1-#Jk#RQ>^6bCzCN12oYBHPYHKjOjR%E8#5_)7e~tZcG8q;wKfuJH@JOJ{kP&M+2E
zH>Q1I;ufjsQwTah1SlNr@Yq#j98+jA?3HwY3^?k+`Ybk%fE8ciBTi-#R^dpJ_<ZcT
z|3Do5E$=Nxoy{=(uOP^`6X2<E#9+lw(-=Bb-UPfiIKpq`1u^1bZ-Arz{r#coUVIV7
zB>HHG9rDfm5&DRwEm;;}(zuWXQ^VrtMZz=0FY;_4=Iw}gcZqjTwXyevv6so#)5hVm
z0;MCUr1NIsMH6@F$SGr6m9cIcwH!%?C4M_{#?+RRCx%R$96EVI=(LGpBsAs5ctBGo
zXo}bJ*Xa0Mg#;RXEs?J0f3hyvHXb-aF$tP(O9MePumCQ;tFb_h00$h|jU7;<4gxpX
zxgYiYy(rN4ZH?eXKxDgG5Q7d_6m}G36n6MU6?DNC$L+$87ET;BTc8>D6nK;3J#kAt
zuygoCOXsj^hB4uD<MU69&&L`A2R;SMjV5AhRk3s6NI?ed015^%sBD^o5-$S0fSUFl
z{JOJFVo(1L9Yh~l{{%<8N3;NA<Nx1rgorx-{!jD~$*`1Y;I0V`LMvftDNSUHI*hc?
zbTma8u!Ez79|XyO>!czTgmY*jthkB>SMHLc>=X?yM7NwQ*JbzCfFm13V%L$|9@>)S
z*r@Lv1kV8P4bRZAQ$V+FfxI~UBPyv<RrO^lVdqDYlMy3WI6IKK#3M)gzyE%dY2#Zi
zofV$E(3P;rO<K^_ZG_W!cM6WoeJ9Pmr_8;l&HZQ1BNR?NZyq^s9tKL7d8f@?6~?M9
zdYl+PEO8z=dq()UPeNFvd-~*vX_F$xe;PJ_YB&>8*|B<VoSqr0txC~1ZPE$XDLM^>
zPMn@~5#4k%N}zNL5Jg?O9reu}nsp78R1<a8)=J;qv%b9_^_?iAC^Qs*0vvm*fF?Nl
zuEvIvt<G#DMq#a?mA<7nAEg6l$e&_Q+L22a!1A|}408IsQF_MMSL9v04l~u09OFrg
z*3x67+(aBJ?#<GtPw<W#YkWA`=-W3~@o&mDQ}!G1aX^G}0ZPiW22BcL;HYgo()awI
z1xFqIlu-x1IDs>L_0gj^vcs^IL^)#lzp{fkIgS2pas6Mg>wK*;=Q=U!{$K4n(ovoG
zI;wCpd8Dq&KR`%trIpx%4!R8zj!uHT$)OOwPFM(FDDmEQ)SR4VLr-XMbs6lyb<-#R
z09UhSO>A~T?7F5;2a;6&gj5k{(ZgU_A15-PO`BkNZ*bJ9Gwe{49?#jl_b^u8X)<V#
ztnmBNOH3QFtQGNfkA3_Jg;j%ROlTQBCp><hD|xXedAVoXR()rIcXt^Pq~_j}7<FRT
zfujTG%|qu5OuIwqBW%1A#<mJ0dxIXgh!j`%f|=nnrn<&_5c1L3C&r9@>Wfb!J{=qS
z*~bwxr??l-ioo_;E#!l?I!Vt-(ehU7SbBvdWn8vSU$xF%GtZKsbkq9!cGTCmtV^Pm
zqORVtuCl!+TQCK(u7jo;5G0V{1a%Hu(L{2B;Eu))NQB40=K`CTZ$&A^2X=7HF5IwC
zh3CFA&s;T0mnb=F>^tV&xJk02Qe!<-`zIwTBT>sr($W*il();a%=J(dXyIh<q)&~}
zBaI$Cnkb?GjDP|_gblz%s@k$c!zAFi!k1D>;K*Jt%)ebb!I9Y*q598oq>LQiGL5&d
zMo}da|0`PuMC>SuRh|Ms;HQ;;gtGvy9TfcA^%<NVd|jkR{3Bl+J=2saA!d=_97F*@
z*#Qu6A=*dSZw?A}8gOLqfFqSRVNWdyj`$M=1UIf89W%Dn3sR4cBfk2GTc*y*<2KI#
zh$13o9=1*E;I?g9X_ThskNi|#`CD%_K^YO-PYnT9R~#`S5dUb*N347lJbir2*!dBH
zqovRVo-JFwyN-CbAM@_6GI!a^Xs3;%{ph1}=HZLhk&D*hugoK-%+26voenjze3on4
zgz!ldB2aekfB3|xQBRH@89M6imXpUvE}lgVuE^x&kr~3{xxvwzL~T`)o}H|%%G9>+
z(hru1KXUAXapJOh_Bx)v%r{*IP?&jlY-rpO$b4f1gq<sQtt)J6qORPrE(<jwh(qtt
zM1R#pUA`?E=j)qdH;TD<D+*deu=9g;2JJ&|!UePJtZ|^yyJ4%Im9AwbX_R(h7A%LI
zG;RGl{V>D`O0&Rw_z;PHTI@2<^4Xqc)3rGh^hx84kKQw$e_o)3mH`E778QnvKvNn!
z016c&P>K{iMY=1hr%hYGZr%ME)&LYZ;s`M0Q^AqF+^Pyvb@Y+o$PTXi55ZAWdnr8|
z!srz60&oOA%)K%LYnyPABJrdhhoCGpu%OVy4$x3G9`M16<9rkrG&m|uVTXebj@W1Z
zi0?9h;2Z%xR-ix`J@w>ct-^yeUGk5p@7=m}VEgug?K`m6TM+X{<nc-V(Q82i28cca
zM-&TsYXqr$viOk{C7v9*VorF{0_twLlcTk5TfDoE8as}8cUBmJqm#y7DDE%Cv^#Ll
zJb2C&K%Fs}TG~)*q^;6dNU1va<niGjj|pXNmxW6{{>b&=`{9#5Z56k`ld)XOiq>*g
zYOCTrx$&OW$$D<GhnABl0Z1$+o0}qlBA{sJZtvkTgK6J#;>o|YE?l=@BrXu!MnuFd
zP!n|(jNGv<+3>k^M}P)oz7bPUw(P@KU>Ty(KoDO%OZ(9}|E-1UIeke~4;=pfQt#HC
z`syq#J5kF?L_cb4leINT+UjI&ZKk$ok6vEot)M*1DWmM9LFNc?hN&sqiuo*Zq%EAR
z&6%iA{M0*muy{$33@`?$8?XRzt+;F80Gh%=MJq+vT1m65yVh+;gZ1y$qd^}j9AVc*
z+7-7#?c^hdXkQ#DvhM!|j*vRv_P6>7H|_sheI$Ai)j;FM)g}2}Byd1CF}n(01O<&r
zNu1;SL+N0=DW8brbfW&T1E%1*)yd!vkkT8+`7QKa(`INu!I9e?jB`ZAOJ1Kc%Q4{L
z8Q{HzuX`m3>RaK6CHY7}8uf0F9qi2%QsAsfq3EN81uh8Q)D@oX+tEkHwo)%N!uAu!
zj#CEuXg4Y3XN<jPrR_Uw9z-B3jr9fI^h|B}EcfDRk)MufIqIDjEcy4|=rBMu<+E1N
zGb580Gp|IkM=di!Cwzz+4mlZmR;so-6$EK(QapJn+WIs-FI8Wgs;x=Wm~zU`)i<x#
zS;ygUg+Y{T(HXPkqFHg(I(5w=W9S?iK;N6^uA{k3Y_oIUn&-ba&t8)q8arn&5wBXr
zQIuc8p)(GhF!z@kTX*T}HtJa!8b!b|Q9bb*GhFME^o^<d<}`gnx}Kk`=Vj>Ix9DY+
z-by>)ihzv@=9*6#1ncfR?2U`_EScq5G)0>`NuTzG{@GaX3oksOcyFa#FySKYnC+I0
zEA|2_-USfjb$~T1N^sQuS<y$(ci@PFf}=<|4d}rU{Ru~n(<uKTI6{ma9C6F)u90&j
z-)RA)$J*g`0D<Pf$Jr4zBw?$Mek8|nrXU#_Po-y?`XOb?!ZR>#5M0Nq*1Qg03h$Hv
zNN~h}Nt`P4M-)?~avgjf`Up`cxQ-QDD9&K>bpca9Zy7x+Jki!iDKVZM+l6P?!MI&1
zINE;F*anoCEjnxLp|Ht0bI)1$2kasv|FAbDRg0eOUNj}*gV7-)-)<rLXjF^IpM@@&
z9udFL4RuV#t-L(F;FwWz%u71<!AfK2VSU3UeeG&(ZH~4s)sqjJ(%c)<wJquTW^k0M
z=cOan+PX|_UADBfx!U@CZOb;DqC?yE=sOSSr0E?h^&Two?kkYC`-r~lkdBGCW4FF-
zr;dL|5+6UBvs%l})-qEy%J^p_gJqk9x95o0ChMr7e2|+iKwh7!=V$4~rQY(>lC)U$
zjal`rS$4%Ny<irxyi1WcbB(@ik!QhVZT=)}`sezDPrR?Z@-z`aK#ABn1*Ha1*uGLY
zg>Bh^JC*Xbve;-;YroE<Rrc`5z{4QKsQVW<La5ZR{D?|Y!)c=|{QLhqlBsqap;GF=
zHm-y=bo3Db$F*_l5;y;E)`9$6|A-Db4wa`=Ft>~(D=7Ul903QR8XD7){`xc=nEdt8
zaF4!s?F%9vGC!^6%eW*i3>;yZgCpJ)CI`$?59VP9`VV=jf%hI{uMG#|P0|GV2q+QK
zFzM6g%V)L1KT28TPF{h3q!Tr_#m3PNKxE@+*H^|)TN&-K(X{8Jv8&8jf7qLxpvBJi
zES-Tq3VH9{=3_r>F>O-#!dVe9^Ia5K1w@Gb(Q+?A;}BvJn0MYNVds=_pxnE0iw=}l
zC3x1Rxz?se=BK;1q-)zV^evhC)+~K<roMrep_AFP7FcD7`L~)ax-4C`s4(<eLrWKR
zwkAWi9Kp@WNz-yyY3tT%YxDFqYqizcq7AVmv*SIPaY89z*YRg=s^AFSv_4xuR^cuC
z(f~vi-wBQ?zcb5$5-wq-vE!h3Wt?ZhH21too>>#Lsh_b98Y<~=a71t&z7ox_{T)yv
zdE)p-%0+SuUTEN`3wB-izrhjy6faKAA2~v$B+3^@k4S=&ioXiX-yZQ5p-1)|5Fx#4
zWOi`G#VE=e9C3LLj?|?ha-0CxK-}MI6X!}eQy~!%<-2TE^TiQs56KdfPr@M}(y|CF
ztL!Pg19mXO*s8@c*ukTD<SzJAV!xk|m{m>yaT1~TgcOA2BdR^vzEZ#wc8LaAQ^}6s
zQ%l1%YbML=Qf1|7(MN%-f8=%t8b%<m(lF%BqL0AQ%dcR<1;0*R;z86rVL8jdku0@5
zg18`A{|MfD#-xy#Ijs`rM?zo2`fj%QI&ieP%G`0v+;-ZKcE;R&*4%r}Zj?7UY3!*m
z^9~zH2@NZ@OrO;1vvDC4J`0&UEo>>?7EAlB@NC}hJz62QS?Oi-*j2OQd#mz$tKyoF
z-evI2Wd^^sHc4NXsO6=)*QL2Pq<OZaX<O5^t=XQfIohTSZGDy}FUymkt>vSYR%vUq
zwY)4FR_KvTZDXdsDGe2-ZOG6zWNMrEGhN5cS(~M8+@S9-^5PJ&05n?WNQJR!tG*^j
zTb-z{j@QXm%ue#=q!{evCx~v!%h8Wj8pUUg@~dX$57zOYxm2_Angl@|JYg{Nm6WM1
zp5s|CMVmiGpEZHdAY<szr(S+Js9*mk<nOnIM(7sUxij=mpzeX?4vsPjyhmFFSy2JR
zI(F?AY=;d8ICh=l8K~RYx=nCogg<s25h(<Bg@zLPB_lJO74iI-?o5jy<b?MJO1*ca
zh=hSZjjl+GEjCQDh|SN4%~v>6BuY8sw)}`h;TOo%3~spXjEjKDWDWg;S)`YkXFx#%
z9S)9^{0ojee_C$>lsPzZw28t#m*M<#a0G}{b8w`<$ZsjWj=TvQ%U}vRu7Uc7wNtek
z6e74O8x+DVJkmIB^K}y4$^*d&q+BXsWaT5}TX9evCHWJYUDgq!&I$D3Gfe|v-6;a;
z_5@Sh+p@?jXBJ8H5q2H=Nb-+f^ndG}$A{W>9ef=%xWEy0ATjDFruxALL9-@>tehJj
zzaTPsi90RUvu&Hc4SjUX*mB%N8DZCLKV$4T2ab%L=dC^V&b}|1JTf;F7%XR*v_MCf
zO`F(q>g1NQr?y-^KRkY+D`}ZnQ-_WbQ)HHsYH{7F{MD-Z-8ykAs_Iv(;(L=gy`x_m
zn-6%iQ}i|Q9<Z=B)t#H@TA%9KOw06ui~Mxkv|FWZ-Ky`}qi^4-Z{4PE%GdK&fhK*U
zG%YVvUz6-vpXptf?%9;1uSb7nX<N5@kDWHE&KaccR$n!%xPY(B@{{J)onACrPOO#}
z?_HIkXHot!(YrQI2VCn&Laa1O&l(lqh$gE3!2(TX*UTb{NPH>UGk=%9BAV3(-3!3c
zL^yDL<jCg3h6TScAdtYhZruZW_kIGr5ZP#&WR3@S>KNR*O+fdqa<F{|Dc{t$AJY&)
z?b<i^M_yglgf-0oR#Bv2T8j`FrCqMzuvU}~U`*x}OZ^Q*h(Jo-JLPj3R{;@XfNUr|
zqPDE<DD#hYLtqqVg)`1+IMKKUcoq;}NF7c(g2ZvM5`YrD(X$;CD$0mCP>PKJB4y-&
zBjlXcfFoIh*pF5D)TMI#Z>=)=0hN#7NCC&ek<v;iDTO1zNNW)S3K%G43;{<9-Sney
z#17ZbP4OqA1o;#Wh}1)1%dIs;i9aEL;s$LT(IL--0zs@KE1HPM#Vt2)5&U=)dB{Y1
zv)X%$5VVrN<_T`q%HN6#_UN*X7@jQp2-98cx&i+1b(HufJ{kW=(j`U(+mUsTQJ-P#
z*d}wQwp=NEo!}@V!Lwz%*mYaM(Fq$zqKu5~=WHllu=buecYkFtGrJRgbkIvBx@2m&
zEpg4A6*g;n%LOxA#w~Ucr<WM5ZQ9`_eW?%^<C<B0Gpg!_Re95@0!P0`9lsfch!&q0
z;}E!I$7*OL;E<c_#$DP7`H;*SwF06Yd%S3_s<TG*C8O#hkwsz_?%wa+l<&=h<-@_r
z^kyb{@-n=uQr#@aiJP;2tzLf0tfZO*;ikV@r*2rsf3?su<;)<Tq$-yV#htrS%TMyI
zPBBvBMLiK!yE<JvSZtJhX_S3qmSfZbqVLS&Z_VN>=26PV9yfL!^~NS?^JfT-=1$Zn
zkJBfNGv686tnc&wWWx6B#e$VjJoj91k7t{-X-()taMx~+w`&{Fy~h)5J9iA~-XpkI
zpWx?u2I3zne@f{i$kn!On|M3{=p%&9;|XT|A}lP3m4BPJ;ML1ei2&FmXA>Jlf#8TS
z-w_^mI0D2#5K!Vz<OgwrxdJbU4Gr0&3Y?82sS`qPf+MMI#it5Qf+JfOh%)lUkuu4U
z{Qu#)mcAfTIO2XCFoGkf?>}(#40snUNpo;yBZYeeYXT+TC!qE*1-UQwIY*4QC*>ab
zlOA|<_Mjp6$O_KSJR_?u+uQ<V9S@&JjV{J53UIjsqoRUYA6BgKs0JLt*J0PO&N5Vk
zO?s2T7dU!!FwPO}gAaqoj(vR2<dB%TjW|m5Y}uvnD)eryFgBksx1Tb%oE8u%9AVe(
z!asttJ8kZ+H1ZC3spXi=+9eCZ=gw?7XGX}}=^?QTBjOiRC{^2EY8*Umlw7rr{bZH>
zZdKe6eI!t_x8>K(l1t{!N+Uaq^d)qJJ3HQ;li<!v)bh~|!rf^{ii~4l8I@Pe>hH}{
zKbj|gkXHSTS$5vsTVgPI3hB2l8TuL)UCT;z<s^GxCyta#Am54a%+sj98`g>6t<!9O
zwJNWgrDx2|N4yY*nKAn6m2ll8eMqduDq5-rO#!P=ddVuiW*xh3mH!-7{EdyH3&a^3
z1WIMD)0Zvr%$=;wo#>hIg*JVHIr_bjS6>b6*Uz6Na=^%Q&jk_F$OzV@b6{6V0SoHX
ziI+lnNdU;|Ez5rdwr?x?$YlNqeME&caMX@9N&W2^C_i2zq5GksfQ6YvrrqsSO*?v%
zBaG54$G}*s1Wav_6Ql*1K~BVw^Oxb5b2zAkP)6wnb571=Bxj2#B5a&yH?gJ^h!8Dh
z)FIePA1NFG^MA3<vT~6e(~hqAY3HAVMB8>1W>R5F;Yg_@TLsHcqm0nS$Tm1)xBvoN
zAvf;aEH|k3AK41ro`w>aGx_2pjY|r&DNuEsXC*NVPtf^el=bFjl_$uxMMU_wZ_ny2
zf+Os@27UA_>mM;&)C7H`aKuz8F%0%1%a2jNZp@e_^Uz0g;p-w(mbx>sj&|u}xq_oD
zq!*nuwxEp8+D%lFu@k$FGC`-z?G;AeZg1i;Pa2D}%x*b-YO~qXTP&Ovf_=zxNUPTB
z2da!i=Z&M+%(CCCvK!Klfu`SOr;<N^v~ZesoS=ZPmL_vd?$qeWZ0fQS*BYm-rfSM=
zZy6x^#uO~vvQFNX?djXrso$;R-$@qX_JcBunnTt`tUGO`D=WdBljMQ8C^=;wzbf!K
zaZ|R(ZRDQ1X&wK;g38`=(p<YyPmR^GmxDpzqvzP6>8nz-jVzM^(|*w^y=s+yhd#0j
zu9}5cn0hw%osvp@TlebGF`l_owAtf5vnOa%#_6L+H-G6R|9<^s>14aAi61^G(+!Y3
zZQA&?ZSBVnF9P5Y=H0!k%)_?tV8=6<4ZMV5`r}OD)e?&m(zqTU0_@0@5-p@lR;jaR
zSRRp(KmBPB;OdC4m~lk?3Ea>@&PN<q2vQ*8SNJ(c87a|HCK)h~h+r9F);IA}*XgTG
zoU5e=xl|jK4vshz;2@%OqMCw|>RI8)_m&B?vlUZ=uLPh#eZw`|H}a=jZiEc}6zE`x
z`0J-ZKDVi^ja8P&(cn(i&5Aa(%~vjr%p=1DM1B|yyguG0R1)Q$;OnSdM~Mc4R4JTG
zgerCNQASiG9zEJ`^ynw%PJw5D8E_>ncduEa?Kte+QUb|fY&v0VvOy$JQYz`Z$<8k3
zl8zg@sQ|f-T8LW8QrEnhEoMw>I)7%1<#WTxs7+eo*>=c#@T75s*-!BDo4^MU9lL3j
zfFm19<-b|Qm(A_R4TYo3Xm`r;h@2SrnpiD2UZWCtDU+d>%;P_qCqU3`>*O72$89v7
zx@F<Q?5^^z+n`Gj>`K-zi%ehX%1-dCU#}ng(uB&Wwh>gVp!B;aL5`GNvq&u@Mm>3@
zCu@baY9;YMo-AgBnI=xq^7D1Fr3%j**m9-cnuXt)Mc<l-u9$}|nFqcy_E#B%dBmq_
z^JlqdPx8ze@0t3!_QfaKYp*@Qgo0h?1ggQWQ)h8YdH6J3)HWCfOyso@9QEifajN)7
zSPKkvG)6p(aIcr;<|zvxX)nkdFVxq6N3a>^)llz<s3ZJ;m6?BWgl{ndBX7v0I?d@v
z$-e`lN0bp)B{+)oL%P_i>jVY94vtbuf1p0dfl-5dr4Zz79Vl_Xc7t1x(SsgTbF|x^
z?%FOCsV-Yxv-7F*r`qA`08l+Td%xi^s(o<kAc&`}Zls0Hcr$avq+TOg$G|9c(!kLm
zmOXkkV9+2xNN+Nah7QHF^JDQND&!NYI`Pw{i>HUg%@0pnO!SUBf3vou(7WxJcQYkV
zPZ^ufN^9_s&YL^H5$*{Q;MK;iVu_haUqJ*~#Ddw)XU}K`j#kVKPr#^4()O2mk-Z~V
zO@ITA08!aZ8%j2y1WLbIC6~>umEM$OPfD~Wb-62f894If#$usqOfZpe3s}%Wfanw;
zx+^$3L9?M$^@F+RoUw7Yo*E~JNM7Mei$Nu6;HdbFQF+}I;M}sn5tgLv06ne*Xq<<x
z*V8kAzbAWz;3zZ6y$0kGt(2t|mV048j$SqkzcCBGm3H_W^U&Akp$jIV@4HLAS?l$s
zOFXkDx@S-H%o?vv{!C|qa@ZTn$P5}31n1DVFN?VG<gw*sO9N0KOY$b3^<z0I00q9#
zP;jcsMUv2<2pHGLR8)f+=bvt*!knSrSHK+cXxOo}z$1d>2$%yFNBsVJgp*bOe^o}x
z21EWCsC6%lVgrsit}Ych^wlQxqprjOl7gXwAZG_CIV!1TOaB%v8lc2AJWU<B=GdJ0
zaU8_1lYJVtF6rm0@~YUq&4rqH^l3B^_ODqpvH~fWDks20hO}g5F*?D7gIj=_lg4F-
zwPYPJa$p0)BLcWEX3q)J0!IvS?b=F2P`7RYN*}%aa^TzV1iw5qP;fMqti8Z@-wk^E
z?SPRZ{YJkRICCPxAC|NzB4vq-N!Ts>^lc^Ht+2!xb*IfOUzy-&%Q<O)NZOaiE+%2C
z+V3nd2;)Q@BrFMEJTGM4tdIq>TdrIfk+fXHs5{7%>qYY@2G~tOQ0ebh5nG^S@3SrY
z$tt{JZDEPkI1hGR+Oo)u6|Oa;EUnbCQ?#x7y`)!E{cKf%8bDMNb@G1H$-7a4BWY29
z0%f=9s5d>{leJPyk9ViWxxrEXCcXHAdF*?^5z32J0fI2?KodXug9VShrQDmfT9ykW
zS}8lllb!5dn@Dhl4wbjJ#CwFK#jh>gx+B-j!$9df^T;>mK0LD1up-`V2fWetMABTK
zG(np+$@}pqA@*vpj930t)*ABC<C6E<E9m*YtUpD(eIS5>@Bu!oc}>|F@?n*pQeKi$
zNh+#=m&mJB^2rFP<P+5(P_kEEM!+02{j;4%h3fAh29A`dtF7uvA&B2Xx@gMILC%qO
zu8JA1NSBQx7iALvxXuRD+h5_kG}RlI;rw%Y;09GwJvcXOqX~-<W)jr+DG*V*2M8eT
zHV{xB0w~x3c3QTSFdohfX(4rf{`x5R7F-QL13uu9TWisrC<P%xsr1;iIYu3>D1}Y9
z7fB>1SAxd%po|#PP)4?A<kzcrkVJEJgGVC1PUeh;zeT+uvFnIrAU1X6D9S$)@7-kP
z#O5nzho&u!z&uNj_3Sz%5vp4;>Q39r=)Af0ytz$qWa1p{_=<=-V^4MKL#3UW-z4S-
zzb1ZZ`0VM;XH9FdXijJxjCZVO`%y2c=vYJrKU>8&tm2zd#lN$)N^V7=n96Ti<u|S3
z>n6kgmNFwDMoU{ko`N_>P-l?RxoO(oa-;03bsU`n76497>k~DgNrA{l)@`fg8*_7+
zkq&7PEh;QE)|Hj4uivbfTrewt5-YCib`%KWw*XP)Evw>Y6y_xy!p_s?s?9n$%8Jo)
ziE~JDNgz70c1&IE(F;zJv1k-r6C4SYu3D(117BPFzA|@L8@mgQgdA<je9yee?s=0v
zvnT0O#(Up<^KlaPhfzU&NWd$vJWfgczI|E0lGJ`)fq!R;1yR7E3opfwJU({tn3PK5
zWhs@!RE2MV5Kt0J!={B5nv`rmWm`T<T#*gm_E%YQjy#GitVG*ZbWULBpMl6xCCI<a
zjpM+I41Nml4hkIWj*E1zjXs@!3Wf?ns9m-5NGG_5XavC9BE-LCC^d=!3;LpA3$j2H
z5P*aMN;aB!ME+r6!n3I#1uxQC$fqG8RJ<1+J2XtTC?@nBN{16<h<JuIIs+mi;BaKP
z2$zJTK&}S_8AgC*5uqB;PL>bz@6#u^SFb=wZ&rV!Mi9w*qecZ2S%-5(0o4!31OuW`
zBOe?0S@8U6E#el0r7nv|k8x!ud-fI>J1Pw3jG*bzL7M^5d2=()5t@jQ2GZQBjYAcE
zwjcIp#A!JzSa&RP+1$`+lbg?&(tO#xR#=8<Dcb&W;~?o3*UW<7tU_B2IXFTkp`L(J
z(GTXK%jSk7UY6ubk9Mc6h{%j~;T#cqy(&i|I2Jb_;jg}9Ro|sW9hWVDYQqtbRe3wA
z<U4a)l{Y<ALiieR1Yy2eFa6r8_)*kQ#jPm8Ec)n{KnWaSPl6+Y)$?|dtfytgFd-}Y
z2+DmeP$JlSi+;G;IDFnXeAzm9%{+M3Jp7%-_P`};H*2+=G<O{{)@;$2FVp5vb1#_c
znLEid^$Ts}$R}C3W5fs|>M1GHgv80`pZD+E$G?C7CVlz_b+a@6q<$Uv>f_&~b3@%N
zUoQz9DeI2$Pzji$m3YxWNi~J0KW*)q7j%|VTS}t-y7fgI`wBtML3O_BmLK95fd)Fl
z0TJp0`DgOTG}TnBs3*|z2$U4$ohxy0#L3(gJ@__`s5@1iFoOnBhH2NV89D-h1b`-y
z`KDsv0V^(&k3s;~Ggx<WzZ?WdoWQ<1lYP5!c_<e_lgmTxZvO}n)WSbJ93>^>Hh0IT
z9z6&}$!rl-h>7mDsU9>D^a6w`HUplKfA2m)&pj7F6%JOJe`^Hs43yg<;V9tsVSc0R
zwJhHm`PlpK!`B5YnBF3BNvrhbky$I<C;}$#$tohOZreHFV{X4-Zog;>h?s;W5$Oa0
za$OD<nwVZ$_%bo>n0c)xeco*R=gsF#4<RL%a-(ZD=!d`>VF2HoMJ(3^WY9jgJ}SIr
zm7qs%MHQl?el+)8G}j;SlJNvZkWRUwSQoX1@Ke^U)2Q?XF%DQNFw8*B9jp9qROMaS
zFTWEdTlxV<)%a*067Dh+T&b~<R4!VJKB6+%4`u~A=r+?;0wOUZ1yE7wrV{XrV?`8q
zDm9KIDk&?;y(-1MI>EDs#Hcm;p$hN8uLR@3N3}y&&3%_lCeF~s+scfMJH4^-o&_`9
z^QXAyP4Uc{q`mv@)9{}x0sq=C^bv~@z~BW87#P@pK+yC30#$uT7IfoX^zQB7t*c+h
z_Cn&}HvuJuCS~0LC2)kW`AR9yub4f}<n1E^PIJKJyW<NnC2W7YebTlS9k@B)Qk_2n
zA|>!#7-Ss+##Vvd_aeDM=kio<{I2s)frxMUHian%O3*BkLjHpzxnFb>hL!@Rb9thk
zLIrCar+-0Q7;^*-j+O6o2n`d|poy4A-~==gzyVDhw|7{jg;I5dj&M`Vw+6uTz|ryi
z8PIqanB1*f%k*pS-s14~r4Vj^!4W>u+am*Ce<Ofg31WdrS+$uupyWS)YSZ{dp;<8z
zxpD4wxf<-j4x3@veilPcnlN=|L=)j?@2_lkpwLUKT2`z(BifZ2<C;0C#h4GCo-nTI
zqS;|7%iQF_Z9n4Ok5Pw3^u2k+c8kE#(OXvWEejk8lxR0C{0>4Ru&-dw(_<nt;$68k
zNN)n(w(7)qm;EBBQ6Q?g3yvE8lpS=<ZJ8%UZ>D7l*O3+%0gf^fJ!>}U1?LRFqL>YI
zAHQ`BC;{hNQ5c!%!6O$89Kg(MEp-`-N_%os+&L+(waFf`Cy0sNSMEK)iWP7RHk9^X
zHTPc;9PPd!INDL}-Fi?bMri454>&?4&6%uCo2b40_T$4|7qb~Bl**8*t{u4*&ow5Y
zL-;_C_wDE3y{liR4)Tt`5id*ONLhCT=J{$RC8&&<G*pArl+Yq?j_5kzV#imUd?Zi=
zPc`3zYM-z8B8dJSO{74C%wzL7I8v;L`p8!+@kP}S9n!P&kFSFuzUA9E!f~e)=ydb~
zze^{offstSZ&S34>XRcxPk|tHo3{BUr};MZWPl{v2h`9TP(s=9r+S9yASUcUF6k{{
zth=X?LhkQ^qqFmxc^AAC20ErNx?qh{Ev*;Jl0Nq8YyQ}EZ@w8Y)GiP-V#H&k-i7Xd
z?7jB{M{}n%ja}F>V?{)6yn9o=wx`(31nVARf$Zs5@rlqxWJyqjs=WQ)0)354o4Qk$
zMI<kYST-x{;}4(t=!2)Hj&Gi@D4d)N7J+5O*nJdpz`3|#fukcg#k4zm(>l_KBQzAg
z5;$T?H*2kyid`2Ik+w1%9Ib*k%g{FN(F-pb<-ZH!K#-`U+m<LJyOrIsXvfe;*CqBZ
zvk^yW@ewS;w04tD?FewB_zi_1AWSR0B_<^}!Y||QvevOSv<K6aAc~w+*Xkq>xkzg=
zJlhZG)a5&P!PtA*+=oSX)!co>-2Jt=>!NThJIN)X6!UsLI@+@c({38mvYu%ZJgl+%
z&O3guzu|`y$~+xVqH=y;dtFOnS!p<`{rmep501L~QS43_JXBI+;UKs>rIM7RguFEh
zo;V`{s1QVseH?^80Oc!nN@4voa3N+&@E+MZ;>Q<#1h~Owb3nw!*c29wy-?rEmGeb`
zW8l#VU8!yz95vpHbfTI9lrNMN?XT|6xe|eZV1b}MQ95+n%to1gwb*+KWpd>l0bkNu
z3K(g8i{97*Pf+90@POz_ZjI-uZjCM1K%*o+Po6L>-U9D}@r@V6SSJgGJS&qLygODq
zdh;zbku0o?J{mCs(~gzO39ftWgAe@YOl=ysux0v+R%;Sn8&-P`6zVLohw1@J(xAAH
z8+(X~Dbcs@XVwy1$ep-2JZ@q5%DJs3k8APXsHdlV-pn=*Bh#P=)@V@T2W+G6=<fob
zL$_p$K4M#VTg*IQg}rwKtL%)RASK3~298#QuZefd%u%|wtHcZKj9(-6+uhEhjAVz_
zy6kT2(mNInh!uWs?l@y)<VYa}(MNF+FxZ6sppVLaG%?|PL8PF>PnX=Vj(%ejzK$v+
zxLv4*B-bhlIQK9GOmq<CwhmTf+8KK<nhHw0zcKe-F?W3}INEW-*jnOUzfF&h^(>y@
zUO3ggaGGb%6wlbPPvLbk!9DDC2ynC#X<sNHpaj<~I3nhOiM;*;{Chs@*R`{#BtcVS
z-AK!n*T+c6dsNm1lEygMx=oNr3ut9KO;pPD8Z39^2!lun4Z%<XgUrwrxR9vkHd%py
zA%Tv_*%By%r$n9coW=?2TdD_NNpm!a;K=Jo)VkLY7YX*8j~plga3!KjhUt(Wa{j4K
z91uA>9Cx5ZT@gE|<Bx%Yi=?T0jCA4J$fdRl7k5TEHSD(xm9Ztf6|NA=PzJQJoh(k^
zGI&sK52hM^7J85wx<HrPpI>2eLE%Uth^K8@0Z~yzIbz*O{TbpRJ9VNQjl3Y{*1^#W
zF9Zx4OfqaB{Pu`<1WHUBjealSgAW46jtv+y#_!Wl17=Tax?+AvT6Eaz#K^o%&z`;d
zo<i^LaszIPIww2J3<{p?Jm_7UBN?nYv98qR5wY`IMbBwPRflmOH6Qm;v)PkEVi&YZ
zr^I)HwsD`A%vqSa!@r6Ga+=`Cc8<Ui_`=dV@-5oLOilA-#Nr=CWX49UNpPc&R_AE@
zs=USIETBG6JvMg4mXp?+c1&C((NLv7nA^Ux!-^7EXEqXjgr~E9qfRjv$Ur~@r-3_G
zBp#VGew1HlKI<?9!Wm=jZf_E`jG~$Lb+65G=Vf@-@$0EtUY>TK!h3+&)UVBb-<W&s
zw(GLF>ylzxB#>jnUT<6~;ot5h(>zOOY4fIP6DI<tAcB5JjtU(18hlQ`uweu=`VDz0
z2+pDZ3nYI9zA`kZ{|f=w+dX?pJv4|QUKYfivhH|&?b-#jZ5!axI2gzX2{YEZHEUW0
zP}q~09Jj~cG&$~%JRk{?kys;vh>9&~@+X3X@bD*M6CQy(ATfKPh?#wmBZxQh77^}`
z1S)XJ$&s9?#(dC$D<K9CR+g^gVt{UBPas3yE(lUMGA$e>e?9_DG>jt7=c<%W;n$_Z
zP(KGpE=pC9PNGR86iV%IgyV=YJ(D<0KghGoW$Rz~f1AhP;<;<?ozD3QdbaN!`kkmA
zKerYTE*F5V;ZM2})P#piL^{?Q=bIL}58SMbNCuD2!?+}93b#{Q_+4}mkGf48NCv+S
z9Rpjpk*pSGD|++@WInxXH<nj^Y{0;P!9yfh0@C~a4=8LB@b2iqcSi?&G&T@5^u-rJ
zpM2^!X;RSm@qvqGHBDUFGHYdcewu6jD$mYs+Rokj_8mI;*X#4hwxiClXH~pAJJyvR
z9kFtLt0gl-XHN?K_=9GYG?_86#iCguX@nE3a1*z-7bpFKaqv6yFdD~JLqO^9O=;k$
z=#EuzTU;dM`QSI^mTDt~*&kMk#i&b&Tx}OL&ReGugoCaDN2NGHkPJ2L6^^QEyH(b-
ztGs9bY2#??S4M6Qr4>Bsi4o}u;hD*<_4zs&DgNHXbd(?BG?+bz4oo|x4Z#sn3g=9y
zhO`t(d(UMaHp{&()02mPM3Q?pth@IhOAVeE5bgce+=c$SVu7Qb7jPBL9o2@+TM=uw
z$g^aoXUPn0(M)aD6wic-&oEvQ`a5z|&>R27dTqf&USg4{pusN%4jtNL2-{bKUK|uS
za9~is=YyyT+5d$gIB@KTwvx6?&V_`9cj+3;z}TrvFhLHwmr*fD^N^Gggj544C|MDP
z)`7U>N=^u;6m2Emho2Qi%_u*&3keS-rj&-=0`8C{*=jN}Gv?C+LTIZV#1%nB{1AI!
z5<sj1py0QFFhewYhl|0GL)wvl;6srXsD`N4{xpGA6c@?w257oJ*T&ar^dpiS_6Lq&
z`S`A&FY1q`jzFZ-51mNo?HMs(*kk}<u8Ib%qT0wU6BW-@(ZCwVImk!+E{}-7DjHyC
zpPz2iHjo{z-0%`Q5@<%j%lQ#_&pub%p;Hhi^K2Oe49nk&Vu7%r4jltPP}}zY?U_37
zB4wSJu;|%a<|(MP_1ZArql5!dV(X)^LGQ4h@)(wa4g7Rm(8r$yOqdk>#d!beGlHf}
z4VpKzY0RP)X)8k4CWq&xL~h7*lb}l5km1QA06W#4m*UDzj7(cjtU~zwX)ULI9y03P
zX4o*FkAHH(jF8wxp*iuctXNO(YK_3u!{1m(Z&(Gl1Tu$J14_58qqnUBa3r!V(@A@;
zN_mGA^68Q&u-|G`k}Hq+oHQ+Oy>|GbQS`Hk*wadC+85WfKX%tTRuffL)28Bn=kgk?
zJ5fnxKbZvnWs~$uOhR&aMpAfgs*6Afayp1Z;3ot`cjV{Tq0t+^j%j!3x_RJ&xv|X1
zV7ccQk7RA+dh&DJq{rqHc21D_5$~Z>=Kk}>p0CY4SIoWFtQ}X)9bcQ<E;55=ZaZOa
zF7dA3tjEM?%cVAjwrq~RaJFaK^k(D61&#eAh$Rl0<{tfili_a#4j&QB%Dit5Z}R%<
zL2teNINAL#z05+rqL^MB6#U$?{@r`PhX?lR!vIL4AM1kzvwikiiq#+n0leilZJ2T*
zM@b~1eFw(OfQ}t8@SvMSPMGQNXnr)rqg@AvT*Q)qJ&`4*Likf1iE15y)J3@bkRK(A
zO6HMRjw4qHXY00bR{jVZ%`}-k!P@cf)Fl8Nq#yu@I!JhiAEiHN_)2^VMv%s~?YO)E
zhzR;;ANH6I9eu=^(ug)}^GD-PbsS*YAd=q&vl`95BRWy&K=;WoV#vV44tK=m@hQJ$
zwFbXZXijX-He4!*5aj}Q%?Lo_O#Wo2b!(oF;Kj70am_RicI_V2r7QJJB=dzSSC%Fp
zFtEuBF9h}O<3I34hQ44dx*;$54}H~t<hwy1eT?ZIIQC<*jRHRYIPmk&K~umdpZJfT
z7%+W$(4@)1^JhF0v#>>GZ0M?lR{1Frd8v`K{FKQ2WH_{l^yRH$7ltjL8#-e`$ha|0
zU;nS*(eDS3{rK@2lUhX2Z3#<2oOT9F#P0DPgkfNU72w#|QSbplPE-1*;1_H6Wpm9Q
ziF3=056_5ewI(St55|n_ylr~HC4*2RAW#gSP}8yGUWd|qolEbvE4|mDq^2ADB{gkI
z0Laha$jn}&Q|BiqH3BH*rnxq3@DiI%Xq*^wHhcs@HqW4d$^PLVB=i(*n6pMpi}paa
zugi4j=epNtdMKw%8X!6B2dcc}(eJ-(?*7KwbrpSN?!-U(+T3#1+;Y++IV*n$OF4U%
zfumW%-7TK0fuqmA2x6FecQj*H0B9OPakJq;yn>;_0^b-O{O0hWS6&GmJR}e(5k&NS
zKPj6(;6*Y4;l>#l{d+tcKyF3nE}*FigCvrShU(ZU5R-%P9}r>n$$lFdOGVT>k<G*y
zjvQi;C<|ZY5TqbZY!NV;h)rwskt}52IttS<kRu!iM0A2U>4toYpwcrxgpNSA+c7?O
z0IGr)1%dV*{6vAumZ%I#NCfhz7=)8qOX){PnB_Xzr#A;jga;^#j{N#Rnr+}=S)uI2
zx{DMx4~t9GD?FY}<zcOffu~wyjH`0Qux$U-@Om19CHO9m8|v83#S`n4ZdFsB8q^#=
zr%X*5f7+AGLd1R$Tg+@CxERy$j99OVc?w8|e*GVN@kNqe195>zjS3j?HftV9LGO1)
z3f1ub`>a<k4M%D0$NtkMJ~e+v)9AU)6PC10T^5?MEHrru@d+&#&uB4oLi6!sn|(0y
z8Aj25{Uub7_@d#%17=KWwsKx5@pZ(ur6qf|!x&#Mj{If`Q)d%&f+o8u|ETCr8`<Hb
zACO6@A(^<G4BS?!E5cXByU+`(GdvPeaLK@n5wV9-sOchTy4SAct_74z?mfp5>_Z%%
zqdyY1WMr>m@`$=~;mNVBvJxZn^Ynd{Ui1-DR3He`PIM5SS|isXzy71S7v*x=$jR4X
z3kh>wmF&t%i(EraZh{7u*R2*8Y2O(GZejOjYX@=ZSFEj<&CQqWC@ChX%e;AeC1!Q;
zeD|WMlzH*Yo93Q0*#i;Evwdp>Er5w{q8SGcVqH<c0R#N{zu-6cCI7*Lc{P5|_K;;{
zc~cM$-FpOdY;Q+6z=5~MO2@PdVn`SI4oOo^1j1%F<)JHKz}m4eY-}&a78M3z@eUj&
zN*rq2r*`BGffTPi!sY}T<r9Aa-JwJm8Ajg38?q%0@kY+oWe7&10GD8@Z99MyAaEwU
zp%DU&C=g?eYv8Ayf4&_m)TnPYV5gA)=Q<Te6l<p_3&l35Ej}F%9TsWhpMRn*8z>HY
znt&c?n3wkX4c#jKgkNa@T4Q-M4FzXl>@nsD+oMQt>}|qR;p>Rx@73!u2-sn-3)L{}
zwE)7vsLY_sdIKo(VTo#Z=N*}lrM>qaWVqjiPoJ7L{^{A1n$DWobjoK<$B%vHqj#U~
z+c&6hU$WKggteYh+!$60c+Q&CV&#Ic#KjRQD_ohmp8c#$K@5Y<b&I&#JOi4jai?v;
zosMGNA<{ov*hrbVT5_~IVOdzp^6=a^NN>-oG|%RJ-U4Doe;470-z&b`wfJsZ0nS}<
zuZr(>F237Q6b+yLB#d8HjwbaMV!{(*!eH&zuF`f_cwywA1XT}o0(iLwg=GQwZ`Og!
z=FTsT+^sr>CE<DG;btXA<T8r{`%OKrOl|Km?;Zl`$P>9_LNaV828nRKi-My~r;JUN
zUTRaM<_eA$N??O~-c<LDN$%03ALps^Y+rkw*kB><$erXB^zI`Q;sak4$`0-h1i=MC
zt9EFN2`4~^26kvzS&nc55E)t<=UEg+6fVS_j}VDfvIj;G8zn#Ft2Xjxf7<btNoQY4
zCg(Tw(?|>Rqx`xr1V9aj8HOAp2dvO;f}MYk0$&_)rqh-0XyAO^mU*tBfvkoPp*7+~
zm^#%s2wBHzzKlKGAPtnY2odfv#O5cZhei&ZyK4lL^v^@%=h*T9xd4D~+mJG9LD><>
zAX=$|q`(lN%KMUdhJH*A!W}Vr<UeGHOccKQniM&K0H={U@%GyUeoKxy^Ga{O<M*~r
z>ycPNS)qXgS(-VpS1&v-dG%6O_gO!%Nkvwo^}hI|>EfB8@e5leFNsWvb+6g19XMwk
z{!u6e5n8}<yWNpHT?_7XF1X$9sJ(Oab|*3LY>lw_ypfuz0l>uNVQJAad6b*rS)Ju!
zc1EH@f43P4aCEO*am{ljH5~;?HEjh%ciM=bML#xQmzg7JfGH~?;^-$fV)ZI*C(GIb
zXZUSf6G6NmQlP#qBs@4ebi+Du%|zX-+2c)I=}BLv<;J>ml3m$J5v!PiBC{_|+kQyj
zeNu2lI0sPLh9<gVZpN-VCy|Hii9am%=H}~5mU<RW7aYx>>X|XoJ!T96Lh@jVzZx=x
z0DGanX@H2iBvDK+20UwLDyex`6==tcYi%K%;>*kUZ_6kAl`YANZ4)6!m8cOLkw6%1
zu@{0@HH9Dt9kOFfmy)q&f1asSLa07+zT)(w0A&kX1C#^;EWTj#-fV?ovvJ{ITz!RW
zP@Skg9UO6*I{%Ta10wDVkrt{jT(HBP5^e`x?0yh<7&f@a2J8^hKtwCI@W@<P^A^I2
z^N~Uj@eHkKb|-v2td+2oP?z-PauZx9thj95;&b6kvPJV^IpdIGwRY)3RgDIf1eADv
zLx%>u{Z7#9uM_X>H+Zl>>6KRmO6Vrc4=nkSBLfK!BbkD*2V#fbcq5SDmj3-2KLh)}
zAgR!p#NE3?G2whs1dm}B+yzekqWOwBVet#YQ<l3@lRVo?45DbT=w$Fm@7xg(9lh62
zws$%eA^&%u<Di;CI`oUR`LvOo<Vjr-nHn9=EU?W7dO*RhDsRDc6E6nD;a(Ni^eVdB
zzW8ptqPuNM?sY7<+oQ0ia|4cSyDlqNqdp$tc?ru~rN>3C$<?+O8N`<sq88Nz79hH5
z9k8K<k$Lcj;AsDMQq6MB0Xu7htV05Xl1QhG%t>;sqYz4}#EtK(GIpLZcEBxMGBN75
z*f`pB-q`S^vEhWV0jgm;vESN)nFOqYBlr9n+PHDgFdU)rUw^|N-uty-fiJxjKo|qW
zDOCgqzZCfDtHf*hbwL?5E;`2hqVg@IH?E4<POWijY>L31Pf<}Tyl&=U-JU>pn3{*(
zRg#8mAQ%W6h(J_`fdM<tK>diAIe$7Q`0mhy5`KWt2vRj}|DlzXX~$OCV}A=G)d{`P
zx${q*32Gc1vF{5a1w%v{{!n2@0f%cQE<&b_T1k!rjkr6}IK<Ail<2!h8qo{P+wv{I
z!h-@(^h59iTRS>P;_G;5;0TSztN~kQ<>1d7C{2&}N(^YiJam92mDyOVJM;*XfP)A7
zzxh_s(AR(l?$Tp}q{KG|1yB^sM^(N2vLq$F{4(KTK`5`GLxcPDk!g2=U8&B|T9P{b
zdiHv}$Fp{<QC}uU2#|Pu`h@08Bqfk=5$(=k;^~ZW_y-Zu!?)WP-XCzJX29XQ&lTSv
zQh0B0;l2I^cX}MT)8**h9-@zKSqFY-jU2|s2#yk$w*pG5;@sJZo^^TJo-b|ZNO(4@
z^nU+iwF3)lx)#><Dz52TbpN@cx*-KMJqqu%Q~C)1Na>@r6_N4aC_ZvkhPM5varCO_
zBMeA1(f*s(zTagFln(OKwBM|Q-<ta_n0cjyxoRwlo3ld8O>k$YMB-sdz$)duvbBAb
zll{`z3fB!Ofpc`l-1xP*iP*d|#)gwdez|wu9&dbxws<a4cJ4WoT=QiXNgMtaD-rm^
z)V=;X^A3dD@z8j-q$aV?TL|vaQ}V)u?zXFSb??C{iWui&R4^o3_LN6dYbojJ@d&@I
z^bXRc23tghNl6A<riUanx}^kO(v;bw!19Q6{p&yZiUTNxCI?F5O4#wG3IZSqR)H;W
zcmzbgYDo1)x6VI0QT^~O1)oR0ZX*{p_lLm-UbrK!oLDA;f{3G2(SYm__031bpgQq^
z?5L2ZkQVYl_?G=-L@^PtYTqDU6-tfz!xFq|gA_Co3NDI|PzPpdB{awd&kzU!NI?Mj
zQmi{-x3C-}|A>hs>YTh8#K1_TN`Jf52@Vc`qP_N-#8vVU{x6^Q>(83zR2!hM04eG)
z7)|Jw=Z5J{`Hr4Fg9i*Cq#2;m;gd7Qw}_n|p13F?ImVr{UZaXWqI(!EaHmIM?Mt+x
zdjpH^zg$u`y!hULqI)kC)C?@H9a4Cw8vxn!W7L|xUY2!8Tpk{?s3mi|t5&+nOI^2K
z-*?eaQ$NM`dY0TDP*OXj`2O>ywFAoPUMQ^_SaQE#K~1-UyX{a(g}+*x&Kl{t8b$cY
zNsn6=hCU*PXybk_+&fMX7Un@f)QBUXq-;Dca^H1xH&L?X-n3jTg(y36V-wxb=9!61
z2TKk`Zk9%9H!jk)3$`)>M^^<(n=Y6ezB2N^H1aFF`2|LLzP@y^okKAR7s)eovi9-E
zPvbd~yw9`c!44TBIC|+N^myRQLxW#_6}2vLLD=5lsI|p%Z?JH{N2WrMPcbu?c=ZxO
zDbtQ>AZ08?IN1_ui9ARwG*S`H<f8<0@{uo6oH#nQ^GHaluk0!DbH3{UO6e4(l^iH>
zZBTshcx=Iff`-x~fJlACL6GXx!4aqVLJ1J5Kb4uPtU-D}J1FdMCEOZ%L|v`Qo>0;0
zfQSSNa`8Cm#H%|yWK4h*{^W~%oyKYG+t8DI3Z4l?>IfjmI2845$8w;dc+^}H_XU&`
z5ek|h92AsT_7{~ja1iU2GXuy>I)=J5cI=Q9wy;S70|y57>`6|vctDitfNO=dfHiI3
zp-EI!5Oe4Zm8w2l&z=Ie!GrxidB5r0Ng*rdw2E64nY7ZqX1jiv6a#Q{s}tBMsvCwT
zvVrq*;r*8jYljG??hP!yH&EEK+iiASGcz~p)Z|AQMK53)H)54cBze|t)^Uy`a0sUQ
zZs(HwFO<~2TvGc|Y2A>LT0rz-X+0ed#7lz2gOL*_i@2azjhytD#bGJ25!o>3d%cIQ
zG~h@<2{ZvBQAu~YvOV~_b?`T9&t(g>LZn>6G7lBVv*TT92@&vq6!T}zCc<U6?DOuV
zoGdZA7<E_8tu~I<+ib&zGe&;3v7Q`?t@_dxo_W*Vb0)gx5NJ2vJ^H<;h#Nt_Ge9vq
z@q~pq?H9lRHF$7f|Ncw~i85lK;~m-b0z4Q-9ob|u$P)>Gn*d~#aDo>bL^3iXAu>ug
zV<m3M6hJCiGsu>!hO8e1#*wK1!yP54Y(>Bt)AxV_QvFx0gyROuz*Yg_uOLGHRVVaD
zpUyvZroxW1eFQ`bgX-&uH_1obnvDo*p2(7yzS&ZLyRQ;mc`Ux4K4GU;IZs3G)V^6V
zl2A|0?C@9Teih!K9on`F0!J7L1b#EzsTd*1>X%+7E=AHPU<t7F*s2{kJq`+e)JaYz
zKm`PW8l|`aDc-IOM0R>0Zy!{GL1HAveeleji6JZJg~u*%B`3PK9P=LjS&X{EyZwr4
zhZWY1U|U@KW<#rc9b^^Vf3@iTkR!Ld6yEN<<(diEl@#rcSs1!>ZVSR8AnPaqPK~%D
zOg|BdaHmVry?*GglKSB#_5X!dDy@6D<iQ)I^>38a4nBIf3rdX{qAeGVj9kb%Eophg
z@`a&^(cx4f&f5W~Etm>Gq)3nbx4Im<-3`SAjt<^#FPQqxB9MFAmqylR-A;g_$b&mM
zHasOR96*tlOZlL@E&47NWdF+8_O-c{=nHVf_OiL@vbpiRxgOK5!i!doNzw#I<6W~R
zxTb#Y8a47s98WA~Mb`1S?9vU7J=Y6$@7L#f=7|JHDi%m_bUbhfI-WB!#;Zhtm4D&L
zBw|Tx8Hyp-VBR=_;q3Sd&wp!Q^`HRt&!EIrfgL75h3NLl<8xFAqNqTm5JYcu>-<xy
zjZVOhYV50~h6~^O<+~^mKtT`cM(m8&hPrmXX}pi@OA`8%l6(F)d5d;|3+Fi9ibfOF
zCJ$CAVulW`lg5j{UE-y{o$`WO+w1WWCIsR3{PX@jZQ2dyfd(8@!|;=6$@Y)6X)Ryj
zyNrrxH||kABJNrqpj&{+5X!euWXy()`=IH(Nul5<eu*nN&BJ`?;a>ztNAC?Os(tfV
z-TNiA!%OPkvD?U!T7WRTxc0TO+BZvTo(F3XU&(0_p&C6ublKbxlFBnzc&H@2>408L
z>K{|6ce(+hvby1=^>5OS)ekRw@Oo+eTO|)h7S+C7bbm0c9r1D-z)_CiC}C*?x$QBF
zLvgb5x9bEQiG?ZLLZ>6Q+8(*pPOLlZI?!}W+@*atti9JI!#8J_9=F_+x>(DlMnsHE
zLS@6igCi<>t<!f`dbbms`i;5mTU#G}XKwmNn&9Y+v7QR&N4@bm+Wfihx#**bt{Gpr
z$A98tRqG*xWp)748};3%k39#`TVhsw_x116)qdcOB^uN-kF?2c^&WYlh@}!~5lA~z
z8=>OW+j8<py$(k({&wdPG5gy;`Jw|lenQC=KdrQbuT}!%4Aji|s_7v|Le$mzg2<77
z2S<)-bKvt=5a9&bx7?tEz>agl6lP)HsVPD2Ap1x|H6c4kzM*bd!#Q>>6m^c%2_4eZ
z{qh)XYzo-HEI*BULJ2A;*|Ti+M6I1h0Xcx-&E#y)UjEFRvjsIYYTA$|%MK1ydzk@*
zm+<%6Va6Z`;HdGCAwtLviE<P^795dg3)f^Dhk+BvHd{I)EM{)RO0v<{X&7~fAjj_Z
zE2$lJtZsBk-G?Q$BZ})r7uUU4B5ibe-N>@K55Q4T&GU!u_FG?VB&?*oi3@#1L_}tE
zBul!0qb<c=nSmu;=zjn5y0<FpKP<2RsN})>We-MIJbbt8!Mo)TJ~&oC43z|(4%{|f
zG}2dT=_{p1#DX~?%NB-W9Foen=dwv`(vjPp57i7fTGQ{)on8lTbp=x>ru~2jyY6@E
z(61ILMLGNRc<7ErT23^iUu5#i@Qm0<A{;0mv?^Bu?Ffb4jy@u)_IqiYzBN&%n=Y9f
z&Y9~^82P2%jLrI@#hy8n+;b+lXN`AH{>=T>TTj5@K<~UL34LPMq4!Bd>hnAyKt$Sz
zsSstCuw!W?xK>4fDajPEY%CihAZi?wA3=&E9)I0YwYeOr``0_p*Oh=h0wrX?ff9m&
zaU!I5q|onbnB`MPl_*W5E|}iv+4<*m;)^4tiR6B5T?T6n1&2s8Tp-m?KLcIh&&5-m
zgeoPfOtGqQgvOy{7HE1xDp+F0N$p3@RE4>mb13}>Sk&$Fb<UwG7uD_fdh_Oi98m)Z
zH5{nh&@$An18Ely;vyL|5PK988iXj;E?tPh^Y8mSfyaS8dj}9Z)U}&`&z^zZx(5&#
ziGJzQC6GdegkxDzlAq4Q;juW%-R&XRm}UOtMH7NT5NzM);co-p9scx;FG7|~YsFfY
zaWSq{+x4Tr2+3S<7fWnJS>1bOb?=u8cE*&|eNtZkSy|mj<@ICA>pm#0eFJ@T=x)z-
zCEj?!QDpRj(3J~AQ<p{}x48C%mqRiX-)>V;|61jPcd8zIQuW|d**^TV^5Mso564zM
z_^|B3JJ@(dciMv^=xFRiiqR!5i=00TeH4}v@5$S&?>r-<2m0vfonA);O8t-A?RW4_
z??bmc9lX^E#RQsc7s*^->WxeGK-uN4fIoL7t_V+!i6BXq>%rC9Sz_!yWA6OM+)mEm
z57yS7tu5Eh&DTXG<y|yk8#Yu(-1xFM5A(2dCQ6$z(KBMiQ;>D9zY#cO2y+AhJz3fO
zS-}w@TiA7-yFAv0Ojz3hz+grnDT|JWuf&qE-4{WQsH+_%7)XoSd1TA+hB|Knf3u@x
zOl=?eBAxp}2^ny#9fbm<i;z4a>l*6?aa^H535;{i&UO0YNOhtVuG%UbDaA(*Z~_>v
zPdzO~OSlrj&NHBcd_92-5CAXy$vzDfu+I^@axBDxKX=U$)$E5O=WwRFSt@wbgM9HB
zYGC^DCtqn|-!i{NWpBHbtK4z}^AILJAQ2-ls6;S!>LejU-JcD3zQ2SP6A<3DYe3ho
zgzLj6;7Lh%6_Mm_H@v!<K@*CDCPT#2zzUwT37=xUck3S9u@gZ@Vj_+i*=*JXSyDD`
zu`4m&onNXS`i+TE=(S;GwWH8SWp!gq>c$+a8&_68sjPltS>4BFb)O!q9|yj$?hf4P
zoxNSWlEfvE(epy%7qv=R8krNXtzD<>JnqF>E4}x8)q}UoAB--q|D^K4XH^d-SO4RS
zst04M9*(Ve@KMEs50BNq$!t{Nt=3zw2#!c2N?05rI9d{(9_LxTQQ!Hc#05cUfS{u_
zgO1)Cbm;Ct^dM|Jy6MoZ_UI#6kv-SUb(Ka+widU@lL?MixDujUC9P;h#T7C*(2r0S
zd%@8aTOa*wZU5QY`Lnh4y0!HOYvW~e{aGWw%E&M9uFTNp%y!S2?4CW|J#)PKvyUQQ
zfBkVHgwaRLz@m(lIo(r&wV2}*3mN^cTv48_G6P!LV#%w-5%wL`5laU<NX5T^$-nWD
zEpiS0{}oEU)}7#}u?{5r4v4s5P~d<_X(DyO4vrkXrVKo`k0>L0fKh>4K!d14Ti^(R
z2N$;D5T&D#f<m#2dkc;@qLdN!W7%h`nnIIPc-B9FD-2ZiW)+&ikwTfePH+TTdFEUO
zspu^wCtVmkxKqmlCU&fNYf9Dxphu((S65;bvCm0<VF6hPb8&AW`XJ9Cg}7PD8MO?d
zA_TlT>^)rt>E2*!??cf5Nowj+Z2;=&<M*1)pBx5`VirXvrg^rp1T*y(?!R`d_Pw&&
z_l}A7nNVIot-O9pW&PC3`WaRAlPl}TS8}j+%(44#?!47CeZ551B`u9uF+Yq%4D=C2
zP1kPF8T?`D%I*!Qcrd2w0oeJh`r*Xt2UCteoKpSpvr1``%O8AFfzx!aA23n+h_aK3
z%OWU=ymUbrr65=3>x5*3qocPwgQKE*L*NV#-(^bc1<bs|HT@6Y>V{Sl)9x2*{V5|g
zPhYu6q8ieoUGd9W#V-%fiIa>%*0Ei;N#D(i0L0gkGe|5GAhO%$pRJ8o%=PC?7(X;x
z(mH+N5;5&&3)>(r(ufgHG9O3Mgy<tXyBsuO)Bz<XkH8V$s1v||J_?0iXx`weBa>=O
zRtWkR*g-=4{r~;u;Lbr4zo@Jot^uL)RY@oj0`r9Q{!2YoWznfG`l8;!5qMO%QwVZ!
z<ZBbEia@|nj5^z*Q<q2e*C2cCa&@O*gc{4Lh&M+90?|0KWPqRFpPoZN0QO-3AF;!y
zYSjsf<g-H$tUjQ$8#m65EIILvuzU(i4(c&qffAH8vp*0lUAqM^quQYp<SKzfjE9nf
z(XM@vxQ%45NYa)pbk1}0ZQ=HUvjDSAn<hNHs3?eWYDrO<EpXiX%@$1!TQ)ml<q}tF
zw&%!C%y_mby8l*5?U=IKkIL#MRn*O}+q8<hnN<%Kl-p3MkmDZ~-5<W?Ckqt-Sx0jE
zlG!2Avx$j~U^OCAS$AJBj@@ouUN`K7fN1KehYL>qV`<fc+13A;Tm6qY)emP>J(!M}
zSNQ;+YuM2{U0}~r;2BnG@r%P}Pi?VyPAKUc>(=T!%8jFh%iijEv}SNY-Md9~BY@J;
zd#^x)VCEgU+w0Js{=$C$Vr@8Qq;3)%r7qFnI^vdwgQJWXyW$Ef*sjy}oHPjY-hJKL
z{*&mVP2lJ!X<NQCH(VCeZe6*tdau54g=f|j{3ECa*Theu8lEDZAAJN(+NbYh&*C2u
z?$}4XRB#02jWVLCp$uby5gzFhW%QK1P1;{Uqy$NA5u5*R^ZmN-z7kh8GV`MfN?d?~
z5)e>w1&#>XAuOD&T5rNZfuoGn*Xc@O|6kz9QD^jz)cN)Rh?EXOA8~D}2sy&<+;312
zZczYB&p1c^b_d-A;@I-3UC&$!p0jL?`jZ~`)b5{WE`Amlub#XbK)6C~nODPf9$pWQ
zVV7=HBNQu+w}v6tt{p-6e8ikM#yJrYESwZbIU_Zys5@dG#y--;YO}aVftc~kNkL68
zhxpd8r@r{0`QoWzF>@kUM!T}NYNWmv-68Pc!?L>1D(WUy)Gw&6pAUkn>lanm&prNN
zQDyzy%DQP)b>qQNLEXspXU(KksiB&*G<^A-(B*T&m_=Ppt)9*Leu{zD^r@^HbNs=S
zss}SqJY00*;gS;%7oYyevXlQ<T>Ws?iHEbR9*nPg@X@jQ*T4}02B}#DyLwj451%%%
z`GT1tnJYbO*XS&k0gei9cSRYM)Qv2z8&y>Ic0ui%1@{C^NAA6hnRoD3`vc5CT`{xw
z=qr|b5;5(Tcvdb7U%5CeX?gf+rjV!rwpQQ90)iLKT|YG72m}Eoh5{O#!-fks+fe9T
zo}|s0F8XN3=dMYgM2>ww;<eX;2Mm-TRmIl<CD@+lq<)<}b7U_p>&704l$QmL5KBj*
zly&52B44rpTbcRy4m#aF0wpyvJ2+C>1ek*$sBZ^H9RDi{6dqNFf5j2PNk0liZ29^l
zW+B3C_aGLXQZy(OumE=cjeB&kMsIXNS57CksuC5Z9<sV@9y?G%_<0fPu6ZxK9rytk
zgo9*+F-z;G%F#eUpostxCxAH4<STrartql7BK#xn)SgurBAp==hMeizQUCSS<d0h{
zn%-*pyvVp%*T!O9aCGm@G7yBush?rvXh~)L!s_}Z#~;L1*DtH6n^RFYwW@Avb=?>H
z?hnta@Crq?+)Y;C;u+*+v;;?#sn3J2{@E(OH>k26pJ?9k2MbR=Tu}9JS@pyD)ejdP
z|Hq>0hqJ36F06Vmt+IYBI_q#v?~NCXlnjlyh-fMQ)qLLckgPaQc80d4&`asOqFY@H
z??djrU0C~mQSG~hwQm5W!di6G8wGa<9=O?wS)}b(%^Vz@SWo-{Pu5ax<@|`H^FvoI
zZk4-|yd+t|X=|}}*Ew_NPvRNv{MFj=t5|n5OuNnBTN^K#`KO5yG7{GbYll9X^@VHd
zxX4dGWa)NdKkQ)d-ZF*MlQ}zBQ`<jkW3P3t8;`l{i3VN-($#<?+q&R|@@5&3?W*r$
znb24j>)#V6M|l3a;|nDuiXTOi`E{VAaO9YFf+L@G#2!Hb=PT^fgOW^ocK#t?N~t*r
zQaiplvf~qwcDV)xLv?L7h@ce2A>#UhhC+w4qYlbeOgJ&*)NQI0)X8+hDjQ%&ebjhD
zgDI#~p6!k`+&EZJH_lyS-G#RTM;K-#%my$&i#H_5l5|~C=^Jbb!i{i+)JQ0kQ!s>2
zf-DL4gJ%F`@SIrkP_^Vu^ywY&!P`&I_$*|}jPMon#W~t~#whr`ecAo@@PjJqk??ty
z^-HVkmsZvTrNx!?%TEZD79X!)P$_oZgnjph=N`~wmwVDyxDywVUE5;G%$5*k*{Ryb
zy<R4LDr;Y<t{->&!Q7J%7N2|&d+K5QsfW?09xgrkj|C_Gv9S8#vZ@EOsvmrDtZw+h
znnCNoGE!2g#j34b5HaDiX0xY;NLp@|MtMnaWb=n_9;=0Nhld|qRQq0G?U<rEc19ho
zee=lO0qCQHzgla`ys-%$mR8SNCOBF!D>RyN6R6r)Et9F?J>ESR%$+}2JASdY|0-=8
z?H6mKt&%p7)qCE|t2S00^)89^5Uq+zn*Mp@_>Uup4}X%`*cS%E%ske+uQ*4fZV6u}
zbs+yA?#{!ns-x@oqKUC9(#xUQK~%s7q5{^K*kU13?7jDbBB)3c>@C=PMaA9$#TH{U
zrpF{kLC!gQp98sn!u`$+?3~Bs<}uIny!U<Y<ujknKD*4GvVODHtXZ>`h(ke-D7lWl
zU_gVkSiz?YpvhWNVGD>FHmC^+L05FWoEM1ba#ds?$Ohu6{3)qOkqt*4Q|H_@E*dWy
znQ+1sLk|9e{?Q4Ol!OCei(y$Roj^e)j(h|^!hi?bK()mKa`ZM9K*<Uqhzu#S@dsW=
zZ-9uOTvRzIlEXZMufKsKh@8=bsSQUeQu94A>)}Yr)sgGKgjS$^I9HGHX-;^HxM|dy
zhvhk<o%qRLRZ|GLQOJ08P}wnQ5{-`}CM<}AHIXPY5WrfP-TmyKB#0H_97;UqO@V=I
z_Qy&bOD!}on2rk@E%9PqjGEphP$uehyuZ4;z2j>V){-~}z#17HMaPa<xx6zrzQMvN
zuE}z8v<{ab&k>&@(a2p#gwvMXM3&Rji}Z|Jdh!h|sX$99)YA&Iq+8nj0_*gf+Vle@
zaoKysHrSjM-e~IBA(%9eNsSLoWY=kbR*r632j0@A7wJn2D{-{8$hNA$o+3rNq#|2#
zp$%3w`KC7fv^j2PaX?0fFK))u61^skZ8T?^^SYHj>$6O`r~FZCpL-Q?!P4)tbvUXI
zl`dGuT-3&#x5UGq&X&gH{n`?iwCz^FnjBN=65s4)rqv6*=g)FoGS8I^ade5QVaqN*
z+=w0hF6ao;qUQocs2bo($aTA=fVb<hux;3N(SKF8X~Art1yjA}PxhWR&MP6oOBew6
z#UVotOtYf9b9@H_;PxGAu<n4ur*&(3L@2$%kyxj5$F349N};o&7pfGz=xG_*1biUQ
z+O@e}MH__5l2IBVA^sp60)#;oAPWLh6a}?#!Yl8*E5Z{id;v@dPXUlT)l5NVE>~*m
za};n^mO0P{#+-_q2!14S<Ry%kARDoE$%>EgaaxaXfuiI}DJ@A_(yPSMpW=u-9dRTG
zSmy8sjwl{=r||Cxcq+&+&ImX-;7I&bwNrzJ{46X|yvsS^)f9qgKps$c6_nspN*Tye
z3INsW3nn7qAaK->4I=_IXjhmGu{W9BVb~J0&jMc%bX-6HmXM5xxMmg12$L<K<mO(J
zk-^=Ah?&Ba3mjphFL2Zf5D6pjk3OtBIib;#X>Kd#ipkNYLw;f!B89q}+TtR86~HOd
zGgT_kQVaDpBya@8Zdqquu}(Yms>51*)Z+nfx!1~tZbZ9SK36CQ*gA&<g^Rgc`siEw
zLa<Y4%e-yhblbM^wmsvHJ@bw|<#u@%=Th@9?V1*U+}wNToq&vV;ZJqtLXQb!8cv(o
zh@H9XGEBM0{Z2l|9R%iiAHj^STE|_}rd-yhUbIfTtc`;uo!3T-S<<Tr;I{pCK*knR
z%3@*FK!DCU(_H7ya9z2?a|0$8X{Jrv(V_<&c@}sG904NI4?%mM3mgF`xYFKdf+gi%
z56IZ*w`>`Kn7tQH^PVx@Yw|en_uqf7Prn**an*bD60yd*f}^M!;Sn{6THd^wQ*diK
zMcGa>?+^y4bOD1HM^vT|Bzh|JOLR9lg3h6$N@5UEh6OS36Mz_00d*;w0V$j)I^h9<
zDH&6hiv}sGyBwh(0V{&~iN#I6#bT&{l0*j>{{xQPSz93q5aA^oh9%?~VS`QVp-LPn
zkxUhg<J;hfkFtnk@FSH2N9v-=ENUUg1nSO3j^K!ri&5eo!H?7f3?>RGRGh~Yj^tya
z5mW;j1*7_PiB4Fl&=4FM=@hjC%UDXR#S{TkVK@$3Xjvf&2^GvJP}=0<0}b_p$q%N(
z%7w7N$F^3~0_+GJIk~&lMDI-ln*50FhYN^zTeJ|p&tmS#q4j5ub55M;p1i;-J>3VD
zFF3kl9(qfgRiLjd)K}fqRu<SY3ib6x`uajW1IARSuazt*<)(G^MQtX6P(~IOIKJu2
zJ(A|T;`@$h7ffolZZ+Xo{90*Pkv;`xRAfsnvaP*s-+afu{kDDmo$`$0a(-stwx{2=
ztthn3F3`swE$f|I5RjSa%Ras}OT5O7ZpaiVC&hb1hH1xPe>{_1EQz>g9ei1ve91cF
zvNrvSHuH)$`-(R0qIKeBZS;A|;M1jD*^cz-gFsYvD-%Uv!8MD#XHIsVHQjab9QVvb
z?+tjg+v10#X5n{BG9%<VxY9n71QBT3`+X2BDYr0S{R#i1)dXVpSu|CMcGJdt4H{It
zZ@(I7?Rxa65ffK~kROp<YJ}l0Is)%NI1*v!ix9K@{NKSm6=H)RvGYe^#e%z<95Gr#
z1BxF>P9$ia1r&t>Mrnu#s!&uUsY?vYP>Uie^%&=h8u>{k^1M>&Q~U_bLa`u-gdqVm
zKoaJB&SE%K>xoD>Zjv8yM2o9%1d#~YPq^SF=qhDH_!R4>WC&+8$n|Y-Bn4Wq0Mf<$
zNa2VAa{?AbMFdvVpQxj%H7DwvpPcaL_*1@E`J~KBJYbYc<{+fyTJOQBtD#E=P~eEV
z5c36o1dE~i2(&CoxVcsfYJ$fM!H=-qmK$k>K|X>64@i;q_xTY$2n^v(RGhnNDGC)I
zlOt?d*;+ngNWD4ZotMvcPiAto-goc4zzZd@*DMnXbmX_p0zK;{N86?X+vY-jgG@PK
zN^m7@d7-u>Uz@Sxc0j6dwB?I4$+=S+O&Z+*eH||Bwrw}<F9^6%*7deNt=N`YY|FZB
zTVG_`blbk=wteHB@=e9%*~R4>z|?K~+5+2>Tl&}|WxaB5_@}SNPrfM~9F1x)VQfR(
zf343DDvNzYk}V0pYWWxy#}#eiRqKpP0NFbIvPd&8S|>19I{UgOE6AUI8My9<f66jc
zcBa+yy=P5!pFG}m#w1s)H3%ZJg)r#({`e(6hMwWM01*=<g`+(n=zD>qT-K6`1GZiE
zUzKHAG|PMORPT9{yk<=D?%%&QTP9;-g`<q<u0jpo34f~LP9bg3npO{xOR-IwqAx|9
z6N5Ik+^!-h4~$9hBS;ZSVE&>ANz#d;mP%Rx6jeA9*Lh6cP~>FLjQXi=@jNI~SwU00
z0+cvHNOCm(hxw5-JQKtq%I1J0Ktw{`gUp~eAOP;5Kp+4^VT!HttSsf*@gw9qrDS*m
zM*>0rK>J3n|Kx<XXdk0Z{`6^{p($$1xSt4+w1B9BRI{LMW4elHr({~R4S4hl4y~#B
z3)K+Gu#e&yo@7V?K0-~WEER>GLAINWWTBLG;0UX{QA6v`pXjoDw#Q0b;%_w}J6$as
za>F{kP+KJ#P*#D?bY@$TZD*lvOOb7Bk?qqvwoeOn(3Fa*;e>U{whK~Om*TT#vB#7#
z4JMCnfT#WSYfRgA`>{iz&^oY4UtDb4de^?~uKm+H;+T8azU5wd?){2wx69Yvv2VO>
z%f4+(Dbz+CF6*=7vOjiuf*&pRO8B_`$WQ90FZU$&1p6=c6$e}{5fir?Itq}bSG2?{
z+Wf25*_W+zE@^WvTPI$$j67G?|Mah|(PM8q@4pIYFE*tu@R>fr^^<t#aS4qV&T!93
z5>upY`~7k0f0SvFU`fsP{S>-aCLz?xDbk*=gLdB!+;Kf%%|^e)^L!Rf^Tup-=0xw|
z!(1`6V>>?vt3W9#8XK+Zq3x=*keiPJgT(rga8xLDKD0S~fmA@uU#O8jB`GRW$2TaU
z1~Pw@+`=uuf}F#XfBh%35)T<UtF;w5><cO)LC;V%^Z-UAyQ!jws`(KEEYoVX?Eo}I
zIgTg*MC3*?{$#z>p#A&tkMpDdERKw?|HX;X2sLDZ;e!fFj0s9>t*Xx$0%X|ehZ7{^
zhe{BEqbhT5)prJtP?(^sa28RPlzs-Oqgp_KuxQ27dqCgX6FzCUV2bOCIi9N#pAMPw
zU$neo9)HWq#D8s(zDeR`qr}cG&~(SP^^PsK*p^#l+gOMWTw8v~lCYM23Mm9?@m{&W
zZT!gk)5bMSUE)FfudRFh4ty3+U>#hjFDtU;+_7&dw&xbx_mBjd$`9Nv-zSoNcd>2#
z9b57(ZOUPD-z|B5I9MPI+3JNJY*-+zT;$GnB;s9SX>jRPI0k;#t+P-eUei~hioc>Q
zxT4Lwq%FLp!IGw2FptPDiAI~f{i=WJDxtDVU+ObujO);k8VwubJZ@CubVNJiB7N#d
zbV5`Om^2)G-c%&u^HXy`v==C0BlK<1uFnH^6BF%IKRllx*DapzHDiLum=W%M`{HN|
zpPa%`Mz@&ioujL_3&U8kS`+NOn^YRtDI6)ff-E5?5*<pn8Xe8a8-ME78yDaHr(@2F
z?D^aqIHE9rf+P1zNd_V@D96B&D)zsCBbXX$3W;Jd$)Yf@5+fPBRk2;;Cnr2(G>%ez
zt483-s)xlO!(;rc_K(fTi(CZwl7Wf_=hM>sm7`!TQi~!uFOXrxW9Kq%1EpRF>keT)
z1Yc%iivTRU5B?>z4NQyB7hw*B<t+fjP7i4iFC1)5>d>M3$Ajxn8{G&?1|~;o89qC%
z_+5MzbJaYhKwAMbx?|gUTi<kB-&t%weAj-o*apGp-m@Ppw(Tm0L+Kee^wj+&aT!}p
zYY3^l!YgTx%Y>15C2~$r#4opL`vJehL>Sk`-m_&D+cyB8`{l>(l^=glo_DYO*n^5A
z56TY|m+!f2-*v~n^|mdoNS}SEtoN2vei^HL*Cv~m&v73#unzMP=3E<Ao3`cp5$W%0
zY1DP=m>b&sYeEB`M7pLezpgF2CfE}f=ONmiDecQP^UVbTX<4S#;An~O%n5G8K58^%
zP@@sU8Yj&`+hE$f*$>g~_}4*F`yI0X=kWc{n=wBEM}j3u(T=T2dkO+__TgmJXW0zz
zMbo@yjQ1Ej(w%7Lu%wunYTek;A5*=H^cTdq)EpB#a8zYx&rFt%5M+rlg9DC4&sU|l
z$H?0}X=E#DNwAN%#1ZqOMly))e-=l~N)TuvV<v{ou#jm{n;?ZUA5_{oDg_o0)s*s$
zpFn`0Bmoeql!GJlioz8SSIr8=W3X>D4@|Ng8;821%n>tCF%K1JlIuR`>%{60>=@Mn
z3IwzbY^DGUSZlN65_Swr;wXGONClCXh%zs9t#0n`@D{K_OXKPFE)WB2_(MZmj=x;C
z%C_%NEn#Sb+2dUjXSlB*BKdk>+!S0X8-Bww_Xa{86B!#kXea5ez){`<+ks-+-h1{#
z_wAf)xudVXsIT7hW7G6?Vw(d2UlvaXM-3NEcgbAtwIS2A>!jbwpMr|CDaE!Nn9hUp
zqxZ{CJSac%u;K)0dRTGv{%<GlRqVcRhb3)e0#&5XI#d?7e!ozmBiF5%=gwC5k3OoG
zIL~e4YF}an5}D;{N!WGk1X!V*yJg<ArQgt3180ucwI!Fe`IjvT=gs|5HEh2dn6`mM
zDBp}_z6++fj~w1O{v+oh1D)qhabJgnyG+xkN3dB6JoZBnTDt?!+Z_C<&Hf*o?ZKqs
zdy)2j8zj7-+z!}q%rAMV&+=J5OJ@pxG<Kxh`+c$c7JHGpN*qOZs~#R9_z^g2+Dzbx
zWpOpWfg|LfI#Qx|8-C<S5C6jX|1=yS&>~GK(N4{<l=55w3PuA8Ab50cR2KEMfWOp-
zgBs5H13@ICDYzzPf^yEt^WccPfXjG*6M>^D8*)Ablo~d|q7``z6FxA-Vwu=`j$Fq;
z7r+kjU|~&1f5Bx)=<8Sl;4U~qiX&8+tB7lcitk;NuJ9vN;tEITD3}qe=oJY=>dl+f
zIBA|oG7*`#nvQ%Qbk#iehGkiiw*IzlXR+<@9oxYo+pfFzBgMAk_wC1EO!w?ZfK{<=
z^Bq0&yuN0~XMt(yz6A1P@o3)U#uG*~WK(VC3eOG1(aZB=Z(X4_^^U&wu6@7cL`Uv{
zriv5y%TL~~5b54;M;}xi6dF8R>TP}Afzp_4JW0yP<4JSfKm4%vkdNvun&rAN6|IHe
z-s=HZN;?&36NFiXZ8d7co3>2UAUE_iH}te?f;}y`WEp$jGW6`ruumTaVQac-k#A<A
z@6s6_;}cwBVj2t`*mz=sE1Gb$c7!(DeaZjSw_+7Z7}`A#-S<<({+~MvxlZB;?{;iQ
z+I+;6vdA}iu6N=ruUQj41`TrQ*H8K25~3Y?hHl*nSzaxqO||ANs|7W!hPA4P+)j?3
zp%O=OqKbGU1)FOB@A4x>+lpx4W_|=ef^-cWp^b-|NCqSnBSK3ll?EJv13$@`6UDRO
zM|_UiBK(L~)ThOjs`VoUK<+BeWk88%xK*pRNPq~T6bO@4_-2GU4-XZ3Oc*5K_c%DD
zrk_915Ie9?vEp$E=?)wbA`{i6)NP8L{zM6MVFlJ5wVv>uj+ra2aan-{M<4d8HU8rU
zFp(AWJXfZ8Z#rl?`!f2LWp<G@?T)^+*mkJce)5j(Sh4No-SV?{%g-0vPZZma-z`7G
z$sODFV%xg&+Nw{l`KP6dD0o?k-ZREFnmDrIyeW+{FjCDi?LO;w`emEj+WdRA&3Ekw
zAC&Vhoap3d6=wyM08z#9`xS>DR2;i&-+^3*!NdO2m>jvJOU#JG*=~LN)*3jl-h$~^
zNBFV@Z~x^0wsI6&rxw_fiu6>pe*#K+)(t)9rk-(4UwKVif<FABCE;{QOzyM5?EQW#
zm-wbF#_zr7#8EDBaSh@JH6Ag<C2^K#HjYp*Y&dM%e>d<X3$ov17X(Y{aPX&SP7d(%
z+aTPb?77u;V=gOMJ}c*YFPY&reY`uSK{&EQWd}<FM=@~%N9;vnODv)?IPwofcos$`
z^oxNbBnmZ80ZMeVk&NE|kDM6Ua-ya)|5>??Y>mIS!4U&E+LcNi)fek!luDLO;6f!b
z<cEO;P8@*)tVoq8l20lms$xj2Ih09WRoMbPl4t}uLsYA=%#Ywl$aQl1!)jW!fIzW<
zg2|4W&m!L<+Nq5aGAa{XtU69q5YDMDOBiUpF{{G>Pi|sj*<JW>7~HRpm>kW-%eU8>
zG@or3{H~Ptzhz0ht!*gMPzZpU)5UgBbNZhB(j8mg9ounv<${>tpu5wzoYI!8KkBz8
z1?N1zX^T83jchn+M8gHs8smCv^A^*-%l<fXxTB{$urmo_W^|etA6DdlR&n`$#l;7|
zoqzaS{=?tSJ*ddLkMhBmd0k(;_f^O2U49uWeb*(MmP~i+)w5Rr{&nY0by2IjdoKmB
zMfaw4a*>`SmxHr!>gx;ib+-hR(r@Z(u4}8WSr=WlPQ73rwC5+GvRj!faKsYxw6U)7
zgPo(I>JNCo@w72+7&#CkjVJ)S^Zl_|J@H)-0^ZRdTO9bIDVzI9Y*5-;9I@+sNNN&x
zdOj-`crTgdIdz=-z=60X7W^nSwi?=o*x2g0DMms@X@k`_qFsRWh5?QcziD=69Ds;~
zgriuJq9uch49fiXPgI`j_&)(hXwDUgK$BEKSK{ce>&{){k5dCgToiKP9~hAFusZo;
zBPe|xB|&pSM*s>sg#?bU<p>BsTC4QN35UYe0kMq%5I37VX(XmdyrQ&xbS@fi%)q31
zYPI15>&{{Yc9#3f#a@}~eRtjqyk0h@z?xO0?YN^KxC<MyUoN)i7u!xrH09s1owz5E
zb^4(_@4mjRP~URUGAe6_AbX-JC(U+C7+Qby@CJ*fHzvOGmTjiJH~eo~MxbPPXg_-2
ze(JM|OOGnfe+GgoE<dQa`0%%@kAAxXj_y_D-$Qq2%erby+556B;w46^!~$D9%`GnO
zy*_<v&ztJPq7Qa)nAjcrIp~&kN}--yWLsBc+kDfu>4v`HmcH($mUBx_yRM~P*OD$<
z=Upfpx*Hr_3Rt<ychzDamSX2katB8pI@IVD*9exhWV&bi67TGlzQn@VbHRWA{lJso
z;yNto==VWjYX9c~M0>8ZTAS{hwiKg5aOAaMs>hUZZn!%GM@seGJqE7i6cg)&!xN>l
z3&g8TkWkrSOAJ4vUl_;e0;Wjd2=4F>BP7XTG=75&{+*wHB%%Laeq?C;i~&TAA@C6+
zIilvD*8OcB<{2_q{D}DxOz;gH(H#m(2;Sg`7zB<u;v!%HN78f(W60_a>H{k$Y`o<~
zG4n;^&7Munycs;P{1+=nlN&Fe<B_t|D|5T)(Dy+%%BB}sb8hSVZtF+x*v>w%Un{od
z-?g8)Z@=`we&wG1>|NXOhxW6d*-zZpw_LMr-TR{L8XOU?H030*yy7x^V7=jk>du<j
zXl;r&isk)<0k<t9@9P<l><2$9Kl7*@5W$SjeqM3@VZ{}=(u3dfA5@%wP;ri_(|!Ba
zOSUz8Uk0bMseF}b!wTP76P;tazt^qXd$T9FY(O)Bx1W=K(D^Ov_#!>IP|q&ZHx=m{
zf%8p$+YNow4K2Gs-*nTOb<Mi$QrXA@FS>5N5wJ4dH+g~g%7xwwr@DXq5&Wn|XlRYT
zJsV9)a7&);m6hm|!{(+>O?%Jy?Yl}mcVbVp+;uy6*VU%E$NaKVeKV7M*De<@Tr%5p
z=0vvv18U+}72iQX3B&KMU8}|5Ge1VSYoJMkTT6ZvR4t&16D!>`xSAr-aYz)5hri=U
ziZ^dV75|j993LP<BmGa{M@%b}-WwcAQzb#(lu(-0iN$EtbOy~UWKkU{k5%#{bywVy
z$^>2(3Od<v9MLnVx71_2$m`tXL<)q$3ajS3LR*O58`B_Zrppd=u{|84TzZGytU-9Y
z^@Ak|eVv#h;pbKchDKS3_$OsKp>1$(DD>g5Djs8;BsxsHb~RXjWpXqb-P%+!Il`=N
z!vVki(g8QkOYT@V-_Z`hdhY5c?hD}Lfuo1^{73eS4{Uk&ZO0$jj^4K&`CQ+AQQx%V
z^T0LOl;TSv(QERkhTv$}z`FCNIcFm!?)KYX9B@yY@K8^CWIyml`I#@u^MTT%igO_7
zi{FYL|90i`-_AYy?cBqPGxy7nd{(~eqCIQhFF|Pk;76NQ`A!+rC_0*b3bkiVz^f!d
zWQ3je!6$*YEEA=fAEpuL-nSO&pWf29gP<Gw)|>j~>ssb@YYM9S{F0tq?gXsLMyLZv
zUQ1?pjEZ;Z+Ev7S?;6!`_yCug<J^<ydNQrc!RRi_H#gUB&jG(rcbm57`sJjXvIvZe
z1-sbc%j=#Crn^rb>pEb-y8{LgOB6?T)$oWO7gxPkZw!R6`WCzS+O~5-u45^d@C_(M
zef*HLg*m7YtsAfbjm{NINQ%N0!8@Yh-#=G*s^k9z9ATly>>fspTql$a%>8SDg5SZ;
zIRvk?+)R8F9FW|U@CH)UMWv45VWp8!U{trNCQy8$(k{`+-)MoF(zA+m*C6Z$(O~0%
z1$6-qlU1xJ>=`gGM0mj80xoR<i*uDPXeLK=AFtr96ID63sqB?tki=U!fyo$_hv7XH
zbD)`SDGR+aGJQV1;CKD?=pxIid)i)9a}RX1+-D!!&pou|Kd_y;Z_E4Ke(te7{|kHG
zW83j3_7k7mcAnQWx3fl*CbsY4t&1JCAN8v{bf5@Bwl2+Q`+mRu4+9=*lOEeQer`Yf
zwEWD|@^fF1D)PUmxCBdj`rD1izg>Iu+u6^`^FAv-@Ok;p%l51tUk9dT3mmbJb<&td
zUAhqdsn*PiE;%c3dXH(4|Lz9?1(xvz+Oi^j-EGV&Y`Y5e-9`GITl$^?+uj0w%ME?q
z4eRQwmbvF%_uu>=aLpD|(gL64xn9fXc#i(Kaj#wt*(!pqd!IPx5rbW43n+QPak7(r
z#1w3`3H)xteI<(bWFMGp`Z90!2rr%OF?GC<=!OizWqNg@PGI#dd=$r4$JP$#ka%ps
z$_}^BEpZq~P)iZrKtz}G@?i~vg*;X{#Y&2!ctbDK<Nw(|gM>ISsECh})a*blL>dzW
z1Q^4<?rqkO919F}srdq#7>PlHi{vjvS?TgrO_9)>Rcg;1_Q0yT0~Un^xuR65WRTzz
zh*P&vaRV`aD(t9YRK8VZj>s+4bZ{%K^MFc5BfyN*HggamaMY*@M_$a2h^@wk2)UU;
zL_!qG1ZqS@s3UbjqT>}Wv2rBT<0u)VyCIyS2v5cF1MAM6)Of{Q_f?C$*KY9LSr}MQ
zHo3@>c2C>$z;@z+e)56s%;&a?pV`iSrsqAjpLuM*{DuAEBiqT(?fFk^2fxsFp3_n{
zobgXv&6=st(phffKW_A4?>g}x)k~V^l8vVn!f1XO_?b56iEY!<@+08r%kum$%g=pT
ze&cDyr7tTkJ^NpU&;D1zm%p8RTz>lV^1~19+b-BrbH5Bs&z7rEDZb-JHem03$BwmT
zjC0LN^4Xg1w|%$YzS{veEn~qEmVS3^dx~^cxb_#>4iwrB1E>OR$4zZ(ftG#6Jpa<`
zPj-A6n3-!zoCg-XmZP#0s_*&|N1`eE#yQ6ibeTHZefey!jHTWH2d5~wj$FUOo6n^$
zg$;Qune725nmPduJW&ap`VRm#f*GN#!;>>H-THk%=qN1b+1!WIhU#tFR&Ut~Q9(qD
z^Y(J`@k4Pc47#8zhGm!$q8-wQ>R&|<|3N4j^uvikLjR38LfHlN)|C7RJ%beOekXFH
z;$TF9f?^BaB-fR=!UO6S7eNu{0E+9Ja7zJDJTD+7I2RxiM`<{(nnE=KQzTY_arVW0
z4HY8Nnn(n0mh&SK>@QH5e<M7w`3R1Kz78DGYamDr7t-+&OSiBvx!D{~&iMDH)A4vy
zJz;1)7EDv-iOEsccGJOco8Bo~c+ax_fp+kbe)f@`_ecjv`H%GDkMxsY*e*V?U;V;<
z_KEG(Q`^ZW_9G8%`;S`|VN;!n#(TN<+(|B@hBoXITYJRNdia6NO7s2nl;6?kL65bi
zU)%S8Q*rK_@=K(z%FlgOp8u@k;<Ji#U;lRVS;ggN6?sp~kAGf%@UeZ{Ia})X$AM{?
z#Ar6*<$gj!gU+36wr~I5%<-<-Nj_T$Pr1`?cVWOy^T;BN`O)S=+wLN<ymh<~<-Gl5
z0W3*_J?*)!<y<u{yI3}1`;S3c$B1X-oivBlACIY{k?ZQ>Q~}!qR(XPmaM$#mLGL#n
z_lfK5i5|;ld9Il2v3ikL$^s7-)RxS0pEb#K(iqo4gWf|&_kO=>;ON8tM3)fZZ(?GY
zA35PZsPFrnSH~M<WTcRmaf8N&J~mJUib!_Vy?n&rMqem>ol;(@&K1Z1-}w>D2+~zR
zhL}mz+5o$OBLRb|w%}A^q>@>SI}W!%jTGuCpOFX>*~mP_t8XL&M?hGa-Aa9(kPu)u
zbPaM{0D)*t!l)Q10U{yP$<0|jAQCD&wQC99Eh482B?Ar_*tr=VLCm9SV~5vYG|hG8
ze2>-1-s|?8@?Q<OQ?~q}W$PpBk<Ya}!GrX3&+Ip!>gT_-o&VZiK>E^__tbXkOWWyh
zY%I$j*jG9rW1}f+wJ9Ufd-BLeAN8x(JGS=d`1)++%g*rKdCvdXF9Ju;Y}>!FpZcc!
z%s1uv0z~$_ukEM521gZ_z7@waUzMMHT7DE9<?AV%9|WvP7pqaYa3tC$JEYpTuQh#)
zEBhTbV)(klFZTu(7bA<U%L=v47*`b8juzQY6xs4fu%rTgUxB{&mbT%VW!0s!>3d&v
z+H}D`DamK~T(6|ro-@X}#Sd;29*(KJ(6^wvWWorVLPBZ|9pI8Mtns7-mucf%rjB))
zINGIe-v$I^!8=f&K7^J~k#U$AA<+?YieP*gdkZJD?2YZ#9X$gM&_vioa&Fp;DH8i8
zsu8)>RjL}m5#oVTH5l_F)x`!a{YOq5sYvDjKT}_)%K0x;nHT@*-=8)D6STU*>sK{=
zgCiS|=oD}y++d3EwE{;*QbDE^j(ALI>flfSO|BdXjW=tB49Ele)|!&gV99hGpL(V<
zm&p$(e3fvwY~=&Xwnx^ZUub6^X~&=G`OowVPxZ5;uk|Zm+ipD7^PXtOzS0kVt3j^&
za(@U)B|^#y-&G4d$Hq78-?MJ-nA#IYG{{WyBxpFM0(m7-PxYj)ZQH-IpZc!+(zoRo
ze-K<L|7&|5u==**;`bF7zbViAs{Gh9`~D}kt@(QLwmV|N#U?%!bmK<UZ{HqIm9-|1
za>-iiy(!gi%ND;qSNxgy6j>JE);8X?p;SCwXggJ?A1Tm5)9FI}M4@)zmNoa9CF`nr
z!I9E|8*T(FPxeWi?X_%<=bQ;{BZoQ@7l4Hxh7`2{94G|@;DnZiX~L_$6B&uubRrz#
z0AH>U#a4s$u$LSwAWk?6bD*w5S*Ps1;Y#3$CdHi{*$Rj1;7GZH_O1qw=qzRp296k<
zp>RXA`=?a#w;uRY5>o8ozh!>(f6{wP-c&h}`CAoyn}`2tBRJv+1hFNSbyzUcSVoCb
zb3GQ1#OPNQ{)USPb;|1_)WRUlm`RThA5drJ*hWdS-B&I2%3SNS{d$wzB~u@kr986a
zKD8eIQak-bJNHb#_?7MExBBI;_4D7^ZhUVm_(nhXjdt`K?a;RxWB$%<#e(M3lTnCy
zj2_bPgC2E1=q2V{naN%o*7@$b>VMWe=$V%Eoxb&Z+o>Py7k?BuI`h5#B<aWU{O7;j
z`my2)Q2MSs|6BW!C$`OJw53~b2CP}_OVAed-lIQeF7qy%<HmpNyk>#d#?^isHkkHa
z_CNJ&c(FC{j<%s#KYmX?b6d|V(9ag>7YfD6i307=P3xyOEgLSEEk0G6u%Rem`5NpQ
zyqC@NoIBBN)G+7Ho$;Jmi6e#=k}`m2Ll!n3Ac7TvuF=2aMF6J?K41rDK{6PhIO!ZI
zSyERK(2!Qe`I7LKFZhvQc0{;S{D@uvM~bMRXGfOwHiYr^&-_yo`oFJdFyuNUE40uc
z2*C`!H%DW~BIm}e=dUU&6y^$jf-ND`@m7r*V#38AQl0!+Dc$i2)DEy?MlG})YCj{Q
z9lK%?>PYB+h?vQ~37~|vs;5*hFz5*!No@(bai&qu>WF^Ni(TjVD6SD0=tM6g)OG2C
znRnf}6P=Uiy01?3TDQfNd%x+!*Yh5kvmRSMeQG`NrFQmf?ew?WxgYHJK+t#kh41w9
zKiLYt*Uw839r{{7bj`A1>jnSR6yL1nK656zj2P6gXLOx@J!>b<a?M)hwSKFKaI1Jq
z`C4E7oxbfS+ll7_M;Cr9Kl76~Uiz{8%8TFbKCig&ydwXH^0VORnQhBSZOOK40YoCh
z3TR!D_o(>##P|+wRej8`#>sO$H{+s&z$+I5*b{NjvgCpG={^0(ef>nSex_LB2s9Py
zu%uH3*8Mjv8*i9X&c7bN>0w~XI^tA%FP$Oy(U^FFqwsJ%&IvCufJiO}h?a!%@#TnM
z#$J0ijLSGULbFY%DUP5fI+}nu;%8)(2yNN96QW&>nAqw>TW;SGD6ybWod~3GI{cxb
z`o{k}{(g}b=o&hONjLoncVIaKqN?g*K^P>_{qoNsDoJnR7ANYKaa1H^kd4ZLqna;3
ztB{bQBF-TptTd(a8G&CYex(NnA^cOY|5AM&-(uV#i84rQH?$3vg_oP+)qX~$E1>+U
zf}Ef(sA><R(v`Y9){LauLFn#i8MTDOL#WDCJMbdc(f-i_R9|ra8f=UecB)8sY$HPX
zMt7h$07||h%3F2x48rqRl}lLUhlceTU{O9`=ODIa(NH+Az{Z<7Z>v`Cgtit=bh|`V
z9}{11(bUF-3`<?+oxRonz}L+mmM(s3S@)G?_t(}_-)UC>(f9hfANA|c^;^%ibI<h)
z&-L>^>lc5}4*#g_`Pz2&ta)YDE}>*VuQlQ0M*Vx$>lprCpSW6JbL|T6P1{W<1d1(V
zf6%jjw(bAfe)iY$3%`_~|H+>BqT=F<@{2DkZoH_t{-WZHz>)p<5B3vZ+de(1E!udN
zErC8c_%~kaHTo0gM>Sfvu9@%=j>kRLV>OZKyZdYaJ6Ma&^X^&KJ<#^w*N?)LiuDtB
z^wY)q>D&700{zT&>%p7Woj1&Du9VH%`mD+7t)@kSA9>B4;5ItmnI$A#$hK;Q_FHVs
zhoQ5+=I8gW51YZIFEZc&C}1(2Ix!C-;-SP&BuD{10!oCltYll=L^vd1g`H~q4m^P4
z3ne_)XwsC}a84$FHuwwE;`$9SbY!2Yz!ANPD;v~GvWrEJ8zclh2pUkH3ZzReMQL0I
zXk0g*gq9RJK{je&=N2SNwq!0d5sNh>U@Mm(S-ugTf*6Vkv8tf-Uymc9?dR)k?gmE`
zj6@+7nkYYIrogIRSbZz(P*a}y9Y0lPT&G^V!jUIcyYZG<qE)csI!QEwa0n?{xDrQo
zD)ruS7$L|M8f+rw2tOw*#eya*R27bt91fJcyxt+WGpn(l0&z^G1&&}w!aOz9iNO{!
zP&i5jN6Wp}Z4Ws3U5m%1i@!2&{?>BfN9)<2v>QKy9qruD`pq9TexChBKlegE|3W+Z
zqjmRl>+YwvtNTg@rLQ+-rn1}4YeIaZo?UB4w0#$Yy)}zHb5{Fo&NUIa__1aDb1mZ+
z+o2cs{1@eCel0)qvi#hy_B>8rm0to-zy5aPmx>F3>nGcRXSQu8w0Y}~`K?azS)1g;
zCcd#F8bFz$ZED63a9%pi1ID*5jlCHDSdiW`&wFIu@KD=#Ps@9toqV93x~rYLqn|~_
zyQ7`GZbh`)ean(__4UGSKQv9-X<8z2G=GxY=;6-j{7E4p_*|l8#GWh^p5ETV{R;w~
zf)djlgfv7oumc0?&{0?{;OLK^zzS{!j)ZIC2x7PpZvrI)&eA~>Tgz39sv6Cki4HRP
ziH$9d)xI!1#@A(p6vLzHT-D2}#}$I)5DLMI<r1z)p7J|Iq0|xtB>x~Mk~-%iqp_kc
zE-L>I3PgMhsRm*uA!4zh4@-iC{xuv?VB?SJgW_m_(MXUV7ZGBagP<9M1q&`LYyBQe
zv4SNDu&8RPDo|5(VpK<g#rTkM!gZj>^QsNhTUA#Ca8z?~ms_e46hA_q#DzFKkrtr(
zY6%IYTq9@USTz9Wbv{C_11w6e6a1)QHFvk_;7G0+39UHf0kyDPBHe%sGGIgnM~kNk
zew4xb=FY$a-?n^Gy5xJyp6Ax%KU?#ki*))I?ZQj_#tZFYiFUqBzh0_e`&B#ivo-gH
zcI1(EddHmrqDx>2uxh^Nm>~_jbg0!K?A=cW*UwD!%t;lCu=^ebeq)*PLeF_=J62-9
zSZ2RyF2C`*{L)JSsMD{?FTbuRDlNbKOL^W4`{|!-d!OjrPFUyV9A-<PH-3kb=emvg
zqyahsN<Oepqq!5^(-w;m>I6a}(9#3*>?himN7h}RYsWs*jsc~++KKxd1&;D>TTc~Q
z_7_+-U45On?T4_nd&Lrx;71eP#tMG)PE;4BNVExyYr+mh?dk$b$ap9=@$83e1|onG
z2}TncRii_D;me|9ry5`i6CfZ4h%oa8N1Y=@&>Xl}Sh&Cu${e&73|s*LBAg`)<)~5_
z)|_4FN^Dew9#~D0kk^cn6Ka7%lyCxn5r7eYkQ@LJ<g3U7T9W62q71@Qk1`-LGILR~
zC$LlLdkTI8i1;)Kzgr+k3YnEC_*-(FBaW0h%RrDic>_mG$Bg+ABu!<>fr^k697GMP
zwAP%cKZPTCr|OdYFRCmZsB%(G4kxnW;vNrEab;!1IXN(l@I_AeA}4Y`tkl<4MMq*B
zpv-KS@HJuZBgAh7A}&%jaaRVop+;P1u!U6ER@S5mKI?=H7`;!Z`h=l%7EN_tz0f@^
z$+UTAlY?Kj`m%KKbMt|p%twDVAA4oZ`^9?lmG#VP?bff>b1$uDEZQ}*cKxMg*DvOE
zziO8Y&09Ae^J4{e-3p%-vpt4>P#@h_RL7d*KWUJ$%yaD;pY1373BCHgW#%hw<7@qh
z)po^d%eUB1TkQE|wmggdoL+uiuekZT{5+||e)<=E&trY-5%aXHy{6O^-Z<N5Yb|;P
z_)$QBQ(TvNlj2=g&J)p}kr>$zey4Q&7nZE2*1eCllaICI4@Js*U_JK0di<{S)LrYj
zJC*}Q=FK->C+&LPE&Gt)l6l^VGd$-{b{qRKIKpKgkp&QpMawYGAOK5&nNR{kx5-7S
zgU&4^M63tN;M6Q$!^*`<YiR3g?b-^B1PL5<M4XdKZ{}PEj+(a+IAZuh5<u{#k8sq(
z_AyL@m@F79i7sXcHTV(q0CfQe62t(t@DuV7WFzG|&J7&#3`C_!2;is}Ayl5>7LV1D
zI08iQBbFd>8H7}+{MRW6aD-;w21kws=8Nj@ZEysLRDB(DplU{{%IvNFgBof_qOyN{
zfjrfpkvS){FbSrNEDb+WlSH|MB#|O<<RzRl{60CNO%y*;M@WM1!;FCe7Q%pLls*cv
zAGPf#AJthfwGnb%=5oIcTY~o9Z~64q{2$6T{bb%-V#zPDTzYN2SZ2L!w%#nY=D)Ta
zEwkp8Sx=Xkx4*RPe5HMH=;cRg*}jC{%SiN^J+^U=uC+mHOqAHov}TEWR;u^*V}5x3
z{n;|#tmj&7=WO;{x-DO~lP=io7wzTOHE>jZ-E2Q8k#+KgzUzUu>7aRP)=tyvB=59D
zmPB1g4zI^J4?%VcuQPHG?#JEJmwRv8<Vz&w{F0Ghm{)#j+4<PA?+fc8*1SHm9DQUt
z_RxCjzV+-wYhJPW;O(+4g|Aoc{JCG&9)I{z;!Mx^Q;_ShHL5}AG>i<HBGEFa8kj=j
z8Ve{f3ekFSB?LUU5{=e6RD||m(XDlBb{ILe3&RzIQ=7J8sR&lpE=&k}9XpA;D7}M2
z#9##g(K7@EG3O#$H+_UNPbk)jef@}4kQU5{o>fWqvJ*NdgD@0!Bn?!OjT*F#2db!r
zkygCLlb{Anq03Svq=*fK0xLsRB?+n0x=gM!iiODkYdE49a0JC8R3X*Ts1!fdpQy_}
zg2lL{D(m>uc-`?t<*bedjsP-<{!<)DCnrwM(n~q0F>s{XM-8oXqT)x`c%zAeAAuuO
zPw|6l%^2GtWu9kdl7G(HCcCb-EO<HLyV6y^lx=%uKKt5|UurpAW;ty!pSN1_ES4i>
zmZKKSiPEwiR!i|$=5yQ5_@$=!WF{efxsMp!pj)R}5MIx2wWf|~z#{D0G@snF{`lc}
zVP2|fhiv*ayMD`NJ#W*m*lk62e%h|s?D^&8*X`vOHTzk!?MSJ<`?0q5aM`qsohG6I
zu36%-d=}e<>VPBY*~j~xVIMS{KiM^Psb^NY&z|#s$DfBjElYf6+40PJ@R{}a6U&h&
zmcx%N#~xWvd}clIz;gVqdH?;gZAGtF?)f!-?ViBI`QFQCp!aqKM+8k{Is@fH^UQ|8
z5j==SW0;a6y=Y1JxWScpjKqvdY4ZeLf<+Q@s5bC-rbQwWB0trW0RfdOytE197@313
zBY!nS10p5b8J+G(3C6j)YyA9+6C)o-`cXr%A|a@VPphGr!l?9LjU(hbSfS#HKnWa4
z4a4vJNR<|O4EU&oXv+A&AVA`-f)z(~E>8r|)QbvnoEv}Yy2=4@j!ZaG03-pDifG1Y
z#+b&)M)jE)`N{o9iX|}{67yLRV_nE~Oq}_tq<!cC8}Hx{ToejX1a&U_C^oj*l+g_^
z-ONl3SeM#l&*_%Oz6<;6)vOn#Ib~&s&6Yfp#eB;0`n0+9u(@=<x$J=X^#M!SMNRwR
z*e?Uu=J;k3S7@=v%(2e>dereGT%bp_9^Goqnc%!;nMZbpPwoZ3W50APv7~6`{krvn
zu3fTO^F`7wfF_%E-mYCJx7{eW7uf9QG}{rgw)3&J>rmO$jBTdX%e_*UcqGnr89Ja&
z+qUo{SgKS1o(*P>b-@}oJJn}zp5M{0gPxVn{K}mDjb-;&mV?jChrYBNd1^iR#B%(x
z1z4SYVBUYPY;$30>b_qS)@%-3vA~DzA#*3WjvCeo8(jtyaKuCgkixGOj?~(UTIp6$
z0tiaLW4gq{3P-FR7&sym*b|lvfC~^YSdqXHZ;{AZ>D4Q7B&XgrrN06|q_~nAFdZqu
zAc?<wqDaU%Iu6AON(x6*5Iq1mg7Z>MrUt?<@jv=G;Tbix`J+^3l*&M&Ai1hUo?M5m
z^9e9ZCTuO2(kxm;q578kx_`hCSWtqfuv3-$hPa|Mkidb93QE*Vf<hop$-U}C&bb7T
zjEZw2RCyAK$jsmf4<}ONEjGDRDui39YCx7lY^cGea<y-QTA&GMQ@N{)Qv*3I0$kuo
z33aU3H*bM%O5lib7#y*f$a4Icc<h2a)0PCTOKHAoWAi<?LeBj<?#EY4e=W^1mmMrC
zCGD3WI%F<AU@qNTR(i~0{ruXiC7TZVW~6wfFY{PB)8*p<^`bhw2f=`&UfpZWoz#e_
z&027D+3!@zM`e~|YuOIn0(=T=+BKW?oXvVxx1J=~w0yg*z^<LOSx@NJ{bp^~6Yb!^
z*HhEBnN}rvty<)<WQNO-0d<(0K$c7fdv&ch@e}8ydG1*$-djHP-B;v)tz^uz*U8_R
zw|-+j@QwKpQ2NSp@=MF{FU*HOHy?Uz-t(|@Z9(bgeb4))rUs-e@LfL3gMCaRhcsY*
z#3T_80xrm0;Rpht>oFQp#3rVh!k(&{m#1JZ2zWqAAq7Aw_N0!;cxdVrGXg|B1~z#G
zF#r&eU~R|-P*+`P8l?D<F<*c&{rgaIBq8HmF(dNlTW{cq+9@1SFh?9I6wnTDi6ezX
z14Qb?5l3h?6pnC@0FKa`sbFD7Avpmof~_!5tRrTH0s?ZD2Wq$_y*F37G3N@2g#d*k
z1whBFjB^Da9tOFzfaHUywS}ICgba_?PIWPsb%8<E{aHT}KAEdj4OJQjF|m~a**(3)
zz^JrO44%*rI6|(2AH@%DIBUH3>V-i$$;~&Wx7>B0)sZKyFa0{@t5+$nO4pXX+WMMQ
zva76QM_K8CveNt)<_p(fCFY*;%S`oNo8-B2k?XY44Uy$Q5Y*!1Rqew*wHHov#xp}s
zw$JWMerHPJ&84fY=3Sckr~r|G(hc2uPPgU(D7#)<ZhL6gPTMrVby~9=e5xPa`+98J
zM#6r1gQKO>U4{)5ID#zc>n;&>Sn9=)38SO+8B(<SA>_-F+259B|7hO*z4^db=EL7u
z^1im5_{zNZiFx;Duh)N8y6#5F=53c-tXdkla-oUPx6{Ws4<A$?JvJ(9COB{wm>v9D
zOkt$S0fW_h4)PDp$SocK7Xkii;v*PSbIEsrAvrK<0!o|%E83X^HhCUiMzd7Pbt(#j
zv{qF(Vw_iUoq;3fItCg1`zHo7;wuV7j&j|f;s{JR;)td&Ag@rbit5OZ3>@*UfhI>B
zVO))8V`e2tR#NROL^~J+#dEA9(17N_1sAK%#T5lHJT`OAEg_**ZjKOQ9_K)hx1_N5
z4;e~XPAyjn93fKvuKCAfiF>7g2Fi?m9Wz-}c1UyzN7O}ChZz%NAOxWJ5q%1^(Bn`J
z@(k-B@S`3*-i?iII5EL@$&4nM%UW(&)oOEAtG!1<4&Ed7_k^3TR()QQ`Ls0W+t*va
zf4%F;>s|LswjKX@bZ%ZC8zR=Gc&0CPTRhGA<3V+!I*5?Xe2y?o!~54=JiRf&D6`l3
z<X-VV4US4yS<MGD%Q>5N*QOQPv?ASlUe_)%MY8GF?K)S$(M8R2*jffZI<oua2dmfn
zu3jc^g!h%<1M8qAqx`ZiPW^k;pE<Vi8p5xv^4|Wb?;(QAyh`}CWXZR$GrlX^@tt}9
zx8@^XmmU1Zy!&a{hA&F9@4nu5<d=l3b<Ni-30$?nkEorK5*l?ULPR&w4vZ?a35*7Q
z4Z#B$C5kA$G$h2B44p6>aaRd=O2z{w3NHYP)H>8Dq_t2la85gu06tGD98q$`kI1|-
zf2qPUaHI(S4Z3oqv47#*$P*F*0t!cOOtGPMMK*#T5l76y4<sm4MWqpVONn-d6zYg0
zg&jqB29yjif<!cgj$m}eqhpm-fsLA~TgC&R$?=x)6Zj~sIsGFlRc_Q>>bhC)RxKb_
z94HK>QWhPe@VMz_Z;LO;68bu5pz<gg6J75j2U2iEZ_=%FF@gs;LaxJj41N?BS0^s6
z@h3z5XN_-`GA}rLMevr?)|)ayHg62xd#d%}$C1Z=8Gh`=l#?$P=KVVN$dCPYUT(Q@
zThO{Rwi<b6B)TQea-Nh>|HEFjAsfB|wU~UXVQaK(X5+Nw9@*JGyRP`3FZsk=vI1tL
zTW@IAOS*O&mZV$G>6SB^<pf8Yb_FqyNfXRSGo!&iy7PIbl^MS1>rxkcu;G2^fZ7U2
zkRroHOjO-*@eNnZam`NlT#vTlxaq|AEiSwq|K!!;?_aO^?)BDhUgv)Edc)Jw>@Q2V
z+%4Tf`Eznxu3p|WZE4fwIsS7ed5jv~AT}1`1knhFTnCOA3TQw`3+%v;=x*9v%#o|0
z!~<|8l7f=L3upp9=*AU}_z5Z%jubX|OYtK`WAz+DmMh{^bfx;;ARB{b{)H1GD^4IJ
zM;t*yY61vGsOj%G`a?WE14n<HB9Wo-r*d!{!&Nm69MO7;sTp8=14oXfbv%E|iaWmY
z$8(Ab?_*lTM@fnuD;!ZU)d&<A9AS2%hLK7fNk9p4PKNEH2bHFd@e>>|IbsA33uE0-
z;HZ1|`f+jYJ$eL=9^QQB_?9UP+N@0q-IyA>H8XTeR>-D}A=`38w(bnxm>aw)H+bWw
z7VFZRty|-tv(hVVsq3;?&eO-#hsYVvp)1Av{Qatp98!1bOgz^KJp;zx7fObgm8`G|
z99_{Y=QZmU-Fi#6Ueqn80TIdvn|>9A13zI#R&ZoJvGt3ltJe6WE%Qp5>ppLi^T2-K
zNXSSMN0718kPqr(7MPyszAn{sQ;yG`lcvLuo8`SoxcPFyy^=K#OEQZ~vTnXg%YV7#
zz&Ej*a$BV*w@6QHp1QdCf~o$KM!63iST8mf+a7@<az+?~?4fx^8$JO6(7X_jB60;K
zuF%@tRqaWANeoR2O2ptp*R9muN}@BE5sh!)h@3^{Re@sF5Us{ZHO?!VcO-_trX|NG
z|MXmCXpoQ^iq*)VNQm+P0Vs#%t$!^(tjdALAt?&vL~$q}_68VHHORGKLD+v<WeRLm
z#PQs?_@^gEyP<86s9`201UV94Q7!BUB4Z>`k}doAkn2=fPpUu?JV+)*)i4M;k*-vo
z4vwICg(Kv;$VfJ8gCkSVo=tl62p%;&c>1{3%jdMqNNl@lb-QipZMLO_Zh<#tinJ*s
zcw<`2jj2s>aGJK%W!daT)5g?`A5<IG#<Us=<hy*1Pk^Ikvl_2W_E?wglY7qZ<g3AD
zuTm^!d#vVDn&pCKxujdKfhp7ux+PDypm1QWbW$@PN2kZ}3(JwMH=E#NJawsO$~@PZ
z;~Re1rxw(%ph_M277JB`JWHI}I49YCL#pTIOrKr5efM7uI#3*P=xNm9Z=w%9?Y{Fy
z>m5f!a<W=wt_)tA6r8p+c<HPbGsXps8t&Pnr`Qc4Lg{s^#1R|>oYGK^I8t;DnrL>Y
z4uVm2<S`P(;1x9qk^_`eu$1e_N?oMDa4sIB3uqbMg}}&!zEeXq*{UI$Plz6`;vIiV
zDu3&uA|Z7&K%|D^H%LekJgxet@ye;S!A(?asN6Uje<}wBBI>B<P(g{x0wppbAw)5?
z2S*$+i^5oxOdO#^X_ZQxITYtiZ4@FnajcHIg{a2E>biPMO}OOLN$9uP_bQ7jGO1IK
zDU#5-^J!_J#0llW9Ehn9>w02N1dj0UjmnNH$X<5B<G1n&$;c_Zas}cUQcThrIU#s(
zgd_t$Vkqv=0p}sEF)^mNxTd{&wdviv{m5Z$r;Tkte_Hz$bK7Mt3){G|-R8750BTEG
zoAs-Lb5dHSCHk`iecqG?6Gqk@KDZX72!)fmnpr?Fd}7qly31!b&QA8o$?(~E+V9x&
z4zFJ>Gna0&nonBIXEigxDbTFvGz(e<V0BSP*t1^H%!e&yyTR8z^S+HIgT&%dqG!@<
zm#JgwV<w8Cp07ZSDD$aTV4%~$zICRKZjdy$arO%LO=~<ir+aPA@n4@6w0>>#jT>67
zTia?~MsUvR;B~7)vXWb`S<-s>?2sAbnvMOWNv~e+J$u$dQAy#MACWV%E=&Znhvvx~
zN}%6`C?Y2XILA<80Q9e*L}kGd{EI}XNZ^RwudRZen#w&#TmfS00iGmJ61@Y-DIBT%
zA!%}^yA|V8boB;ly+J~M>!&det4|orh^kQlD4fDjBxs(pv8JFLPjRkLzyk^eJg<tX
zP)}|o<4@&4qw%7V_-SN9yOCVoFjW<ljKTqy1U(zIRvA)Sq0JMkv_b~M5DqguloBLv
zIVOOk;#A5Ck|Ek`-V(?n@jRI*oRSZ@p(^AEgozV@##`BP$Q|Wkg$O$qOo&;8MbE(Q
z2?kP`xFX!y(Q$M)7LvF$p+gxVp>Prl98eB8!eXs+=epgxc|=Ehb?+V+6Vs}1-;O<d
zw(s4$%b1TNrjKvGU`klhoOY>;!%`QwU9-4N%7Ru&bDGYZ>@{s%{e)q)V`9Ye6Lg56
z2n9mnG#xksrwK#qCeC!uT1Lbc?;QtxkABzm*OG<i((Rh%x@NhlS#RprB8|Bcn1Ur)
zuj<-Wc#~#6V0pbu*B+mGH6wGQe|oYPi?B<kv)8*G`Ve?1#7U*-S-uqz$Q7rd{p(B{
zQ-Ap!=Zr+xjjP<Zr1@-K6SyV4`Gz&E)~^oPnA&=MN@&)y(6q&Em(6ZFYeLBA_!hl-
zHR;pGBQ~}UGOfZ<o3^3~OmJu-*ax4WA`lpqR#!qv5f6mK$jo)_@(js<5|Ck^5jbio
z_ezkD!H*O(q9Z6Xy`yqg#7S<7IMq1sNTT$<Bia1jb48YpM=16U5JA`!!(b%>M{+|b
zM*~OPRYi3~y-`jBN8p8e83-~?6pmCTsF$&F$HE-HRaNeKg!`a3prm#*sFJI5KmoWM
z>mtr;QZQj|s&HqV0~RjI$b-r~k-($E5#IvB&W(9XAe!=kBgKip3+e@7lW$^?Nce$N
zi7q42cWT(AD;>s6K{JXUwQpaub7%aAG>(q;?cTk4Y;16!KJ9z-i0Ij~BT(wyJ9^}>
zu<;|?O&c3NZCsn_V_Q!h+hSsZ|HxsDk%&|RM?jLHm{0I&8W1{Ut`R?|&cbPp&_Zlj
z?X_ix@BW8P?!B5;R<hYzc0%Atq}x`@d8_%fW=5RL*R1E^O;+<UtA&NyA9sD(J|oi)
zb>FH5Zu6%!8XaFJva={N{FJZIFDOqK8K?-RIKv0ko;0f7f@uws7dWq8<eIU}FLPP5
ztfb)d#MWSc<)XGL=7lYsP8HgXiihF0MuP3x(+9uASb8%*!Y&RQIkIAef%wUmp+J2_
z;Ha+P7mC^yjvznCg9j9js5oN?%?mqg(UQd@ry!~BR{V(8Ad#WM9i5^`3ow$;ABhv9
zGSZurBU!-Ty=de{EmTFIA}YnF0SLvQF%=4^5td7S{zAOr99*cP@|c1WZ@s~l3>+CC
z;zgC-fD#{qVp;3tyRak#Jjhs>e@kOsqmYVUa9wP#5VAC~nc!Ri!FWcUD5j>45<9;?
z30`=G95A2Y0cuSqAeZhV@m*)^gq?*c6tWy<!_rE@$rVp@Cb6%aVT5j?ztquPPK)Se
z`jL)Sb78g2fea((M^5eA*Y41vVdu`CUAqQ=qqw*>adBZidH^L@QdHl*U3<iJ;Mlu2
zu;NO)-o0D(>g9!B)3`XXdP_nwgu6k0kP5U-8}co#4E~_jjPdnT7rU%q?Xf<~XV2xJ
zbH9!#`8B1iWUIA|Dbi)lQe?GU(k$1kmV9g3QO$e;HJxTYW4CK}U+>s>uvywlQ|5Ay
z<asVL#x(#bFb)9Aho~TO9UbT6U9Dvc!Bt@^c)m)AuRSrL?$ojMW=-^(HNk(*q?WTM
zx1Kqn?aYZ`lSYS)8yVKScX*#Z;qSlSwr9^~J$fL=y5JD6Ba&@LkqKosa73fghEM{%
zk6#N#cpOQP0rU^;QBz7nt!ZAMCt5hD8q5eNfg{)xIN~CS+<1%ujpuobY<ZpZ2658+
zZ=^RU=U@9to(e%6RTT^nQ2+%ZMe|e{!G`^Y(#A}b(-BGv^^Q;?L*viLflQ2~Dr;n7
zR9TH4sxWGRGD^saR6z*h{|_d<1#(s4RrRS3)i;I_%1?Y)m=VK>RM}PXAP*^WsEIIL
zNuNT2a1BHkK*YdKYTK4Qn{{ADojZF+Mw+^GY0|A*tM1*~#Kwll#YOb$)v0gas9wF=
z_v;tcuU}-JK4I^_&tM+Zt5@URz2C)00fY^Rpg^z**+3)=U$i0Lg5aU;$)oG8nCqOi
z!fj)^SMGs;<KMKrT{5@yWky-)E^FBt&3e~bmS=f=&{9ScII@=Q)AgsC_1j%{T4!Yj
zWv8$!&~3@AMiWQXMSvtjvSt3RKE$^mPHKdTgIh31JTc;u5kDk7dej>+%y(3Lvk}9B
zd-MoHQtj8T^9LVvdjEau649qmXk1*AxVV6r7`LdXIw%=PWTI4dWJq10e8`@<@RbHq
zu&3*3f7Jzw{6x#kk&0sQylCWrO1Ta|DQ3h)AO_Ir2r^W88uUpgl9fT9P!!#*#!PYi
z&k>T!Q_-zt2jaV`7F5t+B{VGBDrTK>2}$6{D5`=0uc+4z2sq-1)*uJR#FaOo<XC0Z
zq$;a_sJP@BzqiA`@zcnhZ-FCKc#f+2jv%6@lpJOh5GZh@I!pB|eMb*M74#+`Lh1lS
z&^!VR%m`bxcI|3*=)mT<#+^F(bm<b<rAyP;*pP1BLM4>i0VSlno;|~%!(P3@`t)hj
zr%%hCy?lH1Lb)eaZ?T2I5`e52#-SD(4c8D9fDZvK9vC^S_JXMm)+D-YO!e51<-hxM
z^HVPdKPp*K`Z7&&r97+olBMjp<@F)U>%*G$x~_epYfn!6`pNn&E!L(s$xil7S>Q5f
zQvFfGYw<<E0;xmi)JycQ(Dn-^%YcAvrmO^U5lrga7k9z#y?ZzL;Da_Fd=T-$2jHj!
zoTzVKSW?^Gy@Px9M1u8?>CUVW-zo2aBMMAKXdDU;1ZX!ZLc^-Dlm=JSP8X<g47#EW
zRGG(AJM#*K5qgG@-{m@5p2RIjmShkoG)z8ZsFK2|(e)zS*uRl}&quORekv+b<$nW2
zP`j!NQ)#TzIa04bqCk-!IjF42)A-|Ig&<y3N&Wm|CI%#pe8}z1x>uF?kG1$)SB#-g
z6_}%A^(hHmKzER60S{sHC592CI}k*-szmpZ6em*52qHuSP{og`hlRZt5dk5&cIe>I
zzP(RmWRvLVR^W&f6C+qsY%DS!CkT6Odh`g1jScM4!@XPg+6?}H2z~^P5QpFqe36on
zI03C#9DyVJQ%xCDcg4I$*~xBOG6FW{G~InZIRC}SN3T}Ce7yl9J>X-0ebiz;Ybj%*
zbp5-s{Rh5}+Wcv7PFnMvlt8wqC(dd(X;dA2Xp@!VM_`su5W4{ir>7uYYQ*Qj5m<vu
zf+OkOl(4O)e*Hq=K7IQ}kl?31ds2%wJ$u4)n{@5!-=&LZWMm_JOY%CV@8F1*q3~3P
zVFAh~f5^ZQN~#ysIOd2WiX;Xri6cZia-hK(!N|wpM?9m5lWbMrDIAd-2@+LwrMjNu
z-y)blefSM3GDt|3-{3?FM3f5RL9hWwa;{xjeeP0P)d&!tDk`N_lxg6I*GW{6OjI(^
z^cPT4wN@23Nd3R!#Hc%8RMme2L==)@2Lw3bBn^!vy)TmFMD!paB0+5QEEEWlKy^?)
z2@jBAVOXrO$<(D&CsXIn0nyP=SBq}lU`Zj}y8|Us+nAWvF)<-=ajkmvXx_cMcT9}f
zKnjAu5o36}FlGe8*bFSw;It&j<r8S|u(yG*6NcBCGpXL1B`%v*`)|!`zGXwpJ*Qe9
zdeA2C#jt``%N~@h{j4<SZpqp!uNEHvdFY-ip_{jaY)nJR)^crflNIwk=1i`aFq{|@
zLTuxsZ9=Oxl{n&CkO7~gc6<)0jPfv9Q&5uLw(Ixk;oYlOP>;Cgy?TbC&!-l>dbN#<
z3nq2%9@MpKKva}RR8%80Ex1&rF0=_aQY=X^5gL|HC@NB;C|&S75lU49&j1kGTn$;x
zn~V8Tpj?Mi%t+ygyF8{cq{~QTOBG1utTLyI4Z5l?S6lv56y-=o>T`S-Xix?NMAVex
zF(3yuk#lVa#R!k7M)+fC9dX3#Dyf>PbI?T2e+nhXTC2MM@kq(vNPm3h?XNf@h`OkH
z87)Au5$f<r!xV}BQi<-P9~Fqe5u6AdK_pNe123K#+O(<Ju3f!|2x6CbbnNKesgr+X
zWMJpcL0!7Qk{Gdrqocu8FdDp=n3i3;iUGV^H}~l1dhi8E8d->8oCyng@*y?Sa^$<n
zjo=7=L{uR7$oP@97ffrIw$y)PYKtxDA=}r5Zru=)yR-HFQ>_nP4c&jS^`6rq+jfO)
z*&MPtr}fsg!j58XQj3)N0kbDH9yg-ahaU<S!~BT37$O{U7Zr4aA4wcB=2HNQ0gm`0
zT!|+^Q}^z5`t<Sc(IcQ&ujV~^wC>S^F`+pXVL%{t>jvlb14ogOE*(48We+$x&@4cS
z+-N9TjEaB`RWAiw13?ggqC?0-ke{@;qg1qZv*u2UA5kzRQ5!fSH$_?ojude!!d6Fx
zQ*o4-dV30an<pKqNP&m~s47rR$_61pLV}Rka#)3Wg#tx#23MlA<i<yhKO+ZTG}2!{
z$$+F|#owkDf9n~eJslfa^_{Ab>I>>f`6)I+T~k?odXtVbIuYr@5kwFPM6RIJwr#Dj
zuzKO)&f($El2`lo-km!KcIp%q8QCl<szsMBEdf#2t_o8vqN4-4bV2Y#Bk?XE0wxMX
z5FVV4k5UYXjU$*Me^938{vUjR|K4ij6Y4IUZd$Xn#fDXFwr8~2nca5B`q1qnwcfs=
z^|p1P+p<G<WVhLo*=BQE+sx&m$@81fpBgY}bmIX7s`c;Bd`IvakOHYQAn-X<k?00#
z1U?6{C<ZKvf&nG?AP=L^?$)hQw{AeGDG2J`y%kGij0xSkHIIr4h>i}5iZVq;dUovC
zC?cXxL_|%6Bh@&30z}Y;d<aS~2uV>9y`VaR`jV7VlrB)s4vyeQ2zaUs9H9h`cuZwT
zp1iBNk|P!=imr@)S5*49Xy%U(tK8lop*N^Vk&q&IJnRV^Nq)q+y2t}Y3s6*}5mdGY
zj(FIBkK@T3nHaTxBOk{?{)f-u__E7H$6@VLwM>kbTY!k#DOnVuLhKV~4IOg@W{6cd
zLO~ZOK-5IqAq%0dg&1rFsi5=@eJ3mobG16*5skwmm>+p{?C1|O0!opQO{1ckMMlDy
znny>2DTZzmQjl9@Bp$Zk1w<qSA-DsABA-w=qEs{>KcQ+KfTUyNsxh?z2!jUInmEdP
z-n8b)3)*BZ3)`?NY->il9c#mK*S5{gZnrbL-S)L%+tR`|tPW3K7QTF5yE#)@OdRbq
zaA2JQ1FMmG^{z&UF7j;CR(#RKu2sY>rpB(K?gB@_qC7l+!l4RH7@*dVi9rwz?AkT3
zTeoI0F)dK+lcJ*hx^!V!FiA#C-5Z35zsHUYpoCnfrbr4(fRy|_<-EpSqDJ&W75%#^
zW+a6fT7ck{pijtkEtsqRjw1mjsp=ss1tnzQO5&8YP-r4&g(lJ6GW}cRB#8(5QAv>y
z`Bx&Bx>S)6g`t9q@+lsIP1EL#146I?N?ZpBs=$yOZ>j1VrTrt0$izr0TaiPRbO(`C
zmcap%6z|`uERbZUDx2)yOzy&RTO~|SMe<-@o>*pOg@`pW)cdIB&?*RZx75@%m&@qQ
z@W&n~<XeUm*b{xKt|Mu*Y{@1~C$T%GjdEr4Zo78yqxxZC4Z|Z`I(G8t9Lf0X7abi)
zii+~@+BGOTx+(CHiR)g`(QeVvb#c;#6L^+BrT=QN=GasYUp}%_6o!w6g*!!caf*p`
zit9l%6DJ}B4H{H?&|vTJ2`y$#Zo6<s*oyfb)-3CowW58_itwD2_Ss1hS;-yJmUURU
zsQuzO?PpAEJ3KyQ_;A0W!|Dzm?DXM>PQCkx-0%y>N3ptL&=49G*%V9(VFA=DJVH1a
z!8aqRdv}rI;=qwRdb!xxpzhrR<Kmhj&c((8DAfB@)0av`M!H8vI!8pXh$h_Hqr*hv
z4GtDqK)j(PSxn&*tWMJAw7lpA`CWCy$DQZ}KQV&wByG;S*s0PHbOAYVq_lJjiJ_iE
zm!S<qu`Dw57P*OT^%ObN%fBZG;E#my_E)Ot=M5?{NJ!MkM-+qdP<}d25fY;@)Ivo9
z0xB<ZmuHLu(+HHgvb63_e+x&Be9e)y{mVFF6;&aK>R|l#R|&6lw7i6jsxSS;a3Sy#
zBoaLZA<=gsp#m%rfLKxw775^BHUn^=4fZ>eAQeb4qWwGVJJjsZu}+7M^*VQUj*NuS
zcp$cQ?P}`Q4Fm;r@9s~Ei4jTYhhuyp$e7rM-MZK8+7$z7CrsUN1<x2x{xo~D=G7?@
zv_$)JMS68(5r=>#P6Gxyfra7mb>ibqLx%+qAKqd3@UF8acb+%B)8g5Yi)VLCoY#5j
z+)j&Tc3L>I<D6+7Mvd+=BBA~0(QV^D_Kg3y-jJbA{rfw8@Byyrow{`wNTE6m4vH*k
z7PKqW8u|y?k&!r;69~eJ8{hRYF|~U4#=kvw3;uC&Xc}2F635tBlT1waSbcU!)esq3
z5Bn(P++H#!(PFe7Ia4D6gdhPED2+NQk`w2$BPx4=$ShDGgH@;iHE5z)=m-*}Wo)63
zc!1mh7rBY%3Xr*hEWgSw246<{E0XwYg8AcJ30p@J0?u!ckbrzs!HFm~Tc`w-npX}5
z3?`xlB+2oX7!8Ccc{w1M{w*8<CB=D-<Nt{(IRec%2SfxX!WzNLOL)psyr%M~xR1Q3
zuBZXT7)BUF7{_R2(JYK1vQmnc01o}dctU4!6x|1tl4dFbR;|Ro7!nkM2l%#aYqkqx
zeqAptym3T(x9|wJi1wbHI{S3&=+mKtkCc2+3;RcP@r#V~ii+~;+RZgKu0d4PJHn4g
zgy1-kuG}CXsDiDy*zYlFF^B<VND<xv*~i8SR`Py7r-1|O4*tk@@JFpa8WI7Hh7OG#
z9^W%QzUQ!Eai4tBGydZqpN!}^Vq|Q>s4ip2b{R1uJU+hV@ZsJA2h|-oP=E+X0ucNw
zk~5S^k25^d2#i9s1NEhX++vgf3t$|iM|b7x@5RP7#QLIpj8Am5Npe{KXu)k+ai(fi
zllc*H9UQrCm1rm60}2EyhmaVS<@g{-9S$NJpCe<k7|*LZLLf_0CMEfuA4z0!1v*r~
zsm!X1A5nghp~_A2I0kve?=Uc?_kX7igDQ*@DW5pfjCxnRB9kB(2L`8p3f`xL8CiIN
z*(zovKph~!(oEXff_l-d3ha_2^Q2-))S4u+lBNA4KSGvMa-AX68FC%=pTdky$irk(
zN&jF+1c>w$#yQyPknq=}wsmt0rmTK)1UUQzINTLz68ci{)5{wN3y6ypNd(B_8S>{k
z-WB)?*J&JF-vc)ph+K3ZB~galocjj|>ZKEz6SWK`=6H?fEvwT4tf~vrYE_+tpw2Le
zHwN6x<J$x@ani2cyKUOk3JJmePJ?#soWsJ<GkAuDc>^L8cM%c3k&(Wj2@3~KI(PO$
z5fL8Vpi6XJoEYPwSFyR!P)@4D4W$T88H95-glc9Mup|OILd<B-ur44%P~X0F`}Onw
z;DeR}2DBeEC~ENFu7K#15pf9#Jx7l0`N=1-BNJlBjEx;Tw(EomU55<|8#=7TkRhG}
z2Gkuekmy1pt`ImPNE3qqRl~9!^L5&UW~5Is&~4cYcN0Jfzor7_%E4);&WNCOx^;)+
zF#Gdu-=0JTsTzruBTP8FI&^Sr)21Q%7PJl2i20*j8i1$Z?pqAJ_=LglocNsF-i1FI
zA0I^w^l3GyE2xPKwC7okzQ9i%(Po8xU650=rqwAbz9pegI*8YUnpCH#kRN@AKMh)p
zNjH$;MD?kfdeiR^gMtIWvY`!*!izhk;wr=#MKjO|k8y<X1TA@qC#5%CF-nWK<R~qh
zsPZo3Kc8mPG>H?WET%0GxgvOALc_LbLF}^{Ac&EH0&|7(^9-O<ZBDHrP6{l_=~LYi
zM@CjELjy;~<cKfgLIn8puBf00t}3cSMYtlW)>y>-6p(Qh+qy|y$0I%a8UPyRd4_Lo
z8bo9wb5Iv~k&C>`TUc(>CY%@$<GMtsXc>x4Q<zM&o@fnGB(cR+&{FF*HCp1mq?PD9
zCblhGiW7PhWg1XoCQjo>y|-XSII?aRRwpE+erTHpZQHtpgrNHN3=Vb;5BH8}?;RHA
ziFpI+yAB<_!^6Em8CVMsXStT`KX4+VoIoDXTXmAsFhE+WNQgarOVD$B1TCRq14;y{
z>(i%x@7_MWdpGafw@v^4kpl*F9W<zWe0<!nVKKvo^%yiLdid}zqegX0Na#FzbjQJi
z+YTAhwEqD2{{3qamP;D^5b2Chqn#EbgRc(~kr;LaMakH>5HK|b2z;92;qMf+1O85t
zU8AD#gzrJ6s8K|OPrG(v#OT!7D<Z-(EZhwog@!t}YE`dI+ghP*-UURA15`mZBlIr>
z7~+2k!$o1bNndj$OdCB#UvN<j%W@J;FSKZZms-JqKwryNI8hhpkRq+b-GG4VBwiN-
zvWFlW1)Qp(Sb6NEQi5_^-GnD7Zb2<vfh3?4H}^_H;#^RLxAKN6hz+vgD0b5{5-{X-
zXi|;gJjpGHU(udKQ{~nG$r>ur#HJfyj))GaP;7V#<ww#`+=RQT5mc=SSwi9Ykbxrw
zNk=GguHIGCBECg}Ze>eScrgshGNb4a3<x;zldApx(^ZZV!Y{q37v;y*E!9yD$(5-#
z7x{^^LDZGJPA2Na!&5xTPlYduHQ|+xkE%~I6ezYR;=8eZPY4DglCKyEgXKsfaD-!a
z$(Q9iEG(&YsGu}XLPOsn=5L!eb(^=S3;nci-7qw?al3ZzEnB*@Ztc#99Tw)^wyj&+
zwjLcidWMHXfzCYBI+PXLcNp^-sFB>r3Qh!t2oiFm459@<lk|8DU%*qMP(%YIv}drA
zzVA2e)5pZz1RVA4+o4}SVemG1aP-ijaG&l&h9K#6`D8@r5hFT{82P{3yVLGEZfi}z
zkwsFXIEs@<aUR4;A~jK#+xB&Ax8o#jrE`=1a_|5DBmHc==RhS=wq;xC4{4u;RSTyI
z1?;`?zSsZ?sCxe9&66K~IC}Hu!JEI${^|Q$Uwq+_5YOUcXXOFSiNRzcxqY*^Q1S4S
z{R1ysHWlgff`S3y?aQZsxO(Nqba!8Uy71|znt~M?J$drr^3oA~HlDv&d-{x;)r_2-
z&6&EiN{W4uNLB(8F)Rgjy_)Z9aBUq1O}z;#KvH_cRn5P_%<*x(?HLHGB|o}-u%Gt4
zx(y+bDuX4rghAQ?A)Wk2je?Lb8o+?I7ap8!J)8nb{su7Oa20IiQlYC}aZ`+QUL2JQ
zVC_bK+tngI3ddCuV?^ram<ZXzEj&7EuV}^{XIMZZ>5a<3#^wZ;Nm13y+&13why^;8
z!k}v;iml2QR3^6^6NxV9AhhSj$W<SJ@J=~@X=JN~720_u-PlxW`s+sdh&#5W<8mn8
zwM&(W3|&no?H%TIivX*vK?}9O0*ypPCG(c*PUj7<)xKur<aAV_o*#h(c&J}3xo~vk
z($u5lJBNq&j*l14&+ng|FP@w%9~~{6pTQeKEnQr!o}I6ro??)z3uk9Dk00OBT`}6y
z-pY{6<9axHo7S5!WnR{Xa86J~wE2yqk_Sm9(7yX_{@ZUizyA8*yYDW(`_7{AD{T7P
z-#-7(e|*k8y?OKM?|*;&&;N7vU;lmekAGbL^{?F4{$KvG{O$j|Yx3M|wn;*rG$S&K
zC|U)1+ke_Fwt@<ci8dd#b?}Up+NiL$cwg2?aQ5P2{>hUS^f^C&aDKjae!lwr#RHn2
zovoam-9J5DynH%$d^~-AephQ;)70Y?ajl<U{U1$)Qd(11U-zIaxH=B0q~~*V>=V6>
zM+emvtTRXTX%A-6AqPwO3`x|uQ)t8*)eQjZ9RS8Ju5a*IAixMntp&CZt{(Bj44U-2
zYA?Y35#*$Y!}Nljuf(kjlzvXQ(1q_*s^QXBb!ByC4CPv5RfeTL>fsTOrU7p^jy#=g
zyFco#t?{lnCAimlMTA7E>|twigXaiOorJz1sz)q#vRM_6+Sb3HUnpf~6SHJVRnJ7`
zUQZXF71O13)<`8rHge)ob*S2U22~#_ITJio=VZIOVTJsnmB`fI-ktsZd;9w{hldM?
zhl~6Biw6e~RSe>oo<3c9^l0(Xqx;BpcsP4>H0=w{I2cySka_j2ct(<tD&ny)yS1{s
z!>vAMVbPj_e_Kan7vB1pU+#IZ`^`5`EZeJP<UhRp`+t7^=FRILez2F}#hbr9`{zHO
z{qW}8COb>xzWHY9tFP{IM#foRe0lrXbM;%#d|T<dCFQkMgwWt!-4B;YD2=|E9$M?i
zdi(vIlaslVlSSH{oU9%nuQ~e5=RST+%{k%x@#69Ey_1tWjDwG@8&=Lpp777#3DtbH
zu9V`0)PiHE1S*E!dO>(pvkH6KlN!1n92zqg6m|bttaYx6fEXkY9^k9xtalWT)@q{C
zgY}6tuwDahm9hk`0@ZAN#?&UYGPsBxojGq?oHX{-h&UrI6M2eA23q2AaPf5H2kDzs
zYWh}7Xv#>uP2-FlDD^XDA$Gn26c%(Ibv_pF#sN5m09A1fx7BmYy+jS>X*3MO)wvkt
z6Ge{0lRp-3mU$;-vUNK<I4Vw|!h5OYF&U0<NjmdtKS=1u20Q?((QXU3x3?#EcJA)%
zOz-Z_?Cs5OZ#$wA%G^IV2z{0kclF?4_TT`(s^g@s##0t<gMxySJq4s9Ez7VH11cBe
z+JuHV4KB$*$qP$Ouy0t!*Ve&Wu=o7iZ?CK*|I?pdeE;X#6ZHM}&;R<rp8oH@KmGHc
zE#vXH$HN_O48Fq|@n}fo@iA)1xd{LpEK}vOOl!jnt8~X=a)wQMXl<mUw>G0$I6At2
ze7tgeyxN+MrQ_pe4aNR`Q*eLo;9y$Y!e2BW^tL&z=an@Ss^SE&R~!lhgTG-Dgaj(6
zRFiW1df?UhOt9bq##$Jm*S$h2w3^N0MX{rY{Dl^g9={2mnf5wR=iN9=d2gof5`t2#
zbWqgrGm@Vc4b>yb19%<;gYbxBY7PaP$XsnjSTNQ)8J6+;PqI)cS@q+PM7jMfi5hYU
zPlaqXN+g;(BSH&%`a-2)njY`>=FIRo%tySNm)P&6l7$UsS2TmBkANH!fElQS9v49(
zHM_YvvAOBvK6kgarZ+cdx3*>-x3?E|b{4m`=681&gq@wa-Q9V|ot+tU!#n030*sZ|
z7Ldpj2}PLNdC4FdfU|Z2l?<$2zMOyga`n?sEhISo?6cF)KR^HCizi=x`J^o@w@t%3
z*o*JKzxc~v&&)-5boC$qVIPMTq?0e(hgM}GH+iO0XKo>Nk)oMJ1*tDoqCVZjCSnNt
z`?qmqe_v~`Anfnsjvyi|Qm|<{v%T$|<P-db9MT~PFgk>km_ikoxMQbMypoEjhY|JN
zy%Hu^3Xpm}!4h)`y=Hrj4`J}J;>kQ^1wxUWBtt4;K{bPe{YTCa{=JgRCmD7g#RAfI
z2IY2V!a-#*SGQsFv*m5=SIto*+hc1p>}<U;QiG6<uC}r|$slucb-rzn1-wcx_?sP$
z^9wq(^`1$8UG*LYm$HpfvZZCOeHg)YXonbq{I!qIs)q77BOU=mc$8zv<ycdr>k}Ir
zlfwEs<e<{b!-sRIw7EHtN1K}qLW|69Y)m(<NnEWobTJWAvk%Lt1;R|*Yc_u4C@V3V
z5)qc;(5=!Fv&`o5a^m8`LcaA^uXbL&I{ft0N1uIm{`&RF>({4Wd~yEy=Vv;579d$Z
zibvo5$s&rK*RNOXc7OG1$_UGzBMXh<jBtbiR8}48kzolSz$AH`ca@rw3B*9C*5|*w
zyQ{63-Pu`aEyn2h@Zr5^$_VT0QyUxJs5}uhX-XFsP6+swNachOp;L)LQo5#0U64Tz
z9Y`((OH3rVS0-}1MxOxS*KK;ed6(Q0Iv*7m@JD!(T%!`1O{&!3Xw#^qEYMjH3*^RR
zA~!krUo4PYhDW-`hKdV``t4pkf;)s<s7P%CM-#_J6XfzCFt)1ij@cFNeBQCpm{qU+
z5kVF=PPfm4<|PbHX5YPg#U+bnk~pRq+95SULd%}@Jv1X+(zq*LU~a4#^-mIqF;f9+
zYZGg0lMf!;5!To5J$L{@_ck^hXCFSCcih+zX4>)I`nqHj*auxuAutP*c6;7wFB4!2
zvJuHuDUpuj2$lE|<JQNIXD%<zm~B0OzW?II(bW|aon2iWefHTIDp_G}zsA?!oY?OD
z$FDsq-TL&?)vK$87cVScs<o-z8PSUjHkA{AO~xiFSgIp}sX+iB1C=Ev2{xJj)ga)}
z#zqk*p|u;-)QrqNcrdM1dGNr8!)jhyCd1m7t#@%N5deb!9&vJrMn$U#JmQ#=PqO+k
z5~W(BMUKDp-3vdRewed5Qrr+iy%B&S5)zfn#zY<%IY$0SevL$7klf_ie?1fV^uUbQ
zbnhhct%vZ4ka$#|WSZqZyv(EsBH~3Qv=eDesjKyZp!rIZcbMRa*J|}Q3;nbyT<z9~
z*;9$V2FXcf3^J<KjHE#Zq#j&#QV?lhnlmXnvAR0BvT|o_ZDw_KTEM18s98J`THHxt
z3Xj0Uy#o6%7ptlQV#Jcf>pYU6v9-_}DjD^koJ^jcn(_0*^Wo*?-m_<i&z~2SuC9)`
zBp&MZYpY?8zxwLv>u)T3+kXApvmOt#W}ZKv;*2=8tQwUkr9xz-D>SAffST<FA!nx&
zHldPf`OVF{o14{KU=0SfR-&4V^>v?Ws-sqAWd)BW<lof{ekhARL0}-1__c~)8EZK8
zob`bjAz11_>QL;Ss9TTxKZ}9io**a+gd#tSbt*xTKxWgwfaEBilk^(8l2|}K$?zJF
z+!6!2{ig0pWVGbK6Cns{Pz`ZfsJ~t*hDtc%n0Q`EH&tgwm&VCpprstY!cO}4hW28v
zw`d_b`MVK<oKnA*J>S~du4Y6HLXl(e+~XmFDMXVzUa-HsJh{9KIl{Ea^76gqWrP|X
zMOIgXt4Y@A28k04s7OMuybNk`qF(Yw9%xYzwDSdeRvDoj9eH9kdwRNZdb)mgw)OPs
z-qWXt7Z-b%m%CS2kFKr`TW9a^e|*04$3N~ldMNz-`I0pTzF@0ch(|_7dT8m?si3*m
zDe62T2FoxD!2m<O6F6+5ezO37%K1*OtyNfEooNk-Hl&&n@s*XkNVK#xneTTDkrUWg
z?T-OK@w6MgB03t$W?-%s6gmXbFvAX{;ILt1WXbnp;5VLpFNCOYvk?f7OqH~L>4--p
z?=65^1osMrkK~<4l1Uuub<FttW4g0p`fns0>iEegfB1-Dm~%HpEKiGJ4U*q8LH?*s
zGE@zMP}md{g+Y#LwyEj)6wGLN!DjmY{i&s;>7}K+OG|g|-*>#%{)+pmqq${a<ba?B
zQ?8LHa!%YXXt_if>6OI`2*A%P9UM#^9NaTYc68+7)aLp5_T$If7Z<xvp6tDNarolJ
z-qqE?%a_|`A-?*fy@VD~tXM>GaWQj#&XJWf3XeD!dZ`y;<lT&^g4ic!36=0Ybs9pE
zhof0tMV9H66$)x1?g`7wcLn-7E-tc0%{Dhu)G^8iJPc034xt|J6_FN(?u<MnkuxN@
z2}L<{DE^CpG=z|NVE<kS#a!fMF6{t+YC#%MIU~3lYcK_Uha{3`|Mg6$+`~|J_Pj>J
zIHSlp<j(E-248)I;ui(C{KQ=&piaEC!+Ut-y~J(BCL@G3suJW9cWiBA&DOTrP7jN5
zWNKky%5ib=&cec-#YOSE_wS=m#q~lL7AAFHV@WXRxEflr13;wn$Sq1#I+rAHNjp29
zJ<XVQK05N?X5-}K;p4}9PoCh>&c(&f)2G`{pKiW*vHS8$kIv5Abx*G@E*1@`&dzQl
zk)EM>Y|e<Ale7Ghg%Nt`tSzoiV;S|OPRShM(>69Qto4`*aaxPP3m1u~+}e=h5zB;1
z^i_%wedR0wAvFbMIi@(+P@?n!QbB0!!9yZq`~(!c7ApD|!REsg2SSdWN?mvg4$Z|@
z7^Fe=;59rNwg54OdwUBY&;I*a9<{Rc<!WMqB#lI)&fD#Y(mfVHA}{6k<p^Isa`M)#
zcY?1=NRac*0=Fbc1c~ad`ZjLe;wWYEtayDyss4_kQgak)Q1!(KG*xlwmYYUM3#_My
zO5zxl(4N8@rU6)u?@Wx$&ri(FK@J{Gwqr4?1%L6#GxS=j)De}&BxWQ`6aEiA)6)bl
z+p=@ZznUYZXL6%?rODmhd#0E7_B@~R7<5zbu7%AfPqr>E6CPf@vW|3>Cwls9`Rr`|
z^z?39W)mhBCFLn+MUaFTZ)Ipz(5j}e9m@pRj58)wY2BR8G#%&XH5WoP9Z{Jz*r5$$
z>w$Q}O%jDlb!?nUaiAD9hPg$hambl&#-R;^YBk&Ink55(YvB2He@7KGZq+-4x}j)C
zo*|EjjX|bL9Dyn=0O6&PGS(Q9NS^&C*){ctx+e#d(rx-0q~%sq2i`dh-o9=b`uKbp
zWu3{%{!NyV1?p4dMX~lF>7t1bgh_Mf&gf%FUXNd&3>$v|Q?~ht5>pstdBw2=WJX~#
z<mS(ZEg_uXi-BQ#c2?cm3gc-3mjw1{h{7We5OrGGq{rN3;}P&6R6%QgzT!R*FF^~Y
zO-42xnh}77)IJ4=Jc8cfmg4~X43s>V$(-}<?(*K=+Wx*p1)JD(e!g>ZviA7#=IQC0
zm2c0Vdr-TEM~|N@H6Be{EX^6|912+3d89&BMCVbL!AbmLoUkAWA(FrmYZ(?7Cz}7&
zT%b=8Dh)`q)?F7o+;n>z1y@!=H66_jfsjIjLvdkP5r8!2?1)DJl9Pd=Y~KsT4)_sT
z-fe+@`^n_5z68QY{-NY)b4dGM9=RG8j7%{e83h1C9u3ux?v8ZtIarUuu$_s3?UQ`O
zYhQ`2kAk5<`&2~H3L|dn&aE`hQgjof$z9x1Zp<+Rlu2izc>Ga}FrL|{8tIJ*^|Q9k
z@+TyU8*)<IQJ~JaHj7I2Fsp(Y#Ud2q%+BJ}REtc^%=imYZyBVZ*l^^GdJhDN8jqlh
zafk#eX_v?_pwi^lmgl)1@7~|pS=!%UJ3L%JJmi=jo}8>ddQ{8aE-rNE)?Qw%J$tr%
zdbV(UJbQe6*8~L~=^6G;9bM+e-%?3E#-4#n#2{phLl|19#NdQrt-o4owibii?X8Cf
zWYT#LDcT|d)m@oTN^Sz|g+U#ME(t?4w*22|lY^z44;1C;7B?oJs1V_AV&)^B=~U|N
z0HsJ02*o}S!n`0<{-~{^3uZbCB6)--d4wPGC{^DX)Yb1fa7Lbu!Z7t6GnE}4aUA(9
zESe-z{kq$?dj2BFGBs5$rg@p_(MgGVJd{69Hb3Rdv*o02TJNS2u2r86O(>(e2HlWo
z$fkih*ip+x8em}Nc7qM%AWjhqt;C%~bM1x>q<RmKf+gzrswZbtZPXPBsGudVQ6r%e
zmt^^|2RECWb6Z=ew6wdsDjXa<I6QoCbo2m^_@lG4)r(8ZN0%=z@1LI4s?npPDGO9g
zQ^Xk=aLG{Sib#b<l9&sf{RNUvrGNxZ1cYjwss@Cbb8{$@286zog1^lgrFDYa1zOW9
zA;|B?oRlV<4Pk#4NJAbGb!g0+^*)5q2gYw^GO|zW-6>9p3aPIc=Q@wtPAfGyZhOmm
zQc~7kxjk7yX8)z$uaW3l4zOp5LNYOrZPvQE47GM^q6RM`@MA$-iAc|1gf9J3^lGD_
zI34$nyif8;`k_HOk75L33>y>jrzN3yr%xiz2vn0GZ30DFzoou{(P)B1fHZ+YjYOJ)
zoG%8Y(t{<|OTCj}BwN#vp8iHKDcuq(DK|W7Udf6Gk7=x$Slr&`l2-6&Z*QehY31l>
z<>bVa_{x)u)n_$Lw{U!7?WlPPi)o8QMp($0PF=J}g}#-fxp-D`hLA*!i6T!FX-F7#
z*g~0hoM<gZxnKrKa94XOF``e@@Axq@*>RXs<PT#Xokv6b{EGMxKZ(aasi~NV8N;Jg
z8IXWV`J=`ojdQ5ss$>B}w}X5F%P!l8@My?HGBCcr)=<=*+lNH(rOidW!?l|?4)Y%x
zA=TH7V5Mj*5a>d$fJY&bqpRH@fm2A-C<8noR0BP<GG3Ey<}qS7C<<%>QO7P-1kPXQ
zNhP>T5ozBP9WgxiZI5(O$+{z}`0iVJ#4+vdEgc-JSP*Ny=<)H=`D5FlmL5M|cyv5_
zcxXkO*@;?P8y?9jipZakN*oFkF@{uXbf^Z0NJ5%Zsx@W9no0FIJzZ2v7@Os~CyHtq
znwEq?L~=6u|2iH;1u}P&ihRW1FkA7!UZJT_@^=V@M?iu{-iv}qj{j;NHT7$7G?bJ2
zP1N|NpD{;ypr1)n<{ai9gmfdQz8E3RVCPY%Qs>b%XVjn)Xz@E1DIpHm<5(e2haF|E
zh(Lwel^Y19E+SZJJn;x7y}N*_^QbY}RJ?TpciXB7O9)Wu{?^vg_V%*j5-M3WYU2hf
zot`aTUM`-W&mKLRIXJkxw>K3Y<*`wCL|;5o3csMxp@|ZYp-4;Y$U~P<sU7iX<acmK
zoYpzER;9YKLub?>C&M0`6pwMPRRk!eE||RsC*wxL<rp?rrNT`h#jqdcIJ8gdE;SY7
z#4_yp|BOc&doo=Upa%YJ?B8btiWhorMmiG{&{*>f*M3s8ZrkXB#QoPhfr&UKW%AT@
z^fyLODA*H2qsj<6X$y-rm7SI(`(mtxjz6;6zdbOz=8S-<&?28k9DFP+(F>;<@aouu
z^8({1M2w+!;zDYt-CjKEE-6@AUan`LZ56@X#>T?>`uxL(mcr`bE$;4Gac$><M@x19
z&DrXHdOCY}WFLnW<~A9XGcq#Lsp~wFKPX0?l-}hLxrvrY<;Y@=P4`jXwY3=UG$1j8
zWKlf2cLvG4$E6Ye|Kt%PuzyV5ah}Grw;qY43z62ZHL%9!42~(P!&u2|oA0-dx@V>f
z+602kE27U<yc+!c9n3RSGJoCfh&7pH$lv53o(vsLKKR>eQ1`y(Ix;;A6=vR6?R;!h
z;)&X-?9p~hTdwRFMJ0-)F?3A#rU9w6sCoEuI^~8MDu%}qkYceBiN^D>1I^-v%c=oh
zZ{lKArJH77TC#_<9)P0Kg9o*E508W_EXSj^g<<y5@f>GlhGGA}^6V*FflSkJMj0Gw
z9OQ|iwD5_^2=;y+jprO9Qb<A5ai}J!IUR~8lqs4W(uR~Ba&Ko%w?jYEEcRP@6exBr
z-bKyO%)c@|%sFNCnj(KH3%q}+KZ-Se4UcLQ;>f%*F`CHuC^Kx~Nauw)glh&t7AOBu
zI4pi8WzE;MlrDuh@~PUq>uFIZW{q6p{v2Dc%vQ&mR$_z@JcvbqPg?sXN2v4H$?ypL
z1nC7gHXs#d!k~7fU9}QDbma7whuu;y!%B6=d1<6?8IEcvB{oM%3~P|Am$=i`vlW%r
z*K0kw89ZAywzlkb;(%rjk1VL0IXRix+n?ImxwExppH%TE3o|qnY1V$4N0BEY4KdSU
z-<pmQj~aa<b{JIZQ)Eb@sMf6^lF&0uMUbsG9oO3ApXk>Gim~cV+Yasg>*B+lQ`XQX
zBu~>i<Wc4setLWqYb3)iSjXW|{cHY64+?tYkIdKcN5!L0tX&lOWa>^$bax)<*QJNn
zi-<ppuX%?`ll3?Wk1CTkG2SVLO)kYBX*QK;VlY(lC^kL?DZn*GAUve?fJY%w_eWAP
znt(NpM>0>#P}z3+bO<qcLYb?PrB_PVOT@`x1qG$Oc7m?9I>M?O%Wo`it7W3&-5I)h
z=ELoztH2+55rl2vyL%x~ZF)+l&ZHl8;*YYjF0x${Nh8(IBtbCWwF~(DZIMyKr~w&=
z5rZVijXe{QPsRrM_vX=u%rpEJ9(8}j=70_Gs?5=2qs|%;!LOg`kaM!#@^*aGQr7jl
zYxLl?uKJslqx>5~odH*X$K}>1sb>E}cr<Jb!8;5Z!>NFj&_-eJfF}?t{Io|89iLsJ
zM4S)Nq#Wb3dOMv;HZ_kI5)_rJD$m05*1@yCNw72Mo^WvJ4GEsT-VKjDS?<nAv!Fr1
z%BVo*h<8(}oQX(|N!EEZj5PmS1H;ycy=_TClRzc6597`xL6oIwDk3cgYm;->Ad3&H
zpxfW=vbttl!hhUfw~t85QfQ38hJ@+WL`Z?OM%mWJI7V_OsRn7?@@|hoWH=P~L;R5v
zl^X#_l0`vX$d9Xg&#mWw(+Iu#-uk2VFq-b&C5aEcDm!#jbX^#vD@CtiD6_xohK5EP
z3OTGGIg@S3BNC#LwG;F6)wQ!C)HaPacW28F64{e$XAlQe!=jUud;HP%jvigT<*Coq
zQ7X<T{nB2Q-9$rqax(HqqaeTIKPtcXD1AUOG)3ZF&7Mz`{Ws&0<*7)NMXDj!zm7**
zZ&tloiM=*IN~Gs6(kn5wf0IWj(;1XVBT>!fu|qm_YCH`>cr-+p{5x_|Rtg=;Ab#_g
z1i4*?#Ovrn+t56#_3+5rHVdsS7PV)gZTztX)kajoixH-{A#d!l$zp3euXq}*sne;W
zix4eJ`0<XFF5XbEE>bsIS50KBwdGhPZ9PeEA(xUe>gc!on|LB!&1;%s_rHxl^4JJ|
zG{XN1e`I{5L)GTEYBa%~jY^})?RQr%q)yY38+X!>P7kmx`e~O(9l6o$xB7BjZlivk
z%-gT1syJ73RGUK{&CPSZecrp)L}^Jnn}WT1SIk1K1<KTYa~3u4-Fl}5AvrfxRJ`S1
z3k3<HXpxFHsr`NLFQ9dFZ^VQ1A(ixp+X@Ox+D41Xxg^sL21-b@wszOn^^J|G@JOfb
z;9zQV%Nr!}zM7ix&RCB>iZjv_FhUjgBTX4eBb93EA>#d_W9|)`+?c;2VdAjG__yNG
zyHCD8Zokf=AWQ7LP9Za9u;(e>Xl|_r>7RrGL!>omnJTZjIJh*8km+s&sp+_>8euu<
zZ@W~PR6gxwBM$fir1^&miVFrhkJ{9Sw@21H%239O1<Z1Ly>nI=Vw01MfJZAUwWo&s
zR;_Ca>}_|nh^~#ZJcX>q<R(lE`aDRQu-NZTqf*ISMYm~_p=R&IhlmZvh5&>4=9RL9
zuNITHJsQ=)TUnV}T@@zR*6dV8rOBOLgClF|rtGD%k;-(p;IR=NHATuFnPkuughzm#
z(jBk;`gxI`ppr|mYLEEa(~BTcF7=bq(Q&Be?>u7v4;dfzb*kY}fSqH<|Fx?07f0}@
zRplt+FUAR3q-vsXoTkp;7Y1eePPT6JC<<p&P%5<Z2tHLGe`Kq8ys)RP9wD_Cr<ZFU
z^T<jM`ygs{xA8s@di+ESE1%_@nLrV2s(3ppuDIW33!79oU^-A$vZmk&Z|U${!x)#;
z0vU=*`gOJn+SuOKIpERM`g*;;XnO~VCcG#wyW`E&30asym+p^j{P}qvja^cgtrH=U
zPM=t{U%kd7=db0E8-M3f48=J8_aQv;8alJh8gK{%wps%)T@%q$wFY41bb5w8GUiAT
ziqk=pI3Nk)jF3gVaN909q8M^PZ|1#SYWbI^NR4+MY3jKo+dRE3Q*#Yz-rVlBpLv8d
z<dHO9v&k9R?$HKTO^ca{#?V^lj6wVnuT;hHN_=1I&NUW~o@8~Uu0>dKh_nD~$RoZF
ziJDich1QvHKqb4{mzVYK@W|>rVe;XoT@n*s+>J+C1MW4;*Xfepg-pn=(}=A>eo7zK
zW*4ttN~AO810$-;Phz)UyCqZ_>iD}qV)hT=k#_{aLo*$))tDkJcI!Nk#x=bLdju&!
zQFS=u*lrmSI9@3!U3V#NXppjMFqg85Qf+pWf)jAIuAN~~`J=YowU#vaLV>?S9<}MR
z8l*H37Fje1NZm55E?oSevg*uWKy*#!uGcUUA%nC4?1oD!62%|sOxihU*M{xeUj1j3
zgiWaAEk?rDw%0gVn|eE6QEUsvM`K>CL?#)s3sn)yQfNwdeDAMc9SRwCMBw)xC2l!a
zy$x?nagM+9XlVa#`48byrn%w^QiHK-?A)^&MqD!1Xbxz2`bXm#B@Hk4dW@S$4Mv9W
z2o#NvGS$Ehd4;}a+^fse%}c*7lXV)*VPoFyAkTze)+jQR<0s?&#uy|*GEtgqzJuw?
zeYfoxc*LPMuT)gZyH>n`B$97#-QL^tR{4oG%B#IpLT?brFJuOz%il}?F&TS;cOy7b
YzNUxzKmJ9LVfrM?8S&qFG_?Q!1^3_N6951J

diff --git a/indra/newview/res/resource.h b/indra/newview/res/resource.h
index 1a1ace82ae2..da27e47dfbc 100644
--- a/indra/newview/res/resource.h
+++ b/indra/newview/res/resource.h
@@ -36,17 +36,9 @@
 #define IDREMOVE                        3
 #define IDI_LL_ICON                     103
 #define IDC_GRABHAND                    104
-#define IDR_MENU1                       112
-#define IDD_DIALOG1                     113
-#define IDI_INSTALL_ICON                133
 #define IDC_CURSOR1                     134
 #define IDC_CURSOR2                     136
-#define IDB_BITMAP1                     138
-#define IDB_BITMAP2                     140
-#define IDB_BITMAP3                     144
 #define IDC_CURSOR3                     147
-#define IDB_BITMAP4                     148
-#define IDB_BITMAP5                     149
 #define IDB_LOGIN                       149
 #define IDC_CURSOR4                     153
 #define IDC_CURSOR5                     154
diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc
index b360871f209..908c4e1da3c 100644
--- a/indra/newview/res/viewerRes.rc
+++ b/indra/newview/res/viewerRes.rc
@@ -62,7 +62,6 @@ END
 // Icon with lowest ID value placed first to ensure application icon
 // remains consistent on all systems.
 IDI_LL_ICON             ICON                    "ll_icon.ico"
-IDI_INSTALL_ICON        ICON                    "install_icon.ico"
 IDI_LCD_LL_ICON         ICON                    "icon1.ico"
 
 /////////////////////////////////////////////////////////////////////////////
@@ -70,55 +69,6 @@ IDI_LCD_LL_ICON         ICON                    "icon1.ico"
 // Dialog
 //
 
-CONNECTBOX DIALOGEX 32, 32, 187, 246
-STYLE DS_SETFONT | DS_SETFOREGROUND | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP |
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Sans Serif", 0, 0, 0x0
-BEGIN
-    CONTROL         149,IDC_STATIC,"Static",SS_BITMAP,0,0,187,246
-    EDITTEXT        IDC_EDIT_FIRSTNAME,9,180,80,13,ES_AUTOHSCROLL
-    EDITTEXT        IDC_EDIT_LASTNAME,98,180,80,13,ES_AUTOHSCROLL
-    EDITTEXT        IDC_EDIT_PASSWORD,9,210,80,13,ES_PASSWORD |
-                    ES_AUTOHSCROLL
-    CONTROL         "Remember password",IDC_REMEMBER_PASSWORD,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,9,229,80,10
-    DEFPUSHBUTTON   "Connect...",IDOK,98,210,80,13
-    CONTROL         "Full screen",IDC_FULL_SCREEN,"Button",BS_AUTOCHECKBOX |
-                    WS_TABSTOP,100,229,50,10
-    COMBOBOX        IDC_COMBO_SERVER,98,6,84,30,CBS_DROPDOWNLIST | CBS_SORT |
-                    WS_VSCROLL | WS_TABSTOP
-END
-
-CONNECTBOXIP DIALOG  32, 32, 282, 174
-STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP |
-    WS_VISIBLE
-FONT 8, "MS Sans Serif"
-BEGIN
-    LTEXT           "First name:",IDC_STATIC_FIRSTNAME,152,24,36,10,NOT
-                    WS_GROUP
-    EDITTEXT        IDC_EDIT_FIRSTNAME,152,37,58,13,ES_AUTOHSCROLL
-    LTEXT           "Last name:",IDC_STATIC_LASTNAME,218,24,38,10,NOT
-                    WS_GROUP
-    EDITTEXT        IDC_EDIT_LASTNAME,218,37,57,13,ES_AUTOHSCROLL
-    LTEXT           "Password:",IDC_STATIC_PASSWORD,152,55,38,10
-    EDITTEXT        IDC_EDIT_PASSWORD,152,71,123,13,ES_PASSWORD |
-                    ES_AUTOHSCROLL
-    CONTROL         "Remember password for next time",IDC_REMEMBER_PASSWORD,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,152,84,123,10
-    LTEXT           "Return to:",IDC_STATIC,152,97,32,8
-    CONTROL         "Last location",IDC_RADIO_LAST,"Button",
-                    BS_AUTORADIOBUTTON | WS_TABSTOP,152,109,56,10
-    CONTROL         "Home",IDC_RADIO_HOME,"Button",BS_AUTORADIOBUTTON |
-                    WS_TABSTOP,218,109,35,10
-    LTEXT           "Server:",IDC_STATIC_SERVER,152,119,38,10,NOT WS_GROUP
-    COMBOBOX        IDC_COMBO_SERVER,152,134,88,43,CBS_DROPDOWN | WS_VSCROLL |
-                    WS_TABSTOP
-    PUSHBUTTON      "Quit",IDCANCEL,152,152,50,14
-    DEFPUSHBUTTON   "Connect...",IDOK,225,152,50,14
-    CONTROL         140,IDB_BITMAP1,"Static",SS_BITMAP,8,7,133,157
-    LTEXT           "Connect to Second Life",IDC_STATIC,152,7,78,8
-END
-
 SPLASHSCREEN DIALOG  32, 32, 144, 34
 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE
 FONT 8, "MS Sans Serif"
@@ -136,35 +86,6 @@ END
 #ifdef APSTUDIO_INVOKED
 GUIDELINES DESIGNINFO
 BEGIN
-    "CONNECTBOX", DIALOG
-    BEGIN
-        LEFTMARGIN, 8
-        RIGHTMARGIN, 180
-        VERTGUIDE, 152
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 239
-        HORZGUIDE, 44
-        HORZGUIDE, 57
-        HORZGUIDE, 123
-    END
-
-    "CONNECTBOXIP", DIALOG
-    BEGIN
-        LEFTMARGIN, 7
-        RIGHTMARGIN, 275
-        VERTGUIDE, 152
-        VERTGUIDE, 218
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 166
-        HORZGUIDE, 12
-        HORZGUIDE, 17
-        HORZGUIDE, 24
-        HORZGUIDE, 50
-        HORZGUIDE, 55
-        HORZGUIDE, 84
-        HORZGUIDE, 105
-        HORZGUIDE, 119
-    END
 
     "SPLASHSCREEN", DIALOG
     BEGIN
@@ -178,20 +99,6 @@ END
 #endif    // APSTUDIO_INVOKED
 
 
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-IDR_MENU1 MENU
-BEGIN
-    POPUP "testmenu"
-    BEGIN
-        MENUITEM "test",                        ID_TESTMENU_TEST
-    END
-END
-
-
 /////////////////////////////////////////////////////////////////////////////
 //
 // Cursor
@@ -269,8 +176,6 @@ END
 // Bitmap
 //
 
-IDB_BITMAP2             BITMAP                  "bitmap2.bmp"
-IDB_LOGIN               BITMAP                  "loginbackground.bmp"
 #endif    // English (U.S.) resources
 /////////////////////////////////////////////////////////////////////////////
 
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
index da385b72d6f..327d0b70f13 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
@@ -30,14 +30,12 @@
 	<text name="steps_label">
 		Schritte:
 	</text>
-	<!-- Revert translations as interim fix to VWR-9985 while the code is not properly internationalized
 	<scroll_list name="library_list">
 		Animation
 Ton
 Chat
 Warten
 	</scroll_list>
-	-->
 	<button label="Hinzufügen &gt;&gt;" name="add_btn"/>
 	<button label="Nach oben" name="up_btn"/>
 	<button label="Nach unten" name="down_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
index 3f7d0973b97..6c373030ad6 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
@@ -33,14 +33,12 @@
 	<text name="steps_label">
 		Étapes :
 	</text>
-	<!-- Revert translations as interim fix to VWR-9985 while the code is not properly internationalized
 	<scroll_list name="library_list">
 		Animation
 Son
 Chat
 Attendre
 	</scroll_list>
-	-->
 	<button label="Ajouter &gt;&gt;" name="add_btn" />
 	<button label="Monter" name="up_btn" />
 	<button label="Descendre" name="down_btn" />
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
index 61665a124a3..177895f44ec 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
@@ -30,14 +30,12 @@
 	<text name="steps_label">
 		手順:
 	</text>
-	<!-- Revert translations as interim fix to VWR-9985 while the code is not properly internationalized
 	<scroll_list name="library_list">
 		アニメーション
 サウンド
 チャット
 å¾…æ©Ÿ
 	</scroll_list>
-	-->
 	<button label="追加>>" name="add_btn"/>
 	<button label="上に移動" name="up_btn"/>
 	<button label="下に移動" name="down_btn"/>
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index be17f1f3905..f72e4a8b7c9 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -171,7 +171,7 @@ def construct(self):
                 '../../libraries/i686-win32/lib/release/llkdu.dll'), 
                   dst='llkdu.dll')
         except:
-            print "Skipping llkdu,.dll"
+            print "Skipping llkdu.dll"
         self.path(src="licenses-win32.txt", dst="licenses.txt")
 
         self.path("featuretable.txt")
@@ -578,13 +578,6 @@ def construct(self):
 
 
     def package_finish(self):
-        # stripping all the libs removes a few megabytes from the end-user package
-        for s,d in self.file_list:
-            if re.search("lib/lib.+\.so.*", d):
-                self.run_command('strip -S %s' % d)
-            if re.search("app_settings/mozilla-runtime-.*/lib.+\.so.*", d):
-                self.run_command('strip %s' % d)
-
         if 'installer_name' in self.args:
             installer_name = self.args['installer_name']
         else:
@@ -628,6 +621,17 @@ def package_finish(self):
 class Linux_i686Manifest(LinuxManifest):
     def construct(self):
         super(Linux_i686Manifest, self).construct()
+
+        # install either the libllkdu we just built, or a prebuilt one, in
+        # decreasing order of preference.  for linux package, this goes to bin/
+        try:
+            self.path(self.find_existing_file(
+                '../llkdu/libllkdu.so',
+                '../../libraries/i686-linux/lib_release_client/libllkdu.so'), 
+                  dst='bin/libllkdu.so')
+        except:
+            print "Skipping libllkdu.so - not found"
+
         self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin")
         self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin")
         self.path("linux_tools/launch_url.sh","launch_url.sh")
@@ -642,7 +646,7 @@ def construct(self):
         self.path("app_settings/mozilla-runtime-linux-i686")
 
         if self.prefix("../../libraries/i686-linux/lib_release_client", dst="lib"):
-            self.path("libkdu_v42R.so")
+            self.path("libkdu_v42R.so", "libkdu.so")
             self.path("libfmod-3.75.so")
             self.path("libapr-1.so.0")
             self.path("libaprutil-1.so.0")
@@ -650,12 +654,10 @@ def construct(self):
             self.path("libcrypto.so.0.9.7")
             self.path("libexpat.so.1")
             self.path("libssl.so.0.9.7")
-            self.path("libstdc++.so.6")
             self.path("libuuid.so", "libuuid.so.1")
             self.path("libSDL-1.2.so.0")
             self.path("libELFIO.so")
-            self.path("libopenjpeg.so.2")
-            self.path("libllkdu.so", "../bin/libllkdu.so") # llkdu goes in bin for some reason
+            self.path("libopenjpeg.so.1.3.0", "libopenjpeg.so.1.3")
             self.path("libalut.so")
             self.path("libopenal.so", "libopenal.so.1")
             self.end_prefix("lib")
diff --git a/indra/win_crash_logger/llcrashloggerwindows.cpp b/indra/win_crash_logger/llcrashloggerwindows.cpp
index c938f209ff2..c9e01c8418a 100644
--- a/indra/win_crash_logger/llcrashloggerwindows.cpp
+++ b/indra/win_crash_logger/llcrashloggerwindows.cpp
@@ -259,8 +259,8 @@ bool LLCrashLoggerWindows::init(void)
 	if(!ok) return false;
 
 	/*
-	mbstowcs(gProductName, mProductName.c_str(), sizeof(gProductName)/sizeof(gProductName[0]));
-	gProductName[ sizeof(gProductName)/sizeof(gProductName[0]) - 1 ] = 0;
+	mbstowcs( gProductName, mProductName.c_str(), LL_ARRAY_SIZE(gProductName) );
+	gProductName[ LL_ARRY_SIZE(gProductName) - 1 ] = 0;
 	swprintf(gProductName, L"Second Life");
 	*/
 
diff --git a/install.xml b/install.xml
index 07b5f781442..ad559a0e906 100644
--- a/install.xml
+++ b/install.xml
@@ -153,9 +153,9 @@
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>aa111fae0ac550bba5e280275eb25904</string>
+            <string>946c2e106f14f7a1e521d4a14e0e146f</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ares-1.4.0-linux-20080729.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ares-1.4.0-linux-20081202.tar.bz2</uri>
           </map>
           <key>linux32</key>
           <map>
@@ -256,9 +256,9 @@
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>e6d4cd23f5df4c74072d5d0437ca999b</string>
+            <string>a88e8285b3d97a21bf43cc5f90e87eb9</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.16.0-linux-20080812.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.16.4-linux-20081202.tar.bz2</uri>
           </map>
           <key>linux32</key>
           <map>
@@ -460,9 +460,9 @@
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>07665d74d37c56fd884610ec80a1d19f</string>
+            <string>eeffb03bd6672b6e7751448e5306d874</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.1.5-linux-20080812.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.1.5-linux-20081201.tar.bz2</uri>
           </map>
           <key>linux32</key>
           <map>
@@ -694,7 +694,7 @@
         <key>copyright</key>
         <string>Copyright (c) 2003, Yves Piguet.</string>
         <key>description</key>
-        <string>An open-source JPEG-2000 library; a slower alternative to Kadaku. Used in the open source release </string>
+        <string>An open-source JPEG (JFIF) library</string>
         <key>license</key>
         <string>jpeglib</string>
         <key>packages</key>
@@ -709,9 +709,9 @@
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>41085a9915598bba0e6bcb0da23ff929</string>
+            <string>8aa8e01e0c21f60f0ede0ffb04e9214f</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jpeglib-6b-linux-20080812.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jpeglib-6b-linux-20081218.tar.bz2</uri>
           </map>
           <key>linux32</key>
           <map>
@@ -891,9 +891,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>0878662f8c1c695a82477f7b0c57a7af</string>
+            <string>8ccd6155e0236b78548125a8aabebf79</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.2.18-linux-20080812.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.2.33-linux-20081201.tar.bz2</uri>
           </map>
           <key>linux32</key>
           <map>
@@ -918,39 +918,6 @@ anguage Infrstructure (CLI) international standard</string>
           </map>
         </map>
       </map>
-      <key>libstdc++</key>
-      <map>
-        <key>copyright</key>
-        <string>Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</string>
-        <key>description</key>
-        <string>Bundled library.</string>
-        <key>license</key>
-        <string>gpl</string>
-        <key>packages</key>
-        <map>
-          <key>linux</key>
-          <map>
-            <key>md5sum</key>
-            <string>1464a75ec87ee28e3b4f7840e9af41e3</string>
-            <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libstdc++-6.0-linux-20080812.tar.bz2</uri>
-          </map>
-          <key>linux32</key>
-          <map>
-            <key>md5sum</key>
-            <string>1218347dd70c3b471530793d0fc09b69</string>
-            <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libstdc++-6.4.1-linux-i686-gcc-4.1-20080915.tar.bz2</uri>
-          </map>
-          <key>linux64</key>
-          <map>
-            <key>md5sum</key>
-            <string>9a191dc453017b19c5803b046d82f32a</string>
-            <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libstdc++-6.4.1-linux64-20080909.tar.bz2</uri>
-          </map>
-        </map>
-      </map>
       <key>libuuid</key>
       <map>
         <key>copyright</key>
@@ -1022,9 +989,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>344bfdb8448bbc4158a99300cf4e2b4b</string>
+            <string>6866c147730c83b7858765355df75047</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llmozlib-linux-20080922.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llmozlib-linux-20081218prfhk.tar.bz2</uri>
           </map>
           <key>linux32</key>
           <map>
@@ -1171,9 +1138,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>df1809565b87b1dc28e3ca70db6e7d46</string>
+            <string>6dc0536329a0aadf76e3054ffd4da61c</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ogg-vorbis-1.03-1.1.2-linux-20080812.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ogg-vorbis-1.2.0-linux-20081201.tar.bz2</uri>
           </map>
           <key>linux32</key>
           <map>
@@ -1301,9 +1268,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>c333219c88462b8b22c815cd2b700218</string>
+            <string>02af0dad64803e0d821bc09e6038682c</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.2-linux-20080812.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.3-linux-20081124b.tar.bz2</uri>
           </map>
           <key>linux32</key>
           <map>
-- 
GitLab