Add Visualboyadvance-m

  • Open
  • quality assurance status badge
Details
3 participants
  • Charles
  • Julien Lepiller
  • Maxime Devos
Owner
unassigned
Submitted by
Charles
Severity
normal
C
C
Charles wrote on 1 Feb 2022 18:36
(name . guix-patches@gnu.org)(address . guix-patches@gnu.org)
_jHX_rdAkHOB9IqHIQfXfggyuZwAL-8cC92ZuWnlLfjZtXdqUHY5XBLRjD32CGrxNx7uBzHJgAtN_YdHoifX1Y4Vhaayg_gWJX6wqPZDhx4=@protonmail.com
Please review the way that I did the patch files because I am not sure if they are linline with guix standards.
Attachment: file
C
C
Charles wrote on 11 Feb 2022 07:51
Bump
(name . 53704@debbugs.gnu.org)(address . 53704@debbugs.gnu.org)
Q8Y0dERv2B2HRxgdbxZuAlQWe77wcC_de78ypfLnBLGBdYluR-9C-oDOI9nIFbosyWQHmhpYc34qSIGZHaLIoLYoutn3Qeb1_JOgzv9r0tQ=@protonmail.com
Is there any chance this can get merged? If there is something wrong with the package, I am happy to fix it.
J
J
Julien Lepiller wrote on 11 Feb 2022 08:05
33CA9DF7-1E9D-410D-9775-61825B56A0DF@lepiller.eu
Your patch looks good, though I haven't tested yet. In your synopsis, it's "an emulator", not "a emulator". The patches should contain author information. Did you create them yourself? Did you get them from somewhere else?

The gcc patch could be replaced with a phase that substitutes cc for gcc.

You need to add the patches to gnu/local.mk.

Thanks!

On February 11, 2022 7:51:31 AM GMT+01:00, Charles via Guix-patches via <guix-patches@gnu.org> wrote:
Toggle quote (5 lines)
>Is there any chance this can get merged? If there is something wrong with the package, I am happy to fix it.
>
>
>
>
Attachment: file
C
C
Charles wrote on 12 Feb 2022 01:30
(name . Julien Lepiller)(address . julien@lepiller.eu)(name . 53704@debbugs.gnu.org)(address . 53704@debbugs.gnu.org)
3c9dxjEeXYXD76uUQgjwTlqZOtOb7IFb8FX50AHQoH9bc-bapcr6kxnaouHjVYd3CaIPjKPiuUwZ6tx6VW-YRPKUMri5i_mLx4du5ux81a8=@protonmail.com
Thanks for the review, Julien. Here is a new patch that includes your suggestions.

------- Original Message -------

On Friday, February 11th, 2022 at 1:05 AM, Julien Lepiller <julien@lepiller.eu> wrote:

Toggle quote (11 lines)
> Your patch looks good, though I haven't tested yet. In your synopsis, it's "an emulator", not "a emulator". The patches should contain author information. Did you create them yourself? Did you get them from somewhere else?
>
> The gcc patch could be replaced with a phase that substitutes cc for gcc.
>
> You need to add the patches to gnu/local.mk.
>
> Thanks!
>
> On February 11, 2022 7:51:31 AM GMT+01:00, Charles via Guix-patches via <guix-patches@gnu.org> wrote:
>
> > Is there any chance this can get merged? If there is something wrong with the package, I am happy to fix it.
From 3b03ca688dd33091d4e43754eaf3c74ad00cbd10 Mon Sep 17 00:00:00 2001
From: Charles <charles.b.jackson@protonmail.com>
Date: Tue, 1 Feb 2022 10:36:06 -0600
Subject: [PATCH] gnu: emulators: Add visualboyadvance-m.

* gnu/packages/emulators.scm (visualboyadvance-m): New variable.
* gnu/packages/patches/visualboyadvance-m-fix-rpath.patch: New patch.
---
gnu/local.mk | 1 +
gnu/packages/emulators.scm | 53 +++++++++++++++++++
.../visualboyadvance-m-fix-rpath.patch | 25 +++++++++
3 files changed, 79 insertions(+)
create mode 100644 gnu/packages/patches/visualboyadvance-m-fix-rpath.patch

