Your message dated Sat, 24 Oct 2026 20:35:56 +0000
with message-id <[email protected]>
and subject line Bug#1147116: fixed in python-bytecode 0.19.1-1
has caused the Debian Bug report #1147116,
regarding python-bytecode: FTBFS against python 3.15rc2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1147116: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1147116
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:python-bytecode
Version: 0.17.0-1
User: [email protected]
Usertags: python3.15
Tags: patch, ftbfs, forky, sid
Severity: important

Hi!

While rebuilding the python related packages against the Python 3.15rc2
version we found that python-bytecode fails to build from source [1].
The problem can be solved with upstream commit
4bff24f022bb2c6bfe1c368821180534140ce0bb: feat: add support for CPython
3.15 [2].

I've applied the upstream fix in the sandbox [3] to verify that it
builds successfully, please consider applying the patch to support the
upcoming 3.15 version.

Setting the severity to important for now. Once Python 3.15 is released,
it will be added to python3-defaults and this bug will become release
critical.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4480850/
[2]: 
https://github.com/MatthieuDartiailh/bytecode/commit/4bff24f022bb2c6bfe1c368821180534140ce0bb
[3]: https://debusine.debian.net/debian/r-python-python3.15/

--
"Can you imagine what I would do if I could do all I can?" -- Sun Tzu
Saludos /\/\ /\ >< `/
From: Gabriele N. Tornetta <[email protected]>
Date: Fri, 21 Aug 2026 22:02:56 +0100
Subject: feat: add support for CPython 3.15 (#192)

* feat: add support for CPython 3.15

* beta1 updates

* add fallback version for shallow clones

* fix typing

* add 3.15 framework tests run

* IMPORT_NAME fix

* address review comments

---------

Co-authored-by: Matthieu Dartiailh <[email protected]>
Origin: upstream, https://github.com/MatthieuDartiailh/bytecode/commit/4bff24f022bb2c6bfe1c368821180534140ce0bb

Index: python-bytecode/src/bytecode/instr.py
===================================================================
--- python-bytecode.orig/src/bytecode/instr.py
+++ python-bytecode/src/bytecode/instr.py
@@ -13,7 +13,7 @@ except ImportError:
     from typing_extensions import TypeGuard  # type: ignore
 
 import bytecode as _bytecode
-from bytecode.utils import PY311, PY312, PY313, PY314
+from bytecode.utils import PY311, PY312, PY313, PY314, PY315
 
 # --- Instruction argument tools and
 
@@ -35,7 +35,11 @@ BITFLAG_OPCODES = (
     )
 )
 
-BITFLAG2_OPCODES = (_opcode.opmap["LOAD_SUPER_ATTR"],) if PY312 else ()
+BITFLAG2_OPCODES = (
+    (_opcode.opmap["LOAD_SUPER_ATTR"], _opcode.opmap["IMPORT_NAME"])
+    if PY315
+    else ((_opcode.opmap["LOAD_SUPER_ATTR"],) if PY312 else ())
+)
 
 # Binary op opcode which has a dedicated arg
 BINARY_OPS = (_opcode.opmap["BINARY_OP"],) if PY311 else ()
@@ -48,6 +52,9 @@ INTRINSIC = INTRINSIC_1OP + INTRINSIC_2O
 # Small integer related opcode
 SMALL_INT_OPS = (_opcode.opmap["LOAD_SMALL_INT"],) if PY314 else ()
 
+# Opcodes that gained a cache-only argument in 3.15 (arg is always 0 and not user-visible)
+CACHE_ONLY_ARG_OPCODES = (_opcode.opmap["GET_ITER"],) if PY315 else ()
+
 # Special method loading related opcodes
 SPECIAL_OPS = (_opcode.opmap["LOAD_SPECIAL"],) if PY314 else ()
 
@@ -218,6 +225,15 @@ class CommonConstant(enum.IntEnum):
     BUILTIN_ALL = 3
     BUILTIN_ANY = 4
 
+    if PY315:
+        BUILTIN_LIST = 5
+        BUILTIN_SET = 6
+        CONSTANT_NONE = 7
+        CONSTANT_EMPTY_STR = 8
+        CONSTANT_TRUE = 9
+        CONSTANT_FALSE = 10
+        CONSTANT_MINUS_ONE = 11
+
 
 # This make type checking happy but means it won't catch attempt to manipulate an unset
 # statically. We would need guard on object attribute narrowed down through methods
@@ -368,7 +384,7 @@ STATIC_STACK_EFFECTS: Dict[str, Tuple[in
     "DUP_TOP": (-1, 2),
     "DUP_TOP_TWO": (-2, 4),
     "GET_LEN": (-1, 2),
-    "GET_ITER": (-1, 1),
+    "GET_ITER": (-1, 2) if PY315 else (-1, 1),
     "GET_YIELD_FROM_ITER": (-1, 1),
     "GET_AWAITABLE": (-1, 1),
     "GET_AITER": (-1, 1),
@@ -448,7 +464,14 @@ DYNAMIC_STACK_EFFECTS: Dict[
     "MAP_ADD": lambda effect, arg, jump: (-arg, arg - 2),
     "FORMAT_VALUE": lambda effect, arg, jump: (effect - 1, 1),
     # FOR_ITER needs TOS to be an iterator, hence a prerequisite of 1 on the stack
-    "FOR_ITER": lambda effect, arg, jump: (effect, 0) if jump else (-1, 2),
+    # In 3.15, GET_ITER pushes (iter, null_or_index) as two stack slots, so
+    # FOR_ITER now requires both on the stack (-2) and always pushes them back
+    # plus one more slot (+3): the next value when continuing, or a marker
+    # consumed by END_FOR when exhausted before POP_ITER cleans up (iter,
+    # null_or_index). Net effect is +1 in both cases, matching dis.stack_effect.
+    "FOR_ITER": (lambda __effect, __arg, __jump: (-2, 3))
+    if PY315
+    else (lambda effect, __arg, jump: (effect, 0) if jump else (-1, 2)),
     "BUILD_INTERPOLATION": lambda effect, arg, jump: (-(2 + (arg & 1)), 1),
     **{
         # Instr(UNPACK_* , n) pops 1 and pushes n
@@ -843,6 +866,9 @@ class BaseInstr(Generic[A]):
                 "Only base opcodes are supported"
             )
 
+        if arg is UNSET and opcode in CACHE_ONLY_ARG_OPCODES:
+            arg = 0  # type: ignore
+
         self._check_arg(name, opcode, arg)
 
         self._name = name
Index: python-bytecode/src/bytecode/utils.py
===================================================================
--- python-bytecode.orig/src/bytecode/utils.py
+++ python-bytecode/src/bytecode/utils.py
@@ -6,3 +6,4 @@ PY311: Final[bool] = sys.version_info >=
 PY312: Final[bool] = sys.version_info >= (3, 12)
 PY313: Final[bool] = sys.version_info >= (3, 13)
 PY314: Final[bool] = sys.version_info >= (3, 14)
+PY315: Final[bool] = sys.version_info >= (3, 15)
Index: python-bytecode/tests/test_bytecode.py
===================================================================
--- python-bytecode.orig/tests/test_bytecode.py
+++ python-bytecode/tests/test_bytecode.py
@@ -7,8 +7,8 @@ import types
 import unittest
 
 from bytecode import Bytecode, ConcreteInstr, FreeVar, Instr, Label, SetLineno
-from bytecode.instr import BinaryOp, FormatValue, InstrLocation
-from bytecode.utils import PY310, PY311, PY312, PY313, PY314
+from bytecode.instr import BinaryOp, CommonConstant, FormatValue, InstrLocation
+from bytecode.utils import PY310, PY311, PY312, PY313, PY314, PY315
 
 from . import TestCase, get_code
 
@@ -169,6 +169,18 @@ class BytecodeTests(TestCase):
         label_else = Label()
         label_exit = Label()
         if PY314:
+
+            def _ret_none(lineno):
+                return (
+                    Instr(
+                        "LOAD_COMMON_CONSTANT",
+                        CommonConstant.CONSTANT_NONE,
+                        lineno=lineno,
+                    )
+                    if PY315
+                    else Instr("LOAD_CONST", None, lineno=lineno)
+                )
+
             self.assertInstructionListEqual(
                 bytecode,
                 [
@@ -179,12 +191,12 @@ class BytecodeTests(TestCase):
                     Instr("NOT_TAKEN", lineno=1),
                     Instr("LOAD_SMALL_INT", 1, lineno=2),
                     Instr("STORE_NAME", "x", lineno=2),
-                    Instr("LOAD_CONST", None, lineno=2),
+                    _ret_none(2),
                     Instr("RETURN_VALUE", lineno=2),
                     label_else,
                     Instr("LOAD_SMALL_INT", 2, lineno=4),
                     Instr("STORE_NAME", "x", lineno=4),
-                    Instr("LOAD_CONST", None, lineno=4),
+                    _ret_none(4),
                     Instr("RETURN_VALUE", lineno=4),
                 ],
             )
@@ -341,7 +353,11 @@ class BytecodeTests(TestCase):
             ]
             + (
                 [
-                    Instr("LOAD_CONST", None, lineno=3),
+                    Instr(
+                        "LOAD_COMMON_CONSTANT" if PY315 else "LOAD_CONST",
+                        CommonConstant.CONSTANT_NONE if PY315 else None,
+                        lineno=3,
+                    ),
                     Instr("RETURN_VALUE", lineno=3),
                 ]
                 if PY314
Index: python-bytecode/tests/test_cfg.py
===================================================================
--- python-bytecode.orig/tests/test_cfg.py
+++ python-bytecode/tests/test_cfg.py
@@ -20,7 +20,8 @@ from bytecode import (
     dump_bytecode,
 )
 from bytecode.concrete import OFFSET_AS_INSTRUCTION
-from bytecode.utils import PY311, PY312, PY313, PY314
+from bytecode.instr import CommonConstant
+from bytecode.utils import PY311, PY312, PY313, PY314, PY315
 
 from . import TestCase, disassemble as _disassemble
 
@@ -34,15 +35,20 @@ def disassemble(
         # drop LOAD_CONST+RETURN_VALUE to only keep 2 instructions,
         # to make unit tests shorter
         block = blocks[-1]
-        test = (
-            (block[-1].name == "RETURN_CONST" and block[-1].arg is None)
-            if PY312 and not PY314
-            else (
+        if PY315:
+            test = (
+                block[-2].name == "LOAD_COMMON_CONSTANT"
+                and block[-2].arg == CommonConstant.CONSTANT_NONE
+                and block[-1].name == "RETURN_VALUE"
+            )
+        elif PY312 and not PY314:
+            test = block[-1].name == "RETURN_CONST" and block[-1].arg is None
+        else:
+            test = (
                 block[-2].name == "LOAD_CONST"
                 and block[-2].arg is None
                 and block[-1].name == "RETURN_VALUE"
             )
-        )
         if not test:
             raise ValueError(
                 "unable to find implicit RETURN_VALUE <None>: %s" % block[-2:]
Index: python-bytecode/tests/test_code.py
===================================================================
--- python-bytecode.orig/tests/test_code.py
+++ python-bytecode/tests/test_code.py
@@ -84,6 +84,17 @@ class CodeTests(TestCase):
             function=True,
         )
 
+    def test_import(self):
+        # In 3.15 IMPORT_NAME gained lazy/eager flag bits packed into its arg
+        # (like LOAD_SUPER_ATTR), which a naive plain-name decode misses.
+        self.check(
+            """
+            import os
+            import os.path as osp
+            from os import path
+        """
+        )
+
 
 if __name__ == "__main__":
     unittest.main()  # pragma: no cover
Index: python-bytecode/tests/test_concrete.py
===================================================================
--- python-bytecode.orig/tests/test_concrete.py
+++ python-bytecode/tests/test_concrete.py
@@ -21,7 +21,8 @@ from bytecode import (
     SetLineno,
 )
 from bytecode.concrete import OFFSET_AS_INSTRUCTION, ExceptionTableEntry
-from bytecode.utils import PY310, PY311, PY312, PY313, PY314
+from bytecode.instr import CommonConstant
+from bytecode.utils import PY310, PY311, PY312, PY313, PY314, PY315
 
 from . import TestCase, get_code
 
@@ -250,30 +251,43 @@ class ConcreteBytecodeTests(TestCase):
     def test_attr(self):
         code_obj = get_code("x = 5")
         code = ConcreteBytecode.from_code(code_obj)
-        self.assertEqual(code.consts, [5, None])
+        self.assertEqual(code.consts, [5] if PY315 else [5, None])
         self.assertEqual(code.names, ["x"])
         self.assertEqual(code.varnames, [])
         self.assertEqual(code.freevars, [])
         self.assertInstructionListEqual(
             list(code),
-            ([ConcreteInstr("RESUME", 0, lineno=0)] if PY311 else [])
-            + [
-                ConcreteInstr("LOAD_CONST", 0, lineno=1),
-                ConcreteInstr("STORE_NAME", 0, lineno=1),
-            ]
-            + (
+            (
                 [
-                    ConcreteInstr("LOAD_SMALL_INT", 1, lineno=1),
+                    ConcreteInstr("RESUME", 0, lineno=0),
+                    ConcreteInstr("CACHE", 0, lineno=0),
+                    ConcreteInstr("LOAD_SMALL_INT", 5, lineno=1),
+                    ConcreteInstr("STORE_NAME", 0, lineno=1),
+                    ConcreteInstr("LOAD_COMMON_CONSTANT", 7, lineno=1),
                     ConcreteInstr("RETURN_VALUE", lineno=1),
                 ]
-                if PY314
+                if PY315
                 else (
-                    [ConcreteInstr("RETURN_CONST", 1, lineno=1)]
-                    if PY312
-                    else [
-                        ConcreteInstr("LOAD_CONST", 1, lineno=1),
-                        ConcreteInstr("RETURN_VALUE", lineno=1),
+                    ([ConcreteInstr("RESUME", 0, lineno=0)] if PY311 else [])
+                    + [
+                        ConcreteInstr("LOAD_CONST", 0, lineno=1),
+                        ConcreteInstr("STORE_NAME", 0, lineno=1),
                     ]
+                    + (
+                        [
+                            ConcreteInstr("LOAD_SMALL_INT", 1, lineno=1),
+                            ConcreteInstr("RETURN_VALUE", lineno=1),
+                        ]
+                        if PY314
+                        else (
+                            [ConcreteInstr("RETURN_CONST", 1, lineno=1)]
+                            if PY312
+                            else [
+                                ConcreteInstr("LOAD_CONST", 1, lineno=1),
+                                ConcreteInstr("RETURN_VALUE", lineno=1),
+                            ]
+                        )
+                    )
                 )
             ),
         )
@@ -329,7 +343,9 @@ class ConcreteBytecodeTests(TestCase):
             ]
             + (
                 [
-                    ConcreteInstr("LOAD_CONST", 1),
+                    ConcreteInstr("LOAD_COMMON_CONSTANT", CommonConstant.CONSTANT_NONE)
+                    if PY315
+                    else ConcreteInstr("LOAD_CONST", 1),
                     ConcreteInstr("RETURN_VALUE"),
                 ]
                 if PY314
@@ -466,7 +482,9 @@ class ConcreteBytecodeTests(TestCase):
             ]
             + (
                 [
-                    ConcreteInstr("LOAD_CONST", 1),
+                    ConcreteInstr("LOAD_COMMON_CONSTANT", CommonConstant.CONSTANT_NONE)
+                    if PY315
+                    else ConcreteInstr("LOAD_CONST", 1),
                     ConcreteInstr("RETURN_VALUE"),
                 ]
                 if PY314
@@ -824,6 +842,32 @@ class ConcreteFromCodeTests(TestCase):
 
         # without EXTENDED_ARG
         concrete = ConcreteBytecode.from_code(code_obj)
+        if PY315:
+            ann_code = concrete.consts[0]
+            func_code = concrete.consts[1]
+            expected_py315 = [
+                ConcreteInstr("RESUME", 0, lineno=0),
+                ConcreteInstr("CACHE", 0, lineno=0),
+                ConcreteInstr("LOAD_CONST", 0, lineno=1),
+                ConcreteInstr("MAKE_FUNCTION", lineno=1),
+                ConcreteInstr("LOAD_CONST", 1, lineno=1),
+                ConcreteInstr("MAKE_FUNCTION", lineno=1),
+                ConcreteInstr("SET_FUNCTION_ATTRIBUTE", 16, lineno=1),
+                ConcreteInstr("STORE_NAME", 0, lineno=1),
+                ConcreteInstr("LOAD_COMMON_CONSTANT", 7, lineno=1),
+                ConcreteInstr("RETURN_VALUE", lineno=1),
+            ]
+            expected_consts = [ann_code, func_code]
+            self.assertSequenceEqual(concrete.names, ["foo"])
+            self.assertSequenceEqual(concrete.consts, expected_consts)
+            self.assertInstructionListEqual(list(concrete), expected_py315)
+            concrete = ConcreteBytecode.from_code(code_obj, extended_arg=True)
+            ann_code = concrete.consts[0]
+            func_code = concrete.consts[1]
+            self.assertEqual(concrete.names, ["foo"])
+            self.assertEqual(concrete.consts, expected_consts)
+            self.assertInstructionListEqual(list(concrete), expected_py315)
+            return
         if PY314:
             ann_code = concrete.consts[0]
             func_code = concrete.consts[1]
Index: python-bytecode/tests/test_misc.py
===================================================================
--- python-bytecode.orig/tests/test_misc.py
+++ python-bytecode/tests/test_misc.py
@@ -8,7 +8,7 @@ import unittest
 import bytecode
 from bytecode import BasicBlock, Bytecode, ControlFlowGraph, Instr, Label
 from bytecode.concrete import OFFSET_AS_INSTRUCTION
-from bytecode.utils import PY311, PY312, PY313, PY314
+from bytecode.utils import PY311, PY312, PY313, PY314, PY315
 
 from . import disassemble
 
@@ -529,7 +529,33 @@ label_instr13:
         code = code.to_concrete_bytecode()
 
         # without line numbers
-        if PY314:
+        if PY315:
+            # RESUME gained a CACHE entry in 3.15, shifting all offsets by 2
+            expected = """
+  0    RESUME 0
+  2    CACHE 0
+  4    LOAD_FAST_BORROW 0
+  6    LOAD_SMALL_INT 1
+  8    COMPARE_OP 88
+ 10    CACHE 0
+ 12    POP_JUMP_IF_FALSE 3
+ 14    CACHE 0
+ 16    NOT_TAKEN
+ 18    LOAD_SMALL_INT 1
+ 20    RETURN_VALUE
+ 22    LOAD_FAST_BORROW 0
+ 24    LOAD_SMALL_INT 2
+ 26    COMPARE_OP 88
+ 28    CACHE 0
+ 30    POP_JUMP_IF_FALSE 3
+ 32    CACHE 0
+ 34    NOT_TAKEN
+ 36    LOAD_SMALL_INT 2
+ 38    RETURN_VALUE
+ 40    LOAD_SMALL_INT 3
+ 42    RETURN_VALUE
+"""
+        elif PY314:
             # COMPARE_OP use the 4 lowest bits as a cache
             expected = """
   0    RESUME 0
@@ -635,7 +661,32 @@ label_instr13:
         self.check_dump_bytecode(code, expected.lstrip("\n"))
 
         # with line numbers
-        if PY314:
+        if PY315:
+            expected = """
+L.  1   0: RESUME 0
+        2: CACHE 0
+L.  2   4: LOAD_FAST_BORROW 0
+        6: LOAD_SMALL_INT 1
+        8: COMPARE_OP 88
+       10: CACHE 0
+       12: POP_JUMP_IF_FALSE 3
+       14: CACHE 0
+       16: NOT_TAKEN
+L.  3  18: LOAD_SMALL_INT 1
+       20: RETURN_VALUE
+L.  4  22: LOAD_FAST_BORROW 0
+       24: LOAD_SMALL_INT 2
+       26: COMPARE_OP 88
+       28: CACHE 0
+       30: POP_JUMP_IF_FALSE 3
+       32: CACHE 0
+       34: NOT_TAKEN
+L.  5  36: LOAD_SMALL_INT 2
+       38: RETURN_VALUE
+L.  6  40: LOAD_SMALL_INT 3
+       42: RETURN_VALUE
+"""
+        elif PY314:
             expected = """
 L.  1   0: RESUME 0
 L.  2   2: LOAD_FAST_BORROW 0

--- End Message ---
--- Begin Message ---
Source: python-bytecode
Source-Version: 0.19.1-1
Done: Colin Watson <[email protected]>

We believe that the bug you reported is fixed in the latest version of
python-bytecode, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Colin Watson <[email protected]> (supplier of updated python-bytecode package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Sat, 24 Oct 2026 21:06:47 +0100
Source: python-bytecode
Architecture: source
Version: 0.19.1-1
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <[email protected]>
Changed-By: Colin Watson <[email protected]>
Closes: 1147116
Changes:
 python-bytecode (0.19.1-1) unstable; urgency=medium
 .
   * Team upload.
   * New upstream release:
     - Add support for Python 3.15 (closes: #1147116).
   * Drop "Rules-Requires-Root: no", default as of dpkg-dev 1.22.13.
   * Drop "Priority: optional", default as of dpkg-dev 1.22.13.
   * Standards-Version: 4.7.4.
Checksums-Sha1:
 7ae3f3b9d8e152bc1b1382a9f12f5a30d2b03fbe 3014 python-bytecode_0.19.1-1.dsc
 f493be1c05c2d02d80b348fc280f9b9d52596730 102024 
python-bytecode_0.19.1.orig.tar.gz
 d54ab8806fd7ce4dd186e1360359cf66a1c2d91b 9672 
python-bytecode_0.19.1-1.debian.tar.xz
 1f8ca06065b83ca134bd2c8d7b6f882377c83d3c 245172 
python-bytecode_0.19.1-1.git.tar.xz
 b529510a8d1f13b315fe76433a65956a79db8e13 17768 
python-bytecode_0.19.1-1_source.buildinfo
Checksums-Sha256:
 3c391ab5fea3c3a7895e2d85834f42ba73c125a464fba4c9b13560f90687232a 3014 
python-bytecode_0.19.1-1.dsc
 3e3af79e64b53ae1ccea75c30dc61b91d4d88fc393fab699e6bd4dc747964e48 102024 
python-bytecode_0.19.1.orig.tar.gz
 3fec366c9671fabfbecda6a8982dc6ddd3d6a8a5cc7cb80c9ca2220b7f246bcd 9672 
python-bytecode_0.19.1-1.debian.tar.xz
 eb38ded0265d0d8e48ac5f2877e89435b1a52d3c28cfa7ac560015f9d34f037a 245172 
python-bytecode_0.19.1-1.git.tar.xz
 eea98a39ed9d90ca6f3222352055edc7f1d0da9f0521eaa004aaa03c087d833c 17768 
python-bytecode_0.19.1-1_source.buildinfo
Files:
 36703dbc9cb74eae45428dbe6aed7941 3014 python optional 
python-bytecode_0.19.1-1.dsc
 84693b4083c26e04f90850b9f4dd6283 102024 python optional 
python-bytecode_0.19.1.orig.tar.gz
 f343e85c0f5123f2d21b7c9c66f73efa 9672 python optional 
python-bytecode_0.19.1-1.debian.tar.xz
 02dcbb5dea88c1d39edfa948b6a7b3fe 245172 python None 
python-bytecode_0.19.1-1.git.tar.xz
 44102ef9393aadafaf1655e3ea045839 17768 python optional 
python-bytecode_0.19.1-1_source.buildinfo
Git-Tag-Info: tag=55c680a5abd2bb11bad6789f34ffcb1b51ce7532 
fp=ac0a4ff12611b6fccf01c111393587d97d86500b
Git-Tag-Tagger: Colin Watson <[email protected]>

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEN02M5NuW6cvUwJcqYG0ITkaDwHkFAmrdEDUACgkQYG0ITkaD
wHn5jBAAoHPQ4YzLhXhT/bS1VP6fINHkKSSyj8uHUt0MNxgfwn1CP1urGgiqCrrl
aVaLmSyOqljJlcExlbQYnLW/z27MSRkufLlMZSNYJVbd/3NTlhU4YsDJBEeMrpFf
BCLd+T018Nnr43oSKApKqigAIyqZBQeIx7x37kUlkHRDusa1IwcKo8OvPCzfJ372
2L2sHnWnh27yX9VASUI4SFFDU+GR5QhYvV6xvqwHPP2JPWGtKB2NumhAcR4pFJoi
xqBO+Yh+B1mmZCM5aF1CNU3NM1hg1PaRLynQ9V1f2bdVtDoYgLYrE8YB5njASKg0
sUuSmJhy+SyshYjg6/+HyFnV806b4VZeGzyXGgFbZG7zy/mqzII6Eq/0Dp+ZsxnM
MKBS6j0oLHAFlsPCZude5F2F1yescrOBVlQRc/KUzBi/1qpI161hi2Cey9lrUyLL
C1TjLW9kVt640bxZilxAd+UKVx7u8AMTTl7fJpluUtOlsX3SwD4kuWFwdQfOWVNd
/QoJsE31JyxUkKY/hzv98UhUrGLI3O9vMWRJ7xz3qv1Tq9JExGVYAU8dLCD0kL+i
Nhl5RmVvCWs/+CpjKmzDqHErU+vRIAOLHZhLHfrWS1dpaOOppviYXYh+IWjRag7R
fPU082CA+NrozUEA7MaPRas2CQMbVTf6jrTCbtmTZrt0UnkVE1M=
=TnhR
-----END PGP SIGNATURE-----

Attachment: pgpi7WgJD5oHF.pgp
Description: PGP signature


--- End Message ---

Reply via email to