SDL_ttf problem

I have a piece of code for SDL_ttf working under windows but not under linux, here it is :

int SetSurfaceText(SDL_Surface *sfr, char *param_txt, int size, Uint32 fgcolor)
{
TTF_Font *ft;
SDL_Color fg;
char *dest_txt;

if(TTF_Init()<0)
{
printf("** TTF_init error\n");
return 1;
}

strcpy(dest_txt, param_txt);
if((ft=TTF_OpenFont(“comic.ttf”, size))==NULL)
{
printf("** font load error\n");
return 1;
}

SDL_GetRGB(fgcolor, sfr->format, &(fg.r), &(fg.g), &(fg.b));

if((sfr = TTF_RenderText_Solid(ft, dest_txt, fg))==NULL)
{
printf("** dest surface load error\n");
return 1;
}

TTF_CloseFont(ft);

return 0;
}

this code works fine under windows, but linux returns me an error when calling TTF_RenderText_Solid…

Does somebody have any idea ?

carlos

Hi,

char *dest_txt;

strcpy(dest_txt, param_txt);

you never allocate any memory to copy the string into. As a result,
dest_txt is uninitialized (could be zero or garbage). Results differ,
depending on the underlying OS, debug/release mode, what happened
before calling the function and, of course, the phase of the moon.

Why are you trying to copy the string anyway?
This is just a minimal example, right?

You could try this:

char dest_txt = (char)alloca(strlen(param_txt)+1);

which allocates enough space (on the stack) for a copy of param_txt
and a null, and you don’t need to worry about freeing it!

Good luck,
John Popplewell.
PS there might be some _alloca() madness in MS VC++ 6.0> ----- Original Message -----

From: citrouille@wanadoo.fr (Carlos Alvarez)
To:
Sent: Sunday, May 18, 2003 6:24 PM
Subject: [SDL] SDL_ttf problem

I have a piece of code for SDL_ttf working under windows but not under
linux, here it is :

int SetSurfaceText(SDL_Surface *sfr, char *param_txt, int size, Uint32
fgcolor)
{
TTF_Font *ft;
SDL_Color fg;
char *dest_txt;

if(TTF_Init()<0)
{
printf("** TTF_init error\n");
return 1;
}

strcpy(dest_txt, param_txt);
if((ft=TTF_OpenFont(“comic.ttf”, size))==NULL)
{
printf("** font load error\n");
return 1;
}

SDL_GetRGB(fgcolor, sfr->format, &(fg.r), &(fg.g), &(fg.b));

if((sfr = TTF_RenderText_Solid(ft, dest_txt, fg))==NULL)
{
printf("** dest surface load error\n");
return 1;
}

TTF_CloseFont(ft);

return 0;
}

this code works fine under windows, but linux returns me an error when
calling TTF_RenderText_Solid…

Does somebody have any idea ?

carlos


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

On Mon, 19 May 2003 02:50:02 +0100, “John Popplewell”
said:

Why are you trying to copy the string anyway?
This is just a minimal example, right?

You could try this:

char dest_txt = (char)alloca(strlen(param_txt)+1);

which allocates enough space (on the stack) for a copy of param_txt
and a null, and you don’t need to worry about freeing it!

Simpler would be:

char * dest_txt = strdup(param_txt);

As long as you remember to free dest_txt later on…

Dave.–
Dave Slutzkin
Melbourne, Australia
@Dave_Slutzkin


http://www.fastmail.fm - The way an email service should be

Hi,

char *dest_txt;

strcpy(dest_txt, param_txt);

you never allocate any memory to copy the string into. As a result,
dest_txt is uninitialized (could be zero or garbage). Results differ,
depending on the underlying OS, debug/release mode, what happened
before calling the function and, of course, the phase of the moon.

Why are you trying to copy the string anyway?

In the context, surface’s data is store into a structure (such as
SDL_Surface, positions width, and text behind), that’s why the dest_txt was
previously the structure’s char* member.

Carlos wrote:

In the context, surface’s data is store into a structure (such as
SDL_Surface, positions width, and text behind), that’s why the dest_txt
was
previously the structure’s char* member.