Toggle diff (117 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 1b08b40b9c..5e6bceedfb 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1960,6 +1960,7 @@ dist_patch_DATA = \
%D%/packages/patches/vinagre-newer-freerdp.patch \
%D%/packages/patches/vinagre-newer-rdp-parameters.patch \
%D%/packages/patches/virglrenderer-CVE-2017-6386.patch \
+ %D%/packages/patches/visualboyadvance-m-fix-rpath.patch \
%D%/packages/patches/vsearch-unbundle-cityhash.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt1.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9ec73bc11f..ae4c395d78 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2022 Charles Jackson <charles.b.jackson@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -814,6 +815,58 @@ (define-public sameboy
from an emulator---from save states to scaling filters.")
(license license:expat)))
+(define-public visualboyadvance-m
+ (package
+ (name "visualboyadvance-m")
+ (version "2.1.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/visualboyadvance-m/visualboyadvance-m/")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1kgpbvng3c12ws0dy92zc0azd94h0i3j4vm7b67zc8mi3pqsppdg"))
+ (patches (search-patches "visualboyadvance-m-fix-rpath.patch"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:build-type "Release"
+ #:tests? #f
+ #:configure-flags
+ (list "-DENABLE_SSP=ON"
+ "-DENABLE_ONLINEUPDATES=OFF"
+ (string-append "-DCMAKE_PREFIX_PATH="
+ (assoc-ref %build-inputs "wxwidgets")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'set-c-compiler
+ (lambda _
+ (substitute* "cmake/HostCompile.cmake"
+ ((" cc ") " gcc "))))
+ (add-before 'configure 'set-home
+ (lambda _ (setenv "HOME" (getcwd)))))))
+ (native-inputs (list
+ gettext-minimal
+ nasm
+ pkg-config
+ zip))
+ (inputs (list
+ ffmpeg
+ gtk+
+ libpng
+ mesa
+ openal
+ sdl2
+ sfml
+ wxwidgets
+ zlib))
+ (home-page "https://vba-m.com/")
+ (synopsis "Performant Nintendo Gameboy emulator")
+ (description "Visual Boy Advance M is an emulator of the Game Boy, Game Boy
+Color, and Game Boy Advance handheld game consoles.")
+ (license license:gpl2+)))
+
(define-public mupen64plus-core
(package
(name "mupen64plus-core")
diff --git a/gnu/packages/patches/visualboyadvance-m-fix-rpath.patch b/gnu/packages/patches/visualboyadvance-m-fix-rpath.patch
new file mode 100644
index 0000000000..9116f35b2a
--- /dev/null
+++ b/gnu/packages/patches/visualboyadvance-m-fix-rpath.patch
@@ -0,0 +1,25 @@
+From 6ec4f4224aa360d5c233941148465ad1c8c77f33 Mon Sep 17 00:00:00 2001
+From: Charles Jackson <charles.b.jackson@protonmail.com>
+Date: Mon, 31 Jan 2022 23:24:17 -0600
+Subject: [PATCH] Fix rpath
+
+---
+ CMakeLists.txt | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 010c9b0e..3a959b59 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -610,9 +610,6 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
+
+ set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} -Wl,-allow-multiple-definition)
+
+- if(CMAKE_PREFIX_PATH)
+- list(GET CMAKE_PREFIX_PATH 0 prefix_path_first)
+- set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} "-Wl,-rpath-link=${prefix_path_first}/lib")
+- endif()
++ set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} "-Wl,-rpath,$ENV{LIBRARY_PATH}")
+ endif()
+
+ # set linker flags
\ No newline at end of file
--
2.34.0
M
M
Maxime Devos wrote on 12 Feb 2022 10:54
(name . 53704@debbugs.gnu.org)(address . 53704@debbugs.gnu.org)
d392fcdcd39da3e7152a4d0cfeb01c4f5d974e8d.camel@telenet.be
Charles via Guix-patches via schreef op za 12-02-2022 om 00:30 [+0000]:
Toggle quote (2 lines)
> +               ((" cc ") " gcc "))))

This needs to be TARGET-gcc when cross-compiling, use cc-for-target:

