Mail Archives: cygwin/2000/12/06/21:45:36
------=_NextPart_000_0026_01C05FCD.44C24290
Content-Type: multipart/mixed;
boundary="----=_NextPart_001_0027_01C05FCD.44C3F040"
------=_NextPart_001_0027_01C05FCD.44C3F040
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
gmodule works for me.
ugh. with spelling errors and all from the cvs source :)
um. i did have to patch gmodule-dl.c and testgmodule.c
um. and gdate.c and gmarkup.c and gstrfuncs.c
and I did have to make tons of changes to the automake/libtool files to
get the dll to build correctly.
I haven't automated it just yet, but if you want the source patches...
WARNING. please EXAMINE this patch and run it bit by bit. Because
1) this is a patch against CVS source, and
2) though it passes all of the glib tests (both in gmodule and in tests,
once you fix the markup test), i'm not positive it works everywhere.
3) this is a patch against the CVS source. yea, it's important enough to
repeat.
cheers!
edward
$ cd /usr/gnome/src/gnome/glib/gmodule
$ cygcheck testgmodule.exe
Found: .\testgmodule.exe
.\testgmodule.exe
E:\WINNT\System32\KERNEL32.dll
E:\WINNT\System32\NTDLL.DLL
.\libgmodule-1.3.dll
E:\private\cygwin\bin\cygwin1.dll
Use -h to see help about each section
$ ./testgmodule
testgmodule (/usr/gnome/src/gnome/glib/gmodule):
get main module handle
check that not yet bound symbols in shared libraries of main module are
retrievable:
retrive symbol `g_module_close' from "main":
retrived symbol `g_module_close' as 0x67841a24
load plugin from
"/usr/gnome/src/gnome/glib/gmodule/.libs/libgplugin_a.dll"
load plugin from
"/usr/gnome/src/gnome/glib/gmodule/.libs/libgplugin_b.dll"
GPluginB: check-init
retrive symbol `gplugin_a_func' from "libgplugin_a.dll"
retrive symbol `gplugin_b_func' from "libgplugin_b.dll"
call plugin function(0x672c1018) A: GPluginA: Hello world
call plugin function(0x6f8c1080) B: GPluginB: Hello world
retrive symbol `g_clash_func' from "main"
retrive symbol `g_clash_func' from "libgplugin_a.dll"
retrive symbol `g_clash_func' from "libgplugin_b.dll"
call plugin function(0x672c1088) self: GPluginA: Hello global clash
call plugin function(0x672c1088) A: GPluginA: Hello global clash
call plugin function(0x6f8c10f0) B: GPluginB: Hello global clash
retrive symbol `gplugin_clash_func' from "main"
retrived function `gplugin_clash_func' from self: 0x672c1050
retrive symbol `gplugin_clash_func' from "libgplugin_a.dll"
retrive symbol `gplugin_clash_func' from "libgplugin_b.dll"
call plugin function(0x672c1050) A: GPluginA: Hello plugin clash
call plugin function(0x6f8c10b8) B: GPluginB: Hello plugin clash
retrive symbol `gplugin_a_module_func' from "libgplugin_a.dll"
call plugin A's module function(0x672c1164):
{
GPluginA: retrive symbol `gplugin_say_boo_func' from "libgplugin_b.dll"
GPluginA: call that function(0x6f8c111c): GPluginB: BOOH!
}
unload plugin A:
unload plugin B:
GPluginB: unloaded
-----Original Message-----
From: Robert Collins [mailto:robert DOT collins AT itdomain DOT com DOT au]
Sent: Wednesday, December 06, 2000 7:30 PM
To: edward; Julia A . Case
Cc: Cygwin
Subject: Re: glib-1.2.8?
glib compiles ok but it is not fully functional
* gmodule fails its tests. This is important because nearly every plug-in
style component based on glib needs gmodule. (Basically a
wrapper for dlopen()). I posted some questions about this on this list
around 3-4 months ago... but I didn't (and still don't) have
the time to dig into dlopen and write test cases to show the fault.
* pthreads support (as per edwards and chris's emails). However my guess
is that building wiuth pthreads=none should result in the
wrapper code running everything single-threaded.
I'm happy to do a bit of collaboration on this if you're interested
edward.. I was working on gnome for xfree86/cygwin.
You'll also need to patch the libtool on all the gnome related packages to
support dll creation. (see a long list on that on this
list back in uhmmm august I think.
Rob
----- Original Message -----
From: "edward" <tailbert AT yahoo DOT com>
To: "Julia A . Case" <julie AT MageNet DOT com>
Cc: "Cygwin" <cygwin AT sources DOT redhat DOT com>
Sent: Thursday, December 07, 2000 7:54 AM
Subject: RE: glib-1.2.8?
> If I recall correctly, as of 2 weeks ago, both the cvs and official
> versions of glib compiled fine.
>
> make check fails one the markup test because the test invocation is
> incorrect, but you can run that one manually.
>
> PS. you'll have problem with the official gnome packages of bonobo and
> gconf, due to file names that differ only by case. The cvs versions have
> renamed those files.
>
> PPS. oaf, orbit and gnome-print require cygwin patches... I'll post
those
> once I make sure they actually work. they pass the test suite, but I
want
> to hold back until I can get the entire gnome package running.
>
> PPPS. gnome requires some libraries which must be at least re-entrant.
> that means recompiling the winsup cygwin module to export the *_r
> functions.
>
> Cheers.
> edward
>
> -----Original Message-----
> From: cygwin-owner AT sources DOT redhat DOT com
> [mailto:cygwin-owner AT sources DOT redhat DOT com]On Behalf Of Julia A . Case
> Sent: Wednesday, December 06, 2000 3:25 PM
> To: cygwin AT sources DOT redhat DOT com
> Subject: glib-1.2.8?
>
>
> Has anyone been able to build glib-1.2.8 under cygwin?
>
> Julie
>
> --
> [ Julia Anne Case ] [ Ships are safe inside the harbor, ]
> [Programmer at large] [ but is that what ships are really for. ]
> [ Admining Linux ] [ To thine own self be true. ]
> [ Windows/WindowsNT ] [ Fair is where you take your cows to be judged. ]
>
>
> --
> Want to unsubscribe from this list?
> Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
>
------=_NextPart_001_0027_01C05FCD.44C3F040
Content-Type: application/octet-stream;
name="glib-cygwin.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="glib-cygwin.patch"
--- gdate.c.eml Fri Sep 29 09:37:00 2000=0A=
+++ gdate.c Thu Nov 30 13:31:31 2000=0A=
@@ -737,9 +737,11 @@=0A=
++i;=0A=
++j;=0A=
}=0A=
- =0A=
- =0A=
- if (pt.num_ints =3D=3D 3 && !g_date_valid_dmy (day, m, y))=0A=
+ if (pt.num_ints =3D=3D 2 && pt.month !=3D G_DATE_BAD_MONTH)=0A=
+ {=0A=
+ m =3D pt.month;=0A=
+ }=0A=
+ else if (pt.num_ints =3D=3D 3 && !g_date_valid_dmy (day, m, y))=0A=
{=0A=
/* Try YYYY MM DD */=0A=
y =3D pt.n[0];=0A=
--- gmarkup.c.eml Thu Nov 30 13:59:30 2000=0A=
+++ gmarkup.c Thu Nov 30 13:56:48 2000=0A=
@@ -761,7 +761,7 @@=0A=
static const gchar*=0A=
current_element (GMarkupParseContext *context)=0A=
{=0A=
- return context->tag_stack->data;=0A=
+ return (context->tag_stack?context->tag_stack->data:0);=0A=
}=0A=
=0A=
static const gchar*=0A=
--- gstrfuncs.c.eml Thu Nov 30 12:33:25 2000=0A=
+++ gstrfuncs.c Thu Nov 30 12:33:46 2000=0A=
@@ -676,7 +676,7 @@=0A=
char *msg;=0A=
=0A=
#ifdef HAVE_STRSIGNAL=0A=
-#ifdef G_OS_BEOS=0A=
+#if defined(G_OS_BEOS) || defined(__CYGWIN__)=0A=
extern const char * strsignal(int);=0A=
#else /* !G_OS_BEOS */=0A=
/* this is declared differently (const) in string.h on BeOS */=0A=
--- gmodule/gmodule-dl.c.eml Fri Dec 1 07:11:28 2000=0A=
+++ gmodule/gmodule-dl.c Fri Dec 1 04:30:03 2000=0A=
@@ -68,6 +68,120 @@=0A=
#define RTLD_NOW 0=0A=
#endif /* RTLD_NOW */=0A=
=0A=
+#if defined(__CYGWIN__)=0A=
+#include <windows.h>=0A=
+#include <tlhelp32.h>=0A=
+static gpointer=0A=
+find_in_any_module_using_toolhelp (const gchar *symbol_name)=0A=
+{=0A=
+ typedef HANDLE (WINAPI *PFNCREATETOOLHELP32SNAPSHOT)(DWORD, DWORD);=0A=
+ static PFNCREATETOOLHELP32SNAPSHOT pfnCreateToolhelp32Snapshot =3D =
NULL;=0A=
+=0A=
+ typedef BOOL (WINAPI *PFNMODULE32FIRST)(HANDLE, MODULEENTRY32*);=0A=
+ static PFNMODULE32FIRST pfnModule32First=3D NULL;=0A=
+=0A=
+ typedef BOOL (WINAPI *PFNMODULE32NEXT)(HANDLE, MODULEENTRY32*);=0A=
+ static PFNMODULE32NEXT pfnModule32Next =3D NULL;=0A=
+=0A=
+ static HMODULE kernel32;=0A=
+=0A=
+ HANDLE snapshot; =0A=
+ MODULEENTRY32 me32;=0A=
+=0A=
+ gpointer p;=0A=
+=0A=
+ if (!pfnCreateToolhelp32Snapshot || !pfnModule32First || =
!pfnModule32Next)=0A=
+ {=0A=
+ if (!kernel32)=0A=
+ if (!(kernel32 =3D GetModuleHandle ("kernel32.dll")))=0A=
+ return NULL;=0A=
+=0A=
+ if (!(pfnCreateToolhelp32Snapshot =3D =
(PFNCREATETOOLHELP32SNAPSHOT) GetProcAddress (kernel32, =
"CreateToolhelp32Snapshot"))=0A=
+ || !(pfnModule32First =3D (PFNMODULE32FIRST) GetProcAddress =
(kernel32, "Module32First"))=0A=
+ || !(pfnModule32Next =3D (PFNMODULE32NEXT) GetProcAddress (kernel32, =
"Module32Next")))=0A=
+ return NULL;=0A=
+ }=0A=
+=0A=
+ if ((snapshot =3D (*pfnCreateToolhelp32Snapshot) (TH32CS_SNAPMODULE, =
0)) =3D=3D (HANDLE) -1)=0A=
+ return NULL;=0A=
+=0A=
+ me32.dwSize =3D sizeof (me32);=0A=
+ p =3D NULL;=0A=
+ if ((*pfnModule32First) (snapshot, &me32))=0A=
+ {=0A=
+ do {=0A=
+ if ((p =3D GetProcAddress (me32.hModule, symbol_name)) !=3D NULL)=0A=
+ break;=0A=
+ } while ((*pfnModule32Next) (snapshot, &me32));=0A=
+ }=0A=
+=0A=
+ CloseHandle (snapshot);=0A=
+=0A=
+ return p;=0A=
+}=0A=
+=0A=
+static gpointer=0A=
+find_in_any_module_using_psapi (const gchar *symbol_name)=0A=
+{=0A=
+ static HMODULE psapi =3D NULL;=0A=
+=0A=
+ typedef BOOL (WINAPI *PFNENUMPROCESSMODULES) (HANDLE, HMODULE *, =
DWORD, LPDWORD) ;=0A=
+ static PFNENUMPROCESSMODULES pfnEnumProcessModules =3D NULL;=0A=
+=0A=
+ HMODULE *modules;=0A=
+ HMODULE dummy;=0A=
+ gint i, size;=0A=
+ DWORD needed;=0A=
+ =0A=
+ gpointer p;=0A=
+=0A=
+ if (!pfnEnumProcessModules)=0A=
+ {=0A=
+ if (!psapi)=0A=
+ if ((psapi =3D LoadLibrary ("psapi.dll")) =3D=3D NULL)=0A=
+ return NULL;=0A=
+=0A=
+ if (!(pfnEnumProcessModules =3D (PFNENUMPROCESSMODULES) =
GetProcAddress (psapi, "EnumProcessModules")))=0A=
+ return NULL;=0A=
+ }=0A=
+=0A=
+ if (!(*pfnEnumProcessModules) (GetCurrentProcess (), &dummy,=0A=
+ sizeof (HMODULE), &needed))=0A=
+ return NULL;=0A=
+=0A=
+ size =3D needed + 10 * sizeof (HMODULE);=0A=
+ modules =3D g_malloc (size);=0A=
+=0A=
+ if (!(*pfnEnumProcessModules) (GetCurrentProcess (), modules,=0A=
+ size, &needed)=0A=
+ || needed > size)=0A=
+ {=0A=
+ g_free (modules);=0A=
+ return NULL;=0A=
+ }=0A=
+ =0A=
+ p =3D NULL;=0A=
+ for (i =3D 0; i < needed / sizeof (HMODULE); i++)=0A=
+ if ((p =3D GetProcAddress (modules[i], symbol_name)) !=3D NULL)=0A=
+ break;=0A=
+=0A=
+ g_free (modules);=0A=
+=0A=
+ return p;=0A=
+}=0A=
+=0A=
+static gpointer=0A=
+find_in_any_module (const gchar *symbol_name)=0A=
+{=0A=
+ gpointer result;=0A=
+=0A=
+ if ((result =3D find_in_any_module_using_toolhelp (symbol_name)) =
=3D=3D NULL=0A=
+ && (result =3D find_in_any_module_using_psapi (symbol_name)) =
=3D=3D NULL)=0A=
+ return NULL;=0A=
+ else=0A=
+ return result;=0A=
+}=0A=
+#endif=0A=
=0A=
/* --- functions --- */=0A=
static gchar*=0A=
@@ -93,6 +207,10 @@=0A=
return handle;=0A=
}=0A=
=0A=
+#if defined(__CYGWIN__)=0A=
+static gpointer null_module_handle =3D 0;=0A=
+#endif=0A=
+=0A=
static gpointer=0A=
_g_module_self (void)=0A=
{=0A=
@@ -105,7 +223,9 @@=0A=
handle =3D dlopen (NULL, RTLD_GLOBAL | RTLD_LAZY);=0A=
if (!handle)=0A=
g_module_set_error (fetch_dlerror ());=0A=
- =0A=
+#if defined(__CYGWIN__)=0A=
+ null_module_handle =3D handle;=0A=
+#endif=0A=
return handle;=0A=
}=0A=
=0A=
@@ -132,6 +252,11 @@=0A=
gpointer p;=0A=
=0A=
p =3D dlsym (handle, symbol_name);=0A=
+#if defined(__CYGWIN__)=0A=
+ if (p =3D=3D NULL && handle =3D=3D null_module_handle) {=0A=
+ p =3D find_in_any_module(symbol_name);=0A=
+ }=0A=
+#endif=0A=
if (!p)=0A=
g_module_set_error (fetch_dlerror ());=0A=
=0A=
@@ -142,13 +267,18 @@=0A=
_g_module_build_path (const gchar *directory,=0A=
const gchar *module_name)=0A=
{=0A=
+#if defined(__CYGWIN__)=0A=
+#define DLL_EXT ".dll"=0A=
+#else=0A=
+#define DLL_EXT ".so"=0A=
+#endif=0A=
if (directory && *directory) {=0A=
if (strncmp (module_name, "lib", 3) =3D=3D 0)=0A=
return g_strconcat (directory, "/", module_name, NULL);=0A=
else=0A=
- return g_strconcat (directory, "/lib", module_name, ".so", NULL);=0A=
+ return g_strconcat (directory, "/lib", module_name, DLL_EXT, =
NULL);=0A=
} else if (strncmp (module_name, "lib", 3) =3D=3D 0)=0A=
return g_strdup (module_name);=0A=
else=0A=
- return g_strconcat ("lib", module_name, ".so", NULL);=0A=
+ return g_strconcat ("lib", module_name, DLL_EXT, NULL);=0A=
}=0A=
--- gmodule/testgmodule.c.eml Fri Dec 1 07:11:49 2000=0A=
+++ gmodule/testgmodule.c Fri Dec 1 04:26:34 2000=0A=
@@ -61,8 +61,13 @@=0A=
plugin_a =3D g_strconcat (string, "/.libs/", "libgplugin_a.sl", NULL);=0A=
plugin_b =3D g_strconcat (string, "/.libs/", "libgplugin_b.sl", NULL);=0A=
#else /* neither DLD nor WIN32 */=0A=
+#if defined(__CYGWIN__)=0A=
+ plugin_a =3D g_strconcat (string, "/.libs/", "libgplugin_a.dll", =
NULL);=0A=
+ plugin_b =3D g_strconcat (string, "/.libs/", "libgplugin_b.dll", =
NULL);=0A=
+#else=0A=
plugin_a =3D g_strconcat (string, "/.libs/", "libgplugin_a.so", NULL);=0A=
plugin_b =3D g_strconcat (string, "/.libs/", "libgplugin_b.so", NULL);=0A=
+#endif=0A=
#endif=0A=
g_free (string);=0A=
=0A=
------=_NextPart_001_0027_01C05FCD.44C3F040--
------=_NextPart_000_0026_01C05FCD.44C24290
Content-Type: application/x-pkcs7-signature;
name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="smime.p7s"
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIILzCCAy4w
ggKXoAMCAQICEQDSdi6NFAw9fbKoJV2v7g11MA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVT
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05ODA1MTIwMDAwMDBaFw0wODA1MTIyMzU5NTla
MIHMMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0
d29yazFGMEQGA1UECxM9d3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5L1JQQSBJbmNvcnAuIEJ5
IFJlZi4sTElBQi5MVEQoYyk5ODFIMEYGA1UEAxM/VmVyaVNpZ24gQ2xhc3MgMSBDQSBJbmRpdmlk
dWFsIFN1YnNjcmliZXItUGVyc29uYSBOb3QgVmFsaWRhdGVkMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQC7WkSKBBa7Vf0DeootlE8VeDa4DUqyb5xUv7zodyqdufBou5XZMUFweoFLuUgTVi3H
COGEQqvAopKrRFyqQvCCDgLpL/vCO7u+yScKXbawNkIztW5UiE+HSr8Z2vkV6A+HthzjzMaajn9q
JJLj/OBluqexfu/J2zdqyErICQbkmQIDAQABo3wwejARBglghkgBhvhCAQEEBAMCAQYwRwYDVR0g
BEAwPjA8BgtghkgBhvhFAQcBATAtMCsGCCsGAQUFBwIBFh93d3cudmVyaXNpZ24uY29tL3JlcG9z
aXRvcnkvUlBBMA8GA1UdEwQIMAYBAf8CAQAwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBAgUAA4GB
AIi4Nzvd2pQ3AK2qn+GBAXEekmptL/bxndPKZDjcG5gMB4ZbhRVqD7lJhaSV8Rd9Z7R/LSzdmkKe
wz60jqrlCwbe8lYq+jPHvhnXU0zDvcjjF7WkSUJj7MKmFw9dWBpJPJBcVaNlIAD9GCDlX4KmsaiS
xVhqwY0DPOvDzQWikK5uMIIE+TCCBGKgAwIBAgIQVVCnZAR32kCJV2EcJWFZfjANBgkqhkiG9w0B
AQQFADCBzDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0
IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5jb3Jw
LiBCeSBSZWYuLExJQUIuTFREKGMpOTgxSDBGBgNVBAMTP1ZlcmlTaWduIENsYXNzIDEgQ0EgSW5k
aXZpZHVhbCBTdWJzY3JpYmVyLVBlcnNvbmEgTm90IFZhbGlkYXRlZDAeFw0wMDA0MTgwMDAwMDBa
Fw0wMTA0MTgyMzU5NTlaMIIBFDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
cmlTaWduIFRydXN0IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9y
eS9SUEEgSW5jb3JwLiBieSBSZWYuLExJQUIuTFREKGMpOTgxHjAcBgNVBAsTFVBlcnNvbmEgTm90
IFZhbGlkYXRlZDE0MDIGA1UECxMrRGlnaXRhbCBJRCBDbGFzcyAxIC0gTWljcm9zb2Z0IEZ1bGwg
U2VydmljZTEWMBQGA1UEAxQNRWR3YXJkIE0uIExlZTEiMCAGCSqGSIb3DQEJARYTZWR3YXJkQHRh
aWxpZmVyLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyk3l0Z6LTJqUIu0v0gOxCtqJ
RkeqGmPAlPZRUOnZGYgBbJnVfv+zaSGrraDn9ENPcZ3vQrfNR377vTV9HonHjaC3gRAW1Hm7TI4K
w8N7LO+dHzIf+GOa44BF/OUt9a3Sc9F0a5FQ5oeDZusZzObmB7b4I/HFkXthK10PjZH6++kCAwEA
AaOCAY8wggGLMAkGA1UdEwQCMAAwgawGA1UdIASBpDCBoTCBngYLYIZIAYb4RQEHAQEwgY4wKAYI
KwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9DUFMwYgYIKwYBBQUHAgIwVjAVFg5W
ZXJpU2lnbiwgSW5jLjADAgEBGj1WZXJpU2lnbidzIENQUyBpbmNvcnAuIGJ5IHJlZmVyZW5jZSBs
aWFiLiBsdGQuIChjKTk3IFZlcmlTaWduMBEGCWCGSAGG+EIBAQQEAwIHgDCBhgYKYIZIAYb4RQEG
AwR4FnZkNDY1MmJkNjNmMjA0NzAyOTI5ODc2M2M5ZDJmMjc1MDY5YzczNTliZWQxYjA1OWRhNzVi
YzRiYzk3MDE3NDdkYTVkM2YyMTQxYmVhZGIyYmQyZTg5MjE2YWE2YmYyZDExMTQ5OTdhMmJlNDVm
ZGYzZWE0NTBjMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL2NsYXNz
MS5jcmwwDQYJKoZIhvcNAQEEBQADgYEAJj2gFrp0fO+8GNOl3U5ctDn0IYr8MwDFxymgdQnSYsOZ
q2wPC3aCFK4BB9Oj4YBerRF1sDyAZZx8CFcH+k+aysC3vxzufqdOdc3MxAHuHggKTZ3wybV2r9pb
fzJlFcw+jTgPj9yqsp3g6lpt70d7xpa8UW5aQODXdc/TnVXyRrMxggM4MIIDNAIBATCB4TCBzDEX
MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsx
RjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5jb3JwLiBCeSBSZWYu
LExJQUIuTFREKGMpOTgxSDBGBgNVBAMTP1ZlcmlTaWduIENsYXNzIDEgQ0EgSW5kaXZpZHVhbCBT
dWJzY3JpYmVyLVBlcnNvbmEgTm90IFZhbGlkYXRlZAIQVVCnZAR32kCJV2EcJWFZfjAJBgUrDgMC
GgUAoIIBrDAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wMDEyMDcw
MjQxMTlaMCMGCSqGSIb3DQEJBDEWBBQv4pESN+uCuUjBP6uoPWf4i1BcAjBYBgkqhkiG9w0BCQ8x
SzBJMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDAH
BgUrDgMCGjAKBggqhkiG9w0CBTCB8gYJKwYBBAGCNxAEMYHkMIHhMIHMMRcwFQYDVQQKEw5WZXJp
U2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazFGMEQGA1UECxM9d3d3
LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5L1JQQSBJbmNvcnAuIEJ5IFJlZi4sTElBQi5MVEQoYyk5
ODFIMEYGA1UEAxM/VmVyaVNpZ24gQ2xhc3MgMSBDQSBJbmRpdmlkdWFsIFN1YnNjcmliZXItUGVy
c29uYSBOb3QgVmFsaWRhdGVkAhBVUKdkBHfaQIlXYRwlYVl+MA0GCSqGSIb3DQEBAQUABIGAkfxH
8zmmsOiZMUKqzdUq/j+nx3vEKe7WD//Ndw7vZ1oD8qXzIHU2JFmY9hPsRF6JtczZERoLB7u81dwx
+dy0eBMpYbEw9alM3l0wAFpr2jFE+s8Ejpb06sGz3RMVIn2q2903+I9Ofg1wzGgy0qNjwuina+Bv
egO+gbh9gN7MT94AAAAAAAA=
------=_NextPart_000_0026_01C05FCD.44C24290--
- Raw text -