I see. Dave’s suggestion:

char * dest_txt = strdup(param_txt);

sounds like the way to go then,

cheers,
John.

It seem that problem doesn’t come from char* buffer…

I made the simplest TTF_font program to test all :

#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>

int main()
{
SDL_Event ev;
SDL_Surface *screen; //display
SDL_Surface *tmp; //font surface
SDL_Rect x; //location to display font
SDL_Color fg; //font fgcolor
TTF_Font *font; //font

//init stuff
SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO|SDL_INIT_EVENTTHREAD|SDL_INIT_AUDIO);
screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);

TTF_Init();

//load font, no problem here
if((font=TTF_OpenFont("./comic.ttf", 32))==NULL) //file is ok
	printf("** font load error\n");
else
	printf("** font load OK\n");

//set up font fgcolor
fg.r = 255;
fg.g = 0;
fg.b = 0;

//set up position
x.x = 100;
x.y = 100;

//clear screen
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format,0,0,0));

//create font surface - here problem, tmp surface stays NULL
if((tmp=TTF_RenderText_Solid(font, "tralalal", fg))==NULL)
	printf("** font draw error\n");
else
	printf("** font draw OK\n");

while(1)
{
	while(SDL_PollEvent(&ev))
	{
		switch(ev.type)
		{
			case SDL_KEYDOWN:
				return 0;
				break;

			case SDL_QUIT:
				return 0;
		}
	}

	SDL_BlitSurface(tmp, NULL, screen, &x);
	SDL_Flip(screen);
}

TTF_CloseFont(font);
return 0;

}

I don’t know what I have forget, but I get always a black screen…

Hi,

works fine for me on SuSE Linux 7.3 and Win98 (using MSVC 6.0) with
these slight changes:

#include <stdlib.h>
#include “SDL.h”
#include “SDL_ttf.h”

int main( int argc, char *argv[] )
{

if ( SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO|SDL_INIT_AUDIO) < 0 )
{
fprintf(stderr, “Couldn’t initialize SDL: %s\n”,SDL_GetError());
exit(1);
}

}

Without the arguments to main(), the app won’t link on Windows.
The SDL_INIT_EVENTTHREAD flag isn’t supported on Windows causing
SDL_Init() to return with an error (uncaught in your original code).

How did you install SDL/SDL_libs on your Linux box?
Mine are built from source (some tarball, some CVS),

cheers,
John.> ----- Original Message -----

From: citrouille@wanadoo.fr (Carlos Alvarez)
To:
Sent: Monday, May 19, 2003 6:04 PM
Subject: Re: [SDL] SDL_ttf problem

It seem that problem doesn’t come from char* buffer…

I made the simplest TTF_font program to test all :

#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>

int main()
{
SDL_Event ev;
SDL_Surface *screen; //display
SDL_Surface *tmp; //font surface
SDL_Rect x; //location to display font
SDL_Color fg; //font fgcolor
TTF_Font *font; //font

//init stuff

SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO|SDL_INIT_EVENTTHREAD|SDL_INIT_AUDIO);

screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);

TTF_Init();

//load font, no problem here
if((font=TTF_OpenFont("./comic.ttf", 32))==NULL) //file is ok
printf("** font load error\n");
else
printf("** font load OK\n");

//set up font fgcolor
fg.r = 255;
fg.g = 0;
fg.b = 0;

//set up position
x.x = 100;
x.y = 100;

//clear screen
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format,0,0,0));

//create font surface - here problem, tmp surface stays NULL
if((tmp=TTF_RenderText_Solid(font, “tralalal”, fg))==NULL)
printf("** font draw error\n");
else
printf("** font draw OK\n");

while(1)
{
while(SDL_PollEvent(&ev))
{
switch(ev.type)
{
case SDL_KEYDOWN:
return 0;
break;

case SDL_QUIT:
return 0;
}
}

SDL_BlitSurface(tmp, NULL, screen, &x);
SDL_Flip(screen);
}