((" cc ") (string-append " " ,(cc-for-target) " "))

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgeDwBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7pJEAP9XB4itupZoiTqmWXfskNUKCzYt
TAa2K8LAqetfAXcb+AEAy79EnZYZ12I37mVRS7MgAo1Abe1Em2jANcTiGJLf6QQ=
=B9Lv
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 12 Feb 2022 11:11
(name . 53704@debbugs.gnu.org)(address . 53704@debbugs.gnu.org)
e4e32603383f594edc6cac29121d96bdd3a71a88.camel@telenet.be
Charles via Guix-patches via schreef op za 12-02-2022 om 00:30 [+0000]:
Toggle quote (3 lines)
> ++        set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} "-Wl,-
> rpath,$ENV{LIBRARY_PATH}")

When cross-compiling, CROSS_LIBRARY_PATH needs to be used instead.
Usually, fiddling with rpaths manually is unnecessary, Guix does
that automatically in most situations. I'll look into this.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgeHuhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7rT9AQC/sdTxusU6L75CAiE1Awx81a9J
ymAeC9pUdAwa6i2eSgD+MjT+IRh1EXUpM/Cjm/oHc098jYfkdBlfXtfCt5DOkQ8=
=j3mD
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 12 Feb 2022 12:35
(name . 53704@debbugs.gnu.org)(address . 53704@debbugs.gnu.org)
708d9f2b29e09f3906d36ecefc8c273bb589d1b4.camel@telenet.be
Charles via Guix-patches via schreef op za 12-02-2022 om 00:30 [+0000]:
Toggle quote (14 lines)
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url
> "https://github.com/visualboyadvance-m/visualboyadvance-m/")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32
> "1kgpbvng3c12ws0dy92zc0azd94h0i3j4vm7b67zc8mi3pqsppdg"))
> +       (patches (search-patches "visualboyadvance-m-fix-
> rpath.patch"))))

The iniparser package is bundled in src/common/iniparser.c and
src/common/iniparser.h.

A part of a variant of zlib is in src/common/memgzio.c and
src/common/memgzio.h. I think it's ok in this case, since it appears
to be modified for use in visualboyadvance-m. However, the license of
zlib needs to be respected:

/* gzio.c -- IO on .gz files
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in
zlib.h
*
* Compile this file with -DNO_DEFLATE to avoid the compression code.
*/

I don't see zlib.h anywhere and the zlib license requires preserving
the license notice:

3. This notice may not be removed or altered from any source
distribution.

There is another problem: the version in visualboyadvance-m is old
(2002, according to the copyright line) while there have been
quite a few bugfixes since then (https://www.zlib.net/ChangeLog.txt).

Another bundled library: src/common/dictionary.c and
src/common/dictionary.h.

There is also src/filters/bilinear.cpp which is extracted from Exult
(GPL2+ licensed), but it appears that the copyright+license header was
not preserved, while preserving that is a requirement of the GPL IIUC?

The files in src/filters/xBRZ are GPL3 licensed, so 'license:gpl2+'
in the package definition seems inaccurate. It is unclear of GPL3-only
or GPL3-or-later was meant.

The file src/gba/debugger-expr-lex.cpp and src/gba/debugger-expr-
yacc.cpp are generated by flex and Bison, can they be generated during
the build?

libretro is bundled in src/libretro, can it be unbundled?

src/expr.cpp and src/expr.cpp.h are generated files, not source code.

A part of glibc is bundled in src/sdl/getopt1.c, src/sdl/getopt.c
and src/sdl/getopt.h.

wxwidgets is bundled in src/wx.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgebgRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tHpAQCKgtKKvBQG9CBrdLxI7aRrHqoo
aLloZIOJcmSVu6jDmgD+OJf4DwnKvov9aOiYhgWvlZKkP9ero/Tl7cpwLXhzlQU=
=E/i8
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 12 Feb 2022 13:17
(name . 53704@debbugs.gnu.org)(address . 53704@debbugs.gnu.org)
7cfb03127755815b9a55beeccbccbbda2f4d553d.camel@telenet.be
Maxime Devos schreef op za 12-02-2022 om 12:35 [+0100]:
Toggle quote (2 lines)
> wxwidgets is bundled in src/wx.

Nevermind, it's only wxwidgets-related, not wxwidgets itself.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYgelTBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7iYrAQCfWWKpYW3TTLNPdHxBkxS636fB
vPsLFssRtiCwudIiCAD/TS2c5l1tc2Gowr/t846C+bLAD9Qy4FiRBK0RH4Qckg0=
=2HAk
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 12 Feb 2022 14:31
(name . 53704@debbugs.gnu.org)(address . 53704@debbugs.gnu.org)
11a5c7052c3f76dcf41fc614fed551ee019c1f96.camel@telenet.be
Hi,

I've modified the package definition and patch a bit to
make it simpler (visualboyadvance-m-fix-rpath.patch now only removed
things), cross-compilable (it uses cc-for-target instead of hardcoding
"gcc" and LIBRARY_PATH is unused) and avoid using constructs that
are being deprecated (%build-inputs --> this-package-input).

The list+local-file will have to be replaced by search-patches.

Cross-compilation is untested because gtk+ cannot currently be
cross-compiled.

It seems to work, at least the application starts, I don't have any VBA
games to test it with.

Greetings,
Maxime.
(use-modules (guix packages) (gnu packages gettext) (guix git-download) (guix search-paths) (gnu packages) (guix gexp) (guix utils) (guix build-system cmake) (gnu packages audio) (gnu packages cmake) (gnu packages assembly) (gnu packages pkg-config) (gnu packages compression) (gnu packages wxwidgets) (gnu packages game-development) (gnu packages sdl) (gnu packages video) (gnu packages gtk) (gnu packages image) (gnu packages gl) ((guix licenses) #:prefix license:)) (define-public visualboyadvance-m (package (name "visualboyadvance-m") (version "2.1.4") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/visualboyadvance-m/visualboyadvance-m/") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1kgpbvng3c12ws0dy92zc0azd94h0i3j4vm7b67zc8mi3pqsppdg")) (patches (list (local-file "visualboyadvance-m-fix-rpath.patch"))))) (build-system cmake-build-system) (arguments (list #:build-type "Release" #:tests? #f ;no tests #:configure-flags #~(list "-DENABLE_SSP=ON" "-DENABLE_ONLINEUPDATES=OFF" (string-append "-DCMAKE_PREFIX_PATH=" #$(this-package-input "wxwidgets"))) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'set-c-compiler (lambda _ (substitute* "cmake/HostCompile.cmake" ((" cc ") (string-append " " #$(cc-for-target) " ")))))))) (native-inputs (list gettext-minimal nasm pkg-config zip)) (inputs (list ffmpeg gtk+ libpng mesa openal sdl2 sfml wxwidgets zlib)) (home-page "https://vba-m.com/") (synopsis "Performant Nintendo Gameboy emulator") (description "Visual Boy Advance M is an emulator of the Game Boy, Game Boy Color, and Game Boy Advance handheld game consoles.") (license license:gpl2+))) visualboyadvance-m
From 6ec4f4224aa360d5c233941148465ad1c8c77f33 Mon Sep 17 00:00:00 2001
From: Charles Jackson <charles.b.jackson@protonmail.com>
Date: Mon, 31 Jan 2022 23:24:17 -0600
Subject: [PATCH] Fix rpath

---
CMakeLists.txt | 4 ----
1 file changed, 0 insertions(+), 4 deletions(-)

Toggle diff (15 lines)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 010c9b0e..3a959b59 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -610,9 +610,5 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} -Wl,-allow-multiple-definition)
- if(CMAKE_PREFIX_PATH)
- list(GET CMAKE_PREFIX_PATH 0 prefix_path_first)
- set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} "-Wl,-rpath-link=${prefix_path_first}/lib")
- endif()
endif()
# set linker flags
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYge2qhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7suiAQDRD93f1dqiKoCeG5i98ObStTDR
SVzXUrJwmRswRh+DiQEAptG7+6VXesbWfyoVfLD4IrnYt06X9L1RGa2NNSPqawo=
=wHX6
-----END PGP SIGNATURE-----


C
C
Charles wrote on 13 Feb 2022 00:45
(name . Maxime Devos)(address . maximedevos@telenet.be)
PnC6IbPuiD_UZsr3th_oYjtMiMOlliw1yggefJgsdLLPPOQiJMkGK1CTYi468yxGVYU-i8EXnH4nL5aGWA1duDKb-pYQNDTfp00_WYYMiTA=@protonmail.com
Thanks for the review, Maxime! That is a lot of stuff I did not know about. Your new version of the patch works for me except for the (list (local-file part which I think should be (search-patches.

What should I do about the library code duplication and licensing issues? Should I bring it upu with the project maintainers?

------- Original Message -------

On Saturday, February 12th, 2022 at 7:31 AM, Maxime Devos <maximedevos@telenet.be> wrote:

Toggle quote (25 lines)
> Hi,
>
> I've modified the package definition and patch a bit to
>
> make it simpler (visualboyadvance-m-fix-rpath.patch now only removed
>
> things), cross-compilable (it uses cc-for-target instead of hardcoding
>
> "gcc" and LIBRARY_PATH is unused) and avoid using constructs that
>
> are being deprecated (%build-inputs --> this-package-input).
>
> The list+local-file will have to be replaced by search-patches.
>
> Cross-compilation is untested because gtk+ cannot currently be
>
> cross-compiled.
>
> It seems to work, at least the application starts, I don't have any VBA
>
> games to test it with.
>
> Greetings,
>
> Maxime.
C
C
Charles wrote on 27 Feb 2022 01:19
(name . Maxime Devos)(address . maximedevos@telenet.be)
RBGJFtvDTk9JmTGo8XnzKIgOOs47NN1-vIPIw89E7Z5UnqVLoqiSgZVs4GcbEpVT1qHmqPOGcWwI2SG-1sDMu05Eie3G1qb_BA9g1hrZfO0=@protonmail.com
What are the next steps for this project? Do the licensing issues make it not allowed to be in guix?

------- Original Message -------

On Saturday, February 12th, 2022 at 5:45 PM, Charles <charles.b.jackson@protonmail.com> wrote:

Toggle quote (33 lines)
> Thanks for the review, Maxime! That is a lot of stuff I did not know about. Your new version of the patch works for me except for the (list (local-file part which I think should be (search-patches.
>
> What should I do about the library code duplication and licensing issues? Should I bring it upu with the project maintainers?
>
> ------- Original Message -------
>
> On Saturday, February 12th, 2022 at 7:31 AM, Maxime Devos maximedevos@telenet.be wrote:
>
> > Hi,
> >
> > I've modified the package definition and patch a bit to
> >
> > make it simpler (visualboyadvance-m-fix-rpath.patch now only removed
> >
> > things), cross-compilable (it uses cc-for-target instead of hardcoding
> >
> > "gcc" and LIBRARY_PATH is unused) and avoid using constructs that
> >
> > are being deprecated (%build-inputs --> this-package-input).
> >
> > The list+local-file will have to be replaced by search-patches.
> >
> > Cross-compilation is untested because gtk+ cannot currently be
> >
> > cross-compiled.
> >
> > It seems to work, at least the application starts, I don't have any VBA
> >
> > games to test it with.
> >
> > Greetings,
> >
> > Maxime.
M
M
Maxime Devos wrote on 27 Feb 2022 11:52
(name . Charles)(address . charles.b.jackson@protonmail.com)
85167753b13aacf05c386807262813743d4f0d6e.camel@telenet.be
Charles schreef op za 12-02-2022 om 23:45 [+0000]:
Toggle quote (3 lines)
> What should I do about the library code duplication and licensing issues?
> Should I bring it upu with the project maintainers?

The licensing should be brought up with the project maintainers.
The unbundling can be brought up with the maintainers, while probably
they will keep bundling, perhaps they could support some
"-DUSE_SYSTEM_ZLIB" kind of configure flags.

If upstream is unresponsive or keeps bundling, it may be possible to
unbundle it in Guix itself even though upstream bundles.

Greetings,
Maxime
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYhtX8BccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vKuAQDPyE1RiOpQWBGZEwX4tC8Ej8vU
FxmWDfCyiJx74q65ywD+N3B0i2xPzX1WpwDYMaJXhwt8h2Y/JYKFidoLgelMAA0=
=g8ca
-----END PGP SIGNATURE-----


?