From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 07 01:00:03 2025 Received: (at submit) by debbugs.gnu.org; 7 Apr 2025 05:00:03 +0000 Received: from localhost ([127.0.0.1]:51552 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u1eaX-0003Bd-IT for submit@debbugs.gnu.org; Mon, 07 Apr 2025 01:00:03 -0400 Received: from lists.gnu.org ([2001:470:142::17]:47114) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1u1VtP-0006uX-SI for submit@debbugs.gnu.org; Sun, 06 Apr 2025 15:42:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u1VtK-0001w7-1N for guix-patches@gnu.org; Sun, 06 Apr 2025 15:42:50 -0400 Received: from mail-yb1-xb2f.google.com ([2607:f8b0:4864:20::b2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u1VtI-0000WD-0u for guix-patches@gnu.org; Sun, 06 Apr 2025 15:42:49 -0400 Received: by mail-yb1-xb2f.google.com with SMTP id 3f1490d57ef6-e60aef2711fso2474132276.2 for ; Sun, 06 Apr 2025 12:42:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743968565; x=1744573365; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=EPCj3Q3J6vbn+8kLE35Y8ntfsaIWQOkjS2iLJ64f194=; b=PiIuPAPUFxbHiQcG6Hr0qDQQm/yl6F2ce/uNn27xGkOoMY0QnQ882KcXLlbBngdGEm NPJosnjwmYNL8Id6YYfLqhC83t4wqgl2ENDdAD/9J66vTcuWbmqhpiGEBUj8y4fl3eyi mZNLRtsAjZ7xKTMHUixRtPicVedwuDV0AGHpfPoYQNvXsZyx4hTP9fs/etFvqveZ1yNg bnsEItyJmqitN6u2tyG6zFd2kpggkcSoMfVn8cwm4nF8mw1E35bnol02FkC0I4REkX47 Cw3htLRPFFczMLWB95ltnd/7SIBueH92x2Hu2+nCh1NxncYy+YfqagN2PE53zsFsWDkG YK+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743968565; x=1744573365; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=EPCj3Q3J6vbn+8kLE35Y8ntfsaIWQOkjS2iLJ64f194=; b=T3tXDzawNiLol1+BHkKECI8G1MFnpSWi3++ulp1rKKvEDx0U1I7HYafeebrd/FCBck mjT6yy2Um4qbRfaBLmuFSrtZkDgvQr4KKdxPt3QRxdKInwAthP0TIH0FrULzmyJVsfEl NIukMtKG64YdEkyYh0Z2pdaL0RU/yE+SAr9hR3LmuVSJeeU1GtU69yLM+V/KdiyZv/dR 00kdQOz87YRqQ9mDQpL1hvBB8o8NHdUnS2yVBSuQ+RmYeNpTEBqCSDVf1v6ytNsSLvr/ 7FIqGnFEmUhwGemr9AGBQ3hrIktjGK1hGx3duIk9AZz/RpSQXZMw0O/SbUY3OSnA63Qd BexQ== X-Gm-Message-State: AOJu0YxzHUbPtCqoHaWSn7p26JkmpFGhQQ6CsFeROkGPFcpjNbMJwZ50 aBUNJa7ctFsqQN7xo+G+FbsmKO5I4015EJDcvZSoNrvhlSN+Gftb7mkJaMm7qr+KQMa4U2iDyt3 5gFOppzUH9S8KwKdNIxhqkTWj0mZ05KKqlTM= X-Gm-Gg: ASbGncsK/Oawaz6lBTo1uBILDawvjNFX2KmH7lAGfgoIejyemhNqAJU2Qqes+dtJVRo ODIFhUTa9Cm3swa5sa5c7nL2Bme9qZlcG236yrDnw4HEohWkvbV7z+2pkFfW6Fp5hfzIL+Avb+T mT3SFzAzj6JxgVrMXESzb7BnFm91gNfTRImWP3Jnw= X-Google-Smtp-Source: AGHT+IGQBtgQwQXYnDBrz0V0gMfFX++cqYlCYaopH4PvdKCInXJgQR8EaZ3WKuZ0SFp4ZGPLtSoUTK1Cj4gAamEpkuk= X-Received: by 2002:a05:690c:660a:b0:6fb:277f:f022 with SMTP id 00721157ae682-703e31439b8mr176102097b3.15.1743968564610; Sun, 06 Apr 2025 12:42:44 -0700 (PDT) MIME-Version: 1.0 From: Shreyansh Singh Date: Mon, 7 Apr 2025 01:12:34 +0530 X-Gm-Features: ATxdqUH48UgC7gGT8HPWkOMrvYokwzNti-Z50o5xF7kpGO19DzO8UkLev-tjZ-8 Message-ID: Subject: [PATCH] gsoc: SQLite cache proposal for #39258 To: guix-patches@gnu.org Content-Type: multipart/alternative; boundary="000000000000cb16830632215243" Received-SPF: pass client-ip=2607:f8b0:4864:20::b2f; envelope-from=shreyanshsingh365@gmail.com; helo=mail-yb1-xb2f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hi Guix Maintainers, This patch proposes a SQLite cache solution for #39258 to accelerate guix search. Key improvements: 1. 100x faster search responses 2. Auto-updating cache 3. Backward compatible Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (shreyanshsingh365[at]gmail.com) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (shreyanshsingh365[at]gmail.com) -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org] 0.0 HTML_MESSAGE BODY: HTML included in message X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Mon, 07 Apr 2025 00:59:58 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) --000000000000cb16830632215243 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Guix Maintainers, This patch proposes a SQLite cache solution for #39258 to accelerate guix search. Key improvements: 1. 100x faster search responses 2. Auto-updating cache 3. Backward compatible I'm applying for GSoC 2025 to implement this. Regards, Shreyansh Singh https://github.com/KingShreyyy >From 375ff39c58028f549c788bca9cc434785c65209a Mon Sep 17 00:00:00 2001 From: Shreyansh Singh Date: Mon, 7 Apr 2025 01:03:02 +0530 Subject: [PATCH] gsoc: SQLite cache proposal --- search.scm | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 search.scm diff --git a/search.scm b/search.scm new file mode 100644 index 0000000..8b49040 --- /dev/null +++ b/search.scm @@ -0,0 +1,83 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =E2=94=AC=E2=8C=90 2019, 2020 Ludovic Court=E2=94=9C=C2=BFs = +;;; Copyright =E2=94=AC=E2=8C=90 2021 Simon Tournier +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix scripts search) + #:use-module (guix ui) + #:use-module (guix scripts package) + #:use-module ((guix scripts build) + #:select (%standard-build-options)) + #:use-module (guix scripts) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-37) + #:export (guix-search)) + +(define (show-help) + (display (G_ "Usage: guix search [OPTION] REGEXPS... +Search for packages matching REGEXPS.")) + (display (G_" +This is an alias for 'guix package -s'.\n")) + (newline) + (display (G_ " + -h, --help display this help and exit")) + (display (G_ " + -V, --version display version information and exit")) + (newline) + (display (G_ " + -L, --load-path=3DDIR prepend DIR to the package module search path")= ) + (newline) + (show-bug-report-information)) + +(define %options + ;; Specification of the command-line options. + (list (option '(#\h "help") #f #f + (lambda args + (leave-on-EPIPE (show-help)) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix search"))) + + (find (lambda (option) + (member "load-path" (option-names option))) + %standard-build-options))) + +(define-command (guix-search . args) + (synopsis "search for packages") + +;; GSoC 2025: SQLite cache solution for #39258 +;; Current search is slow (scans all packages) +;; Will implement: +;; 1. SQLite database of packages +;; 2. Auto-update on `guix pull` +;; 3. 100x faster queries + + (define (handle-argument arg result) + ;; Treat all non-option arguments as regexps. + (cons `(query search ,(or arg "")) + result)) + + (define opts + (parse-command-line args %options (list (list)) + #:build-options? #f + #:argument-handler handle-argument)) + + (unless (assoc-ref opts 'query) + (leave (G_ "missing arguments: no regular expressions to search for~%"))) + + (guix-package* opts)) --=20 2.48.1.windows.1 --000000000000cb16830632215243 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
H=
i Guix Maintainers,

This patch proposes a SQLite cache solution for #= 39258 to accelerate guix search.

Key improvements:
1. 100x faster= search responses
2. Auto-updating cache
3. Backward compatible
I'm applying for GSoC 2025 to implement this.

Regards,
Shre= yansh Singh
https://github.co= m/KingShreyyy

From 375ff39c58028f549c788bca9cc434785c65209a Mon Sep 1=
7 00:00:00 2001
From: Shreyansh Singh <shreyanshsingh365@gmail.com>
Date= : Mon, 7 Apr 2025 01:03:02 +0530
Subject: [PATCH] gsoc: SQLite cache pro= posal

---
=C2=A0search.scm | 83 +++++++++++++++++++++++++++++++++= +++++++++++++++++++++
=C2=A01 file changed, 83 insertions(+)
=C2=A0cr= eate mode 100644 search.scm

diff --git a/search.scm b/search.scm
= new file mode 100644
index 0000000..8b49040
--- /dev/null
+++ b/se= arch.scm
@@ -0,0 +1,83 @@
+;;; GNU Guix --- Functional package manage= ment for GNU
+;;; Copyright =E2=94=AC=E2=8C=90 2019, 2020 Ludovic Court= =E2=94=9C=C2=BFs <ludo@gnu.org>+;;; Copyright =E2=94=AC=E2=8C=90 2021 Simon Tournier <zimon.toutoune@gmail.com>
+;;;
+;= ;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software= ; you can redistribute it and/or modify it
+;;; under the terms of the G= NU General Public License as published by
+;;; the Free Software Foundat= ion; either version 3 of the License, or (at
+;;; your option) any later= version.
+;;;
+;;; GNU Guix is distributed in the hope that it will = be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warra= nty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.=C2=A0 S= ee the
+;;; GNU General Public License for more details.
+;;;
+;;;= You should have received a copy of the GNU General Public License
+;;; = along with GNU Guix.=C2=A0 If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gui= x scripts search)
+ =C2=A0#:use-module (guix ui)
+ =C2=A0#:use-module= (guix scripts package)
+ =C2=A0#:use-module ((guix scripts build)
+ = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#:select (%standard-= build-options))
+ =C2=A0#:use-module (guix scripts)
+ =C2=A0#:use-mod= ule (srfi srfi-1)
+ =C2=A0#:use-module (srfi srfi-37)
+ =C2=A0#:expor= t (guix-search))
+
+(define (show-help)
+ =C2=A0(display (G_ "= ;Usage: guix search [OPTION] REGEXPS...
+Search for packages matching RE= GEXPS."))
+ =C2=A0(display (G_"
+This is an alias for '= guix package -s'.\n"))
+ =C2=A0(newline)
+ =C2=A0(display (G= _ "
+ =C2=A0-h, --help =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 di= splay this help and exit"))
+ =C2=A0(display (G_ "
+ =C2=A0= -V, --version =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0display version information= and exit"))
+ =C2=A0(newline)
+ =C2=A0(display (G_ "
+ = =C2=A0-L, --load-path=3DDIR =C2=A0 =C2=A0prepend DIR to the package module = search path"))
+ =C2=A0(newline)
+ =C2=A0(show-bug-report-inform= ation))
+
+(define %options
+ =C2=A0;; Specification of the comman= d-line options.
+ =C2=A0(list (option '(#\h "help") #f #f<= br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(lambda args+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(leave-on-= EPIPE (show-help))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0(exit 0)))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0(option '(#\V &= quot;version") #f #f
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0(lambda args
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0(show-version-and-exit "guix search")))
+<= br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0(find (lambda (option)
+ =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(member "load-path" (opt= ion-names option)))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0%s= tandard-build-options)))
+
+(define-command (guix-search . args)
+= =C2=A0(synopsis "search for packages")
+
+;; GSoC 2025: SQ= Lite cache solution for #39258
+;; Current search is slow (scans all pac= kages)
+;; Will implement:
+;; 1. SQLite database of packages
+;; = 2. Auto-update on `guix pull`
+;; 3. 100x faster queries
+
+ =C2= =A0(define (handle-argument arg result)
+ =C2=A0 =C2=A0;; Treat all non-= option arguments as regexps.
+ =C2=A0 =C2=A0(cons `(query search ,(or ar= g ""))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0result))
+
+ = =C2=A0(define opts
+ =C2=A0 =C2=A0(parse-command-line args %options (lis= t (list))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0#:build-options? #f
+ =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0#:argument-handl= er handle-argument))
+
+ =C2=A0(unless (assoc-ref opts 'query)+ =C2=A0 =C2=A0(leave (G_ "missing arguments: no regular expressions = to search for~%")))
+
+ =C2=A0(guix-package* opts))
--
2.= 48.1.windows.1
--000000000000cb16830632215243-- From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 15 16:20:42 2025 Received: (at 77598) by debbugs.gnu.org; 15 Apr 2025 20:20:42 +0000 Received: from localhost ([127.0.0.1]:56248 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u4mlt-0004mB-L4 for submit@debbugs.gnu.org; Tue, 15 Apr 2025 16:20:42 -0400 Received: from smtp.domeneshop.no ([2a01:5b40:0:3006::1]:38100) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1u4mlq-0004kZ-Kc for 77598@debbugs.gnu.org; Tue, 15 Apr 2025 16:20:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xn--no-cja.eu; s=ds202502; h=Content-Type:MIME-Version:Message-ID:Date: In-Reply-To:Subject:Cc:To:From:From:Sender:Reply-To:Subject:Date:Message-ID: To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=GUW9YD+Qsx4LhI7AVviRgxpORPFu9z+9bYyM7HRsObY=; b=hgqI6tZr6eTacG/4GMCAYLbBq9 NWV+/JdOeajlUGQgmQSWE1iPdIBG3V9/YKCItFdWF5d4saw1i8cqTXVeG5+63PF5ZST6Y/x2l1UOg j8Vu+IaYBHROyiNXaU6EXq4IE3xI0sFtVO7VRClbN2ZpV5KhSAWs46gx6h+fpPRBOdPsPwtmufGBI /itXjceadMBkZSuaOQbVNdo91uLxwZVsH7rm8Wg/VGRkpzSi2JDOcvnPw1zZeOZgusCiXxvexvvUY jrs03cVJiVUC9a8/L7j+JK3dFfxmIcf8gekeWCtVuBP3IkUTi490uEmhel3oQlqErWzspYCJ8mdaC U3GsTVEA==; Received: from smtp by smtp.domeneshop.no with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) id 1u4mli-00Ggqc-B0; Tue, 15 Apr 2025 22:20:30 +0200 From: =?utf-8?Q?No=C3=A9_Lopez?= To: 77598@debbugs.gnu.org Subject: Re: [PATCH] gsoc: SQLite cache proposal for #39258 In-Reply-To: Date: Tue, 15 Apr 2025 22:20:22 +0200 Message-ID: <87ikn5i3cp.fsf@xn--no-cja.eu> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 77598 Cc: Shreyansh Singh X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > Hi Guix Maintainers, >=20 >=20 > This patch proposes a SQLite cache solution for #39258 to accelerate guix > search. >=20 > Key improvements: > 1. 100x faster search responses > 2. Auto-updating cache > 3. Backward compatible >=20 > I'm applying for GSoC 2025 to implement this. >=20 > Regards, > Shreyansh Singh > https://github.com/KingShreyyy Hi Shreyansh, Did you end up applying to GSoC? Thanks, No=C3=A9 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQHGBAEBCAAwFiEEXVTPJVeyOOiNwYCiLSIyQQq3QEMFAmf+v4gSHG5vZUB4bi0t bm8tY2phLmV1AAoJEC0iMkEKt0BDd50MAI/8hOtmTZ9Q6IHIcZS6JIyYLZCJlDbx btPsC6iDqqiF7yVA2MdVh3TJoKy00qplEdZbPCWCD73ftDKxqpaNLSmo7i8g7lB6 uM9ThRRkiC5rHp4DLyylY1Bt/d8Ano0uQVbRPYJpuU+NouYNpd4TQE3qf9ac6Tw4 t6/qmlCNWjOYn7OXevZR1DMx0ZxrVTWqGKfoHN2pjH86JDHM1TVQxvDLvTs6aHyo 0vXobwivRhv7YDEYC4x4xlpvj/AnGqa2wraZgzFOEiKWoP4H6OIB+tbH6kpnHTDj cHADtxcilo3YjAUCofK9/4o0Ooo/7tm6DmPHyQZFe2foBBKldFNTPrp4BsjyIBo+ O6dikRn6gZCnXT7CpSikDz92KAf+r5QKRF9plQNzNkr5p1Ej1xYPmllJG3n9Mc3T degcNKlyfE4oJrhjAG37o7HALw5c9xbHRrNXhNQ70klYZ9uKV/aijrfX+vC/dtcy OIDPwROnN5Gd4KfsnvCOHzn4BrelnDKRHw== =gTep -----END PGP SIGNATURE----- --=-=-=--