TTF_CloseFont(font);
return 0;
}

I don’t know what I have forget, but I get always a black screen…


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

Hello John, I’m still needing help, read following.

How did you install SDL/SDL_libs on your Linux box?
Mine are built from source (some tarball, some CVS),

I installed SDL and SDL_ttf on linux with tarballs and core SDL is running fine. I can display all graphics I want except for SDL_ttf. The test code for SDL_ttf I give in my preceding mail perfectly works under windows with VC++.net but don’t display anything under linux.
I am speaking about SDL_ttf and not SDL, because SDL works fine. The showfont program given in SDL_ttf works perfectly, but not my code, and I really don’t know why :confused: it seems to be clear, don’t you think ?
Crash doesn’t come from SDL core code I think… The problem is TTF_Render_Solid returns me an invalid surface… but why… ?

Here it is again, comments explain some proceeding :
I tell evebody again that this doesn’t displau anythink, but this should. font file is OK in pogram path

#include <stdio.h>
#include <SDL/SDL.h> //this headers are okay
#include <SDL/SDL_ttf.h>

int main()
{
SDL_Event ev;
SDL_Surface *screen; //display
SDL_Surface *tmp; //font surface
SDL_Rect x; //location to display font
SDL_Color fg; //font fgcolor
TTF_Font *font; //font

//init stuff - no problems here
SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO|SDL_INIT_EVENTTHREAD|SDL_INIT_AUDIO);
screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);

TTF_Init();

//load font - still no problems
if((font=TTF_OpenFont("comic.ttf", 32))==NULL)
	printf("** font load error\n");
else
	printf("** font load OK\n");

//set up font fgcolor
fg.r = 255;
fg.g = 0;
fg.b = 0;

//set up position
x.x = 100;
x.y = 100;

//clear screen
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format,0,0,0));

//create font surface - HERE CODE CRASH
if((tmp=TTF_RenderText_Solid(font, "tralalal", fg))==NULL)
	printf("** font draw error\n");
else
	printf("** font draw OK\n");

while(1) //main loop
{
	while(SDL_PollEvent(&ev))
	{
		switch(ev.type)
		{
			case SDL_KEYDOWN:
      		return 0;
				break;

			case SDL_QUIT:
				return 0;
		}
	}

	SDL_BlitSurface(tmp, NULL, screen, &x);
	SDL_Flip(screen);
}

TTF_CloseFont(font);
return 0;

}

Maybe lib’s author could tell me some info…

carlos,

Your program works fine and doesn’t need any changes. I tested it on slackware 9.0, with latest SDL CVS and SDL_ttf 2.0.6. I compiled it with “gcc dump.c -lSDL -lSDL_ttf”. SDL_ttf was compiled against freetype 2.1.1 . What versions of these libraries do you have?

JesseOn Tue, May 20, 2003 at 12:13:30AM +0200, carlos wrote:

Hello John, I’m still needing help, read following.

How did you install SDL/SDL_libs on your Linux box?
Mine are built from source (some tarball, some CVS),

I installed SDL and SDL_ttf on linux with tarballs and core SDL is running fine. I can display all graphics I want except for SDL_ttf. The test code for SDL_ttf I give in my preceding mail perfectly works under windows with VC++.net but don’t display anything under linux.
I am speaking about SDL_ttf and not SDL, because SDL works fine. The showfont program given in SDL_ttf works perfectly, but not my code, and I really don’t know why :confused: it seems to be clear, don’t you think ?
Crash doesn’t come from SDL core code I think… The problem is TTF_Render_Solid returns me an invalid surface… but why… ?

Here it is again, comments explain some proceeding :
I tell evebody again that this doesn’t displau anythink, but this should. font file is OK in pogram path

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Sorry if I’m off topic but if I recall correctly this thread was started
because SDL_ttf was not behaving properly on windows not linux. Again
appologies.


Juan D. Espinoza
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (FreeBSD)

iD8DBQE+ySNsuAPGC4EGcKkRAglxAJsEVGQmuxxDMSP+EzQdU8D0C7siawCg1hrU
z7ZNjh8BYBCgwaav0LXKcV0=
=J5u7
-----END PGP SIGNATURE-----

Your program works fine and doesn’t need any changes. I tested it on
slackware 9.0, with latest SDL CVS and SDL_ttf 2.0.6. I >compiled it with
"gcc dump.c -lSDL -lSDL_ttf". SDL_ttf was compiled against freetype 2.1.1 .
What versions of these libraries do >you have?

Jesse

I have compiled SDL_ttf 2.0.6 on SDL 1.2.5 ( all includes are in
/usr/include/SDL/ and libs are in /usr/lib/ ) and I don’t really know my
freetype version… But do I need to know which freetype I have to load
windows .ttf file under linux ?

Carlos

You probably do in this case. SDL_ttf utilizes freetype to load and display ttf fonts. Depending on which distro you have, you can try looking for a freetype package and see the version number. If you can’t find it, you can check XFree86 as it might be included in there. You might want to try to install a newer/older version of freetype, depending on the situation. If you can’t figure it out still, you might need to read the SDL_ttf code for the render function and make sure it is working alright.

JesseOn Tue, May 20, 2003 at 10:12:41AM +0200, Carlos wrote:

/usr/include/SDL/ and libs are in /usr/lib/ ) and I don’t really know my
freetype version… But do I need to know which freetype I have to load
windows .ttf file under linux ?

Jesse Allen wrote:> On Tue, May 20, 2003 at 10:12:41AM +0200, Carlos wrote:

/usr/include/SDL/ and libs are in /usr/lib/ ) and I don’t really know my
freetype version… But do I need to know which freetype I have to load
windows .ttf file under linux ?

You probably do in this case. SDL_ttf utilizes freetype to load and display ttf fonts. Depending on which distro you have, you can try looking for a freetype package and see the version number. If you can’t find it, you can check XFree86 as it might be included in there. You might want to try to install a newer/older version of freetype, depending on the situation. If you can’t figure it out still, you might need to read the SDL_ttf code for the render function and make sure it is working alright.

This sounds suspiciously like a problem I just had, after installing
RedHat 9. In my case, it was the freetype version that caused it.
For me, “showfont” worked fine, but pygame.font (a python wrapper
for SDL_ttf) didn’t. I didn’t try using SDL_ttf directly from C, so
maybe this isn’t the same problem.

RedHat 9 ships with freetype 2.1.3. Eventually, I found this hint
on the SDL_ttf webpage (http://www.libsdl.org/projects/SDL_ttf/):

“Requires:
The latest stable release of SDL 1.2, FreeType 2.0 or newer
(except FreeType 2.1.3)”

Note the bit in parentheses… :slight_smile:

Eventually, I tracked down an RPM for FreeType 2.1.2 on RedHat’s
ftp server - I think it shipped with RedHat 8.0? Anyway, I had to
force it past rpm’s dependency checking with something like

rpm -U --force --nodeps freetype-2.1.2-7.i386.rpm

although I think “–oldpackage” might have worked instead of “–force”;
I also installed the corresponding freetype-devel RPM, and “–nodeps
–oldpackage” worked for that one.

Be warned: my system seems stable right now, and SDL_ttf seems to be
working - pygame.font is now fine, at any rate. *BUT I haven’t
even been through a reboot since I did this, so anything could happen
yet. If your machine explodes, it’s not my fault! :slight_smile:

Hope this helps,

Lorcan Hamill

P.S.: There is now a version 2.1.4 of FreeType, but I wasn’t feeling
brave enough to try it. Does anyone know if it works with SDL_ttf? I’m
not sure if the warning on the SDL_ttf webpage has been updated since
2.1.4 was released…

This sounds suspiciously like a problem I just had, after installing
RedHat 9. In my case, it was the freetype version that caused it.
For me, “showfont” worked fine, but pygame.font (a python wrapper
for SDL_ttf) didn’t. I didn’t try using SDL_ttf directly from C, so
maybe this isn’t the same problem.

Lorcan Hamill

Hi Lorcan, I think you are near the solution, anywhere I found something
like a bugin SDL_ttf (all i say here is for my system)

Seeing that my showfont program was working and not my proper code, I have
carrefully red the showfont.c program and discovered that the
TTF_RenderText_Shaded() works perfectly, and the TTF_RenderText_Solid() is
the function that returns a NULL surface on my system. So, isn’t this a bug
?
Example : in the showfont program there is the “rendersolid” variable
defaulted to 0, and the program works. If you set it to 1, the program
crash, and says it cannot display the font, because at 1 prorgam uses the
TTF_RenderText_Solid function and not the Shaded…
So why this is dependent of FreeType… strange…

Carlos

Hi,

So why this is dependent of FreeType… strange…

because SDL_ttf is not much more than a ‘wrapper’ around the
functionality provide by freetype2. In essence, it converts
the memory blocks returned by freetype into SDL surfaces -
freetype2 does all the hard work of loading, caching and rendering
the fonts.

As your code (and showfont) works on other systems (Windows,
SuSE, slackware) it suggests that there is something wrong with the
configuration of your system.

I’ve had trouble with freetype on Linux boxes myself: freetype1
was used by (I think) KDE and I had some troubles with the wrong
headers and .so files being found by the build system.

What Linux distribution/version are you using?

For example, I originally tried RedHat 7.0 which was a total disaster

  • only a few of the SDL demos worked (dependant on optimisation
    settings) and it was a frustrating week later that I discovered that
    even the latest and greatest versions of the development tools just
    didn’t work!

I went out, purchased SuSE 7.3, installed it, compiled SDL etc. and
everything just worked. I haven’t looked back since.

Good luck to you,

cheers,
John.> ----- Original Message -----

From: citrouille@wanadoo.fr (Carlos Alvarez)
To:
Sent: Wednesday, May 21, 2003 8:06 AM
Subject: Re: [SDL] SDL_ttf problem

This sounds suspiciously like a problem I just had, after installing
RedHat 9. In my case, it was the freetype version that caused it.
For me, “showfont” worked fine, but pygame.font (a python wrapper
for SDL_ttf) didn’t. I didn’t try using SDL_ttf directly from C, so
maybe this isn’t the same problem.

Lorcan Hamill

Hi Lorcan, I think you are near the solution, anywhere I found something
like a bugin SDL_ttf (all i say here is for my system)

Seeing that my showfont program was working and not my proper code, I have
carrefully red the showfont.c program and discovered that the
TTF_RenderText_Shaded() works perfectly, and the TTF_RenderText_Solid() is
the function that returns a NULL surface on my system. So, isn’t this a
bug
?
Example : in the showfont program there is the “rendersolid” variable
defaulted to 0, and the program works. If you set it to 1, the program
crash, and says it cannot display the font, because at 1 prorgam uses the
TTF_RenderText_Solid function and not the Shaded…
So why this is dependent of FreeType… strange…

Carlos


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

What Linux distribution/version are you using?

For example, I originally tried RedHat 7.0 which was a total disaster

  • only a few of the SDL demos worked (dependant on optimisation
    settings) and it was a frustrating week later that I discovered that
    even the latest and greatest versions of the development tools just
    didn’t work!

I went out, purchased SuSE 7.3, installed it, compiled SDL etc. and
everything just worked. I haven’t looked back since.

Good luck to you,

cheers,
John.

I made my own distribution from LFS. All may be clean, but I had trouble
with installing freetype too (freetype1 and 2) I had installed Freetype
1.3.1 first and then Freetype 2.1.4… Maybe like Lorcan said it, 2.1.x
version could be bugged…

carlos

Hi,

I made my own distribution from LFS.

Cool.

1.3.1 first and then Freetype 2.1.4… Maybe like Lorcan said it, 2.1.x
version could be bugged…

I just tried my other SuSE box, it is using freetype 2.1.3 and apart from a
compilation problem with SDL_ttf (some file-related constants changed
case, if I remember correctly …) it works fine.

Also, on my ‘just emerged today’ Gentoo box, which uses freetype 2.1.4,
"showfont -solid /usr/X11R6/lib/X11/fonts/truetype/times.ttf"
works ok too.

Just to clarify, you have found that ‘showfont’ works unless you
use -solid ?

Are you using the CVS version of SDL_ttf? If so, did you checkout
SDL_ttf2, as opposed to (the obsolete) SDL_ttf ?

Sorry I can’t think of anything more useful,

cheers,
John.> ----- Original Message -----

From: citrouille@wanadoo.fr (Carlos Alvarez)
To:
Sent: Wednesday, May 21, 2003 10:17 AM
Subject: Re: [SDL] SDL_ttf problem

What Linux distribution/version are you using?

For example, I originally tried RedHat 7.0 which was a total disaster

  • only a few of the SDL demos worked (dependant on optimisation
    settings) and it was a frustrating week later that I discovered that
    even the latest and greatest versions of the development tools just
    didn’t work!

I went out, purchased SuSE 7.3, installed it, compiled SDL etc. and
everything just worked. I haven’t looked back since.

Good luck to you,

cheers,
John.

I made my own distribution from LFS. All may be clean, but I had trouble
with installing freetype too (freetype1 and 2) I had installed Freetype
1.3.1 first and then Freetype 2.1.4… Maybe like Lorcan said it, 2.1.x
version could be bugged…

carlos


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

It seem that problem doesn’t come from char* buffer…

I made the simplest TTF_font program to test all :

I don’t know what I have forget, but I get always a black screen…

That program worked for me. Here’s what I did:

$ gcc dump.c -lSDL -lSDL_ttf -g
$ cp .fonts/TTF/comic.ttf .
$ ./a.out
** font load OK
** font draw OK

$ sdl-config --version --cflags
1.2.6
-I/usr/local/include/SDL -D_REENTRANT

SDL 1.2.6 is the prerelease in CVS, compiled under slack 9.0. SDL_ttf version is 2.0.6. Freetype is the version provided by xfree86 4.3/slack 9.0.

$ freetype-config --version
9.1.3 ?

So check your lib versions. Your problem seems to be elsewhere.

JesseOn Mon, May 19, 2003 at 07:04:13PM +0200, carlos wrote:

I have installed SDL_ttf-2.0.5 and I had also some
strange problems. Firstly i used the windows
times.ttf and showfont (and my program) only worked
with TTF_RenderShaded(…). After that i downloaded a
font and this on only worked with
TTF_RenderSolid(…).
I think the problem depends on the font you use.

Stephan__________________________________________________________________

Gesendet von Yahoo! Mail - http://mail.yahoo.de
Logos und Klingelt?ne f?rs Handy bei http://sms.yahoo.de

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

All right I too have some strange behavior with SDL_ttf showfont compiled in
SDL_ttfs base directory works perfectly though when compiled elsewhere
displays fonts in a very odd way. For instance I load x.ttf with the stock
showfont execlutable it will display the fonts properly, however same exact
code compiled ( gcc showfont.c -o showfont SDL-config --cflags --libs

  • -lSDL_ttf ) by hand will try to display same exact font but will spit out
    characters that appear to be rectangles ( [] [] )on their sides. Some more
    info on my system it is a badly updated FreeBSD 5.0 rc3 ( Amnesiac ),
    freetype-config --version “9.2.3”, running XFree 4.3.0, True Type is
    available and I am running SDL_ttf 2.0.6. I’ve installed SDL and SDL_ttf from
    the ports collection as well as manually and on either build the SDL_ttf
    library seems to behave in the same manner. I know that SDL_ttf is just a
    wrapper to get at true type fonts but I’m too lazy too hack the library, that
    and I wouldn’t want to fsck with the LGPL.

Cheers,


Juan D. Espinoza
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (FreeBSD)

iD8DBQE+zRZnuAPGC4EGcKkRAs29AKC7zp2BZCNY6Ii8E9noxXUzNHoXwwCfS2Z9
SaCsAKKLQHWcDxpiCgCA2c8=
=M0f/
-----END PGP SIGNATURE